78 votes

Modélisation d'un système de permissions

Comment modéliser un système qui gère les autorisations pour l'exécution de certaines actions dans une application ?

152voto

sarnold Points 62720

Les modèles de sécurité constituent un vaste (et ouvert) champ de recherche. Il existe un large éventail de modèles disponibles, allant du plus simple au plus complexe :

  • Matrice de contrôle d'accès de Lampson liste chaque objet du domaine et chaque principal du système avec les actions que ce principal est autorisé à effectuer sur cet objet. C'est très verbeux et, s'il est implémenté de cette manière, très gourmand en mémoire.

  • Listes de contrôle d'accès sont une simplification de la matrice de Lampson : considérez-les comme quelque chose d'apparenté à une implémentation de matrice éparse qui liste les objets, les principaux et les actions autorisées, et ne code pas toutes les entrées "nulles" de la matrice de Lampson. Les listes de contrôle d'accès peuvent inclure des "groupes" par commodité, et les listes peuvent être stockées par objet ou par principal (parfois, par programme, comme dans AppArmor o TOMOYO o LIDS ).

  • Systèmes de capacité sont basés sur l'idée d'avoir une référence ou un pointeur vers 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 peut sembler assez farfelu, mais pensez aux descripteurs de fichiers Unix : ils constituent une référence infalsifiable à un fichier ouvert spécifique, et le descripteur de fichier peut être transmis ou non à d'autres processus. Si vous donnez le descripteur à un autre processus, celui-ci 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). discutable :)

... jusqu'aux plus complexes, qui ont des étiquettes de sécurité attribuées aux objets et aux principaux :

  • Anneaux de sécurité Les anneaux de sécurité, tels que ceux mis en œuvre dans les processeurs Multics et x86, entre autres, fournissent des pièges ou des portes de sécurité pour permettre aux processus de passer d'un anneau à l'autre.

  • Le treillis de Denning est un modèle permettant de déterminer quels mandants sont autorisés à interagir avec quelles étiquettes de sécurité, de manière très hiérarchique.

  • Bell-LaPadula est similaire au treillis de Denning, et fournit des règles pour empêcher la fuite de données top secrètes vers des niveaux non classifiés. Des extensions communes permettent une compartimentation et une catégorisation plus poussées afin de mieux fournir un support de type militaire "besoin de savoir".

  • Le site Modèle Biba est similaire à Bell-LaPadula, mais "inversé" : Bell-LaPadula est axé sur la confidentialité, mais ne fait rien pour l'intégrité, et Biba est axé 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 permettrait volontiers à quiconque d'y écrire quoi que ce soit. Biba permettrait volontiers à quiconque de lire The List Of All Spies, mais interdirait à presque tout le monde d'y écrire).

  • Application de type (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. C'est ce que l'on appelle SELinux et SMACK.

et puis il y en a qui incorporent le passage du temps :

  • Muraille de Chine a été développé dans le milieu des affaires pour séparer les employés d'une organisation qui fournit des services à des 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 au compte BP. Si Johnson avait commencé à travailler sur le compte BP en premier, l'accès aux données d'Exxon-Mobil lui serait refusé.

  • LOMAC y filigrane sont deux approches dynamiques : LOMAC modifie les privilèges des processus lorsqu'ils accèdent à des niveaux de données de plus en plus élevés, et interdit l'écriture aux niveaux inférieurs (les processus migrent vers la "sécurité supérieure"), et high-watermark modifie les étiquettes des données lorsque des processus de niveaux supérieurs y accèdent (les données migrent vers la "sécurité supérieure").

  • Clark-Wilson Les modèles sont très ouverts ; ils comprennent 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é en partie double ou aussi complexe que HIPPA .) Pensez aux transactions et aux contraintes des bases de données.

L'ouvrage de Matt Bishop intitulé "Computer security : art and science" vaut vraiment la peine d'être lu si vous souhaitez approfondir les modèles publiés.

9voto

Sergiy Points 1552

Je préfère RBAC . Bien que, vous pouvez le trouver très similaire à ACL mais ils diffèrent sémantiquement .

1voto

murali Points 122

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X