Comment modéliseriez-vous un système qui gère les autorisations pour effectuer certaines actions à l'intérieur d'une application?
Les modèles de sécurité sont un domaine de recherche vaste (et ouvert). Il existe une vaste gamme de modèles disponibles, allant du simple:
matrice de contrôle d'accès de Lampson répertorie chaque objet de domaine et chaque principal du système avec les actions que le principal est autorisé à effectuer sur cet objet. Il est très détaillé et s'il est effectivement mis en œuvre de cette manière, il consomme beaucoup de mémoire.
Listes de contrôle d'accès sont une simplification de la matrice de Lampson: considérez-la comme quelque chose qui ressemble à une implémentation à matrice clairsemée qui répertorie les objets et les principaux et les actions autorisées, et ne code pas toutes les entrées "nulles" de Matrice de Lampson. Les listes de contrôle d'accès peuvent inclure des "groupes" pour plus de commodité, et les listes peuvent être stockées via un objet ou via un principal (parfois, via un programme, comme dans AppArmor ou TOMOYO ou COUVERCLES ).
Systèmes de capacité sont basés sur l'idée d'avoir une référence ou un pointeur sur des objets; un processus a accès à un ensemble initial de capacités et ne peut obtenir plus de capacités qu'en les recevant d'autres objets du système. Cela semble assez éloigné, mais pensez aux descripteurs de fichiers Unix: ils sont une référence infaillible à un fichier ouvert spécifique, et le descripteur de fichier peut être transmis à d'autres processus ou non. Si vous donnez le descripteur à un autre processus, il aura accès à ce fichier. Des systèmes d'exploitation entiers ont été écrits autour de cette idée. (Les plus célèbres sont probablement KeyKOS et EROS, mais je suis sûr que c'est un point discutable. :)
... aux plus complexes, qui ont des étiquettes de sécurité attribuées aux objets et aux principaux:
Anneaux de sécurité , tels qu'implémentés dans les processeurs Multics et x86, entre autres, et fournissent des pièges ou des portes de sécurité pour permettre aux processus de faire la transition entre les anneaux; chaque anneau a un ensemble différent de privilèges et d'objets.
Lattice de Denning est un modèle dont les principaux sont autorisés à interagir avec quelles étiquettes de sécurité de manière très hiérarchique.
Bell-LaPadula est similaire au réseau de Denning, et fournit des règles pour empêcher la fuite de données top secrètes à des niveaux non classifiés et des extensions communes fournissent une compartimentation et une catégorisation supplémentaires pour mieux fournir un soutien de type militaire `` besoin de savoir ''.
Le modèle Biba est similaire à Bell-LaPadula, mais 'tourné sur la tête' - Bell-LaPadula se concentre sur la confidentialité, mais ne fait rien pour l'intégrité, et Biba se concentre sur l'intégrité, mais ne fait rien pour la confidentialité. (Bell-LaPadula empêche quelqu'un de lire la liste de tous les espions, mais autoriserait volontiers quiconque à y écrire quoi que ce soit. Biba permettrait à quiconque de lire la liste de tous les espions, mais interdirait à presque tout le monde d'y écrire.)
Type Enforcement (et son frère, Domain Type Enforcement) fournit des étiquettes sur les principaux et les objets, et spécifie les tables objet-verbe-sujet (classe) autorisées. Il s'agit des SELinux et SMACK familiers.
.. et puis il y en a qui intègrent le passage du temps:
Mur chinois a été développé en entreprise pour séparer les employés au sein d'une organisation qui fournit des services aux concurrents sur un marché donné: par exemple, une fois que Johnson a commencé à travailler sur le compte Exxon-Mobil, il n'est pas autorisé à accéder à le compte BP. Si Johnson avait commencé à travailler sur BP en premier, il se verrait refuser l'accès aux données d'Exxon-Mobil.
LOMAC et high-watermark sont deux approches dynamiques: LOMAC modifie les privilèges des processus lorsqu'ils accèdent à des niveaux de données progressivement plus élevés, et interdit l'écriture à des niveaux inférieurs (les processus migrent vers la "sécurité maximale"), et un filigrane élevé modifie les étiquettes des données à mesure que les niveaux supérieurs des processus y accèdent (les données migrent vers la "sécurité maximale").
Clark-Wilson les modèles sont très ouverts; ils incluent des invariants et des règles pour garantir que chaque transition d'état ne viole pas les invariants. (Cela peut être aussi simple que comptabilité à double entrée ou aussi complexe que HIPPA .) Pensez aux transactions et aux contraintes de la base de données.
"La sécurité informatique: art et science" de Matt Bishop vaut vraiment la peine d'être lu si vous souhaitez approfondir les modèles publiés.
Je préfère RBAC . Bien que vous puissiez le trouver très similaire à ACL , mais ils diffèrent sémantiquement .