Ceci est une question discutable car je ne suis plus sur ce projet, mais il continue à me déranger. Je me demande si quelqu'un a une meilleure idée de référence future et de bonnes pratiques générales de programmation.Sécurité sans rôle?
L'approche de la sécurité des manuels est la «sécurité basée sur les rôles». Chaque écran, rapport ou autre tâche est associé à un ou plusieurs rôles; chaque utilisateur est assigné à un ou plusieurs rôles; et alors chaque utilisateur peut exercer les écrans, etc. qui correspondent à ses rôles et rien d'autre. Droite?
Il y a quelques années, j'ai dirigé une équipe de développement d'un système de gestion de manuels techniques militaires. Chaque manuel avait un «gestionnaire de contenu technique», la personne responsable de la rédaction ou de l'édition; un «gestionnaire de stock», chargé de garder la trace des copies et de les faire expédier; et un «gestionnaire administratif», responsable du budget et qui a donc décidé à quelle fréquence le livre serait révisé, combien de copies seraient imprimées, et ainsi de suite. Bien sûr, chaque livre avait un groupe de personnes qui commanderaient des copies et le liraient. (Comme c'était l'armée, vous deviez être autorisé à mettre la main sur un livre, les autorisations de sécurité et tout le reste.) Nous ne nous préoccupions pas des lecteurs, mais plutôt des gens de chaque base qui géraient les bibliothèques. , mais ce n'est pas vraiment pertinent ici. Alors ... ce sont des "rôles" évidents, mais un rôle était lié à un livre en particulier. Une personne pourrait être le gestionnaire de contenu technique du livre A, le gestionnaire administratif du livre B et un lecteur de 50 autres livres. Nous ne pouvions donc pas vraiment dire qu'un utilisateur avait "un rôle". Chaque utilisateur avait des rôles différents pour chaque livre.
En plus de cela, il privilèges au niveau du système de routine étaient plus: Nous avons eu quelques administrateurs système autorisé à mettre à jour quoi que ce soit dans le systeem, les gens du centre d'assistance qui pourrait voir presque toutes les données, mais pas mise à jour, etc.
J'ai fini par créer une base de données comme celle-ci. (Pour éviter d'entrer dans une partie de notre terminologie étrange que je vais changer quelques noms de champs et de tables ici, l'idée est la même.)
Personne (person_id, nom, etc.)
Technical_Manual (manual_id, titre, admin_manager_person_id, stock_manager_person_id, content_manager_person_id, etc.)
Authorized_Reader (manual_id, person_id, etc.)
utilisateur (user_id, admin_role, etc.)
je n'étais pas vraiment satisfait de ce régime, car cela signifiait que la sécurité était répartie sur trois tables: la table technical_manual, la table authorized_reader et la table user. Mais ... y avait-il une façon plus propre de le faire? De meilleures idées?
C'est probablement la forme la plus simple pour ce type de sécurité. Il est facile à suivre et permet à une personne d'avoir différents rôles pour différents livres ou plusieurs rôles pour le même livre. – David
Hmm, cela a du potentiel. Je n'ai pas de place pour mon commentaire en commentaire, voir ci-dessous comme un nouveau post. – Jay