Le Contrôle d'accès Énumère le ACL


  Share  
|


Une variante évidente de la matrice de contrôle d'accès doit stocker chaque colonne avec l'objet qu'elle représente. Ainsi, chaque objet a associé à lui un ensemble de paires, avec chaque paire contenant un sujet et un ensemble de droites. Le sujet appelé peut accéder à l'objet associé en utilisant n'importe laquelle de ces droites. Plus formellement :

Laissez S être l'ensemble de sujets, et R l'ensemble de droites, d'un système. Un Access Control List (ACL) l est un ensemble de paires l = {(s, r) : s inclus dans S, r inclus dans R}. Laissez le ACL être une fonction qui détermine le Access Control List l lié à un objet particulier o. L'interprétation de l'acl(o) de Access Control List = {(silicium, ri) : 1 < = I < = n} est que le silicium soumis peut accéder à o en utilisant juste dans le ri.

Une issue est la matière de la permission de défaut. Si un sujet n'est pas appelé dans le ACL, il n'a aucun droit au-dessus de l'objet associé. Sur un système avec beaucoup de sujets, le ACL peut être très grand. Si beaucoup de sujets ont le même droit au-dessus du dossier, on pourrait définir un "wildcard" pour assortir tous les sujets anonymes, et leur donne des droits de défaut.

EXEMPLE : UNICOS 7.0 ACLs ont des entrées de la forme (utilisateur, groupe, droites). Si l'utilisateur est dans le groupe appelé, lui ou elle a ces droits au-dessus de l'objet. Par exemple, le triplet (le houx, le maceranch, r) donne l'accès lu par houx d'utilisateur (r) au-dessus de l'objet seulement quand le houx a le maceranch en tant que son groupe.

Si l'utilisateur ou le groupe est indiqué comme "*", ce caractère est pris pour assortir tous les utilisateurs ou tous les groupes. Ainsi, (houx, *, r) donne le houx a lu la permission au-dessus de l'objet indépendamment du groupe qu'elle est dedans ; (*, le maceranch, r) donne n'importe quelle permission lue par utilisateur au-dessus de l'objet quand cet utilisateur est dans le maceranch de groupe.


Abréviations des listes de contrôle d'accès

Quelques systèmes abrègent des listes de contrôle d'accès. La base pour le contrôle d'accès de dossier dans le logiciel d'exploitation d'UNIX est de cette variété. Les systèmes d'UNIX divisent l'ensemble d'utilisateurs en trois classes : le propriétaire du dossier, le propriétaire de groupe du dossier, et tous autres utilisateurs. Chaque classe a un ensemble séparé de droites.

EXEMPLE : Les systèmes d'UNIX fournissent lisent (r), écrivent (w), et exécutent (x) des droites. Quand l'évêque d'utilisateur crée un dossier, supposez qu'il est dans le vulner de groupe. Au commencement, l'évêque demande qu'il puisse lire de et écrire au dossier, que des membres du groupe soient permis de lire à partir du dossier, et que personne d'autre ont accès au dossier. Alors les permissions seraient rw pour le propriétaire, le r pour le groupe, et aucun pour autre.

Des permissions d'UNIX sont représentées en tant que trois triplets. Le premier est les droits de propriétaire ; la seconde, droits de groupe ; et le tiers, d'autres droites. Dans chaque triplet, la première position est r si on permet l'accès lu ou s'il n'est pas ; la deuxième position est W si écrivez l'accès est laissé ou s'il n'est pas ; et la troisième position est x si exécutez l'accès est laissé ou s'il n'est pas. Les permissions pour le dossier de l'évêque seraient rwr.

Une question intéressante est comment les systèmes d'UNIX assignent la propriété de groupe. Traditionnellement, les systèmes d'UNIX assignent le qualificateur de fichier principal efficace du processus créant. Mais dans certains cas ce n'est pas approprié. Par exemple, supposez travaux de programme d'imprimante ligne par ligne en employant des permissions de groupe ; dites que son groupe est lpdaemon. Puis, quand un utilisateur copie un dossier dans l'annuaire de bobine, le lpdaemon doit posséder le dossier de bobine. La manière la plus simple d'imposer cette condition est faire le groupe d'annuaire de bobine possédé par le lpdaemon et de faire hériter la propriété de groupe par tous les dossiers créés dans cet annuaire. Certains systemsnotably, systemsaugment de Solaris et de SunOS que la sémantique des modes de protection de dossier en plaçant le setgid a mordu sur l'annuaire quand tous les dossiers créés dans l'annuaire doivent hériter de la propriété de groupe de l'annuaire contenant.


Les abréviations des listes de contrôle d'accès, comme ceux soutenus par le logiciel d'exploitation d'UNIX, souffrent d'une perte de granularity. Supposez que un système d'UNIX a cinq utilisateurs. Anne veut permettre à Beth de lire son dossier, Caroline pour lui écrire, Della à lui lire et écrire, et Elizabeth pour l'exécuter. Puisqu'il y a seulement trois ensembles de permissions et cinq ont désiré des arrangements des droites (Alice y compris), trois triplets sont insuffisants pour permettre tous les modes désirés de l'accès. Par conséquent, Alice doit compromettre, et donnez à quelqu'un plus de droits qu'elle désire ou donne à quelqu'un peu de droits. De même, le contrôle d'accès traditionnel d'UNIX ne permet pas à on d'indiquer "tout le monde mais l'utilisateur Fran" ; pour faire ceci, on doit créer des groupes de tous les utilisateurs excepté Fran. Un tel arrangement est encombrant, à plus forte raison parce que seulement un interface gestionnaire peut créer des groupes.

Beaucoup de systèmes augmentent des abréviations d'ACLs avec véritable ACLs. Cet arrangement emploie les abréviations d'ACLs comme commandes de permission de défaut ; le ACL explicite dépasse les défauts comme nécessaires. La méthode exacte change.

EXEMPLE : La version d'IBM du logiciel d'exploitation d'UNIX, appelée AIX, emploie un ACL (appelé "a prolongé des permissions") pour augmenter les abréviations traditionnelles d'UNIX du ACL (appelé "les permissions basses"). À la différence d'ACLs traditionnel, l'AIX ACL permet à on d'indiquer des permissions d'être ajouté ou supprimé de l'ensemble de l'utilisateur. Comme UNICOS, AIX base des allumettes sur l'identité de groupe et d'utilisateur. L'algorithme spécifique (employer la terminologie d'AIX, dans laquelle "les permissions basses" sont les abréviations d'UNIX d'ACLs et "de permissions prolongées" sont les entrées unabbreviated de ACL) est comme suit.

  1. Déterminez ce qui a placé S des permissions que l'utilisateur a des permissions basses.

  2. Si les permissions prolongées sont handicapées, arrêtez. L'ensemble S est l'ensemble de l'utilisateur de permissions.

  3. Obtenez la prochaine entrée dans les permissions prolongées. S'il n'y a pas plus, arrêtez. L'ensemble S est l'ensemble de l'utilisateur de permissions.

  4. Si l'entrée a le mêmes utilisateur et groupe que le processus demandant l'accès, déterminez si l'entrée nie l'accès. Si oui, arrêtez. L'accès est nié.

  5. Modifiez S comme dicté par les permissions dans l'entrée.

  6. Allez à 3.

Comme exemple spécifique, considérez la représentation suivante des permissions de contrôle d'accès d'un système d'AIX pour le dossier xyzzy.

     
attributs : owner(bishop) bas        de 
permissions :    group(sys)        de rw- :       r --        d'autres :           --- les 
permissions prolongées permises        indiquent           la laiss      du rw-        u:holly            - W      u:heidi, le rw-        u:matt            de laiss      de g=sys        niez              - W      u:holly, g=faculty

Dans les lignes prolongées de permissions, le premier champ détermine ce que signifie la ligne ("indiquez" pour dépasser les permissions basses, "laiss" d'ajouter des droites, et "niez" vers des droites d'effacement) ; le deuxième champ énonce les droites impliquées, à l'aide du triplet traditionnel d'UNIX ; et le troisième champ définit l'utilisateur ("u :") et groupe ("g :") impliqué.

Dans cet exemple, le houx peut lire xyzzy parce que les premières et quatrièmes lignes dans la section prolongée de permissions dépassent le démenti bas de permission de l'accès à d'autres (dont la classe houx est un membre). Si le houx travaille dans le groupe de corps enseignant, elle ne peut pas écrire à xyzzy (la dernière ligne) mais peut la lire (première ligne). Le heidi d'utilisateur, fonctionnant dans le système de groupe, peut lire et écrire au dossier (la ligne de groupe dans les permissions basses donne la permission lue par heidi ; la première ligne de laiss dans les permissions prolongées que la section donne la sa écrivent la permission). De cette façon, les permissions prolongées augmentent les permissions basses.

Création et entretien des listes de contrôle d'accès

Les réalisations spécifiques d'ACLs diffèrent dans les détails. Certaines des issues sont comme suit.

  1. Quels sujets peuvent modifier le ACL d'un objet ?

  2. S'il y a un utilisateur privilégié (tel que la racine dans le système d'UNIX ou l'administrateur dans Windows NT), les ACLs s'appliquent-ils à cet utilisateur ?

  3. les groupes de soutien de ACL ou les wildcards (c'est-à-dire, les utilisateurs peuvent-ils être groupés en jeux basés sur une notion de système de "groupe" ou sur l'assortiment de modèle) ?

  4. Comment est-ce que des permissions contradictoires de contrôle d'accès sont manipulées ? Si les concessions d'une entrée lisent des privilèges seulement et est-ce que autres concessions écrivent les privilèges seulement, que droit le sujet a au-dessus de l'objet ?

  5. Si on permet un arrangement de défaut, les permissions de ACL le modifient-elles, ou le défaut est-il employé seulement quand le sujet n'est pas explicitement mentionné dans le ACL ?

Puisque ces isues sont critiques à l'utilisation correcte d'ACLs sur un système, nous les explorerons en plus détail.

Quels sujets peuvent modifier le ACL d'un objet ?

Quand un ACL est créé, les droites sont instantiated. Le chef parmi ces droites est celui que nous appellerons pour posséder. Les propriétaires du posséder bien peuvent modifier le ACL.

Créer un objet crée également son ACL, avec une certaine valeur initiale (probablement vide, mais plus habituellement le créateur est au commencement donné tous les droits, y compris le propre, au-dessus du nouvel objet). Par convention, on permet au le sujet avec propres droites de modifier le ACL. Cependant, quelques systèmes permettent à n'importe qui avec l'accès de manoeuvrer les droites.

EXEMPLE : Le système R de base de données relationnelle contient des ensembles de n-tuples faisant vers le haut des disques, et chaque élément de chaque n-tuple a des attributs. Ces n-tuples sont stockés comme tables, avec les disques comme rangées et les attributs comme colonnes. Chaque table définit une relation.

Les droites pour manoeuvrer une table (relation) incluent lu (pour des rangées de lecture, questionnant en utilisant la relation, ou définissant des vues), mettent à jour (pour écrire à une table), s'insèrent (pour ajouter des rangées), suppriment (pour supprimer des rangées), et baisse (pour supprimer des tables). Chacun droit a un modificateur, appelé l'option de concession, qui si l'ensemble permet au propriétaire de donner le droit à l'autre. N'importe quel utilisateur avec l'accès à une table peut donner des droits à n'importe quel autre utilisateur, si la droite a l'option de concession. Par conséquent, possession de l'accès (et une option de concession liée à chacun droite), pas propriété, commandes le transfert des droites.


Les ACLs s'appliquent-ils à un utilisateur privilégié ?

Beaucoup de systèmes ont des utilisateurs avec des privilèges supplémentaires. Les deux mieux connus sont le super-utilisateur de racine sur les systèmes d'UNIX et l'utilisateur d'administrateur sur Windows NT et 2000 systèmes. Typiquement, ACLs (ou leurs formes dégénérées) sont appliqués d'une mode limitée à de tels utilisateurs.

EXEMPLE : Les systèmes de Solaris UNIX emploient les abréviations de la norme d'ACLs aux systèmes d'UNIX et un véritable ACL. Les abréviations d'ACLs sont ignorées quand la racine est le sujet, mais les pleins ACLs s'appliquent même à la racine.


les groupes de soutien de ACL et les wildcards ?

Dans sa forme, ACLs classiques pas les groupes de soutien ou les wildcards. Dans la pratique, les systèmes soutiennent un ou l'autre (ou tous les deux) pour limiter la taille du ACL et pour faciliter la manipulation des listes. Un groupe peut raffiner les caractéristiques des processus pour permettre l'accès ou être un synonyme pour un ensemble d'utilisateurs (les membres du groupe).

EXEMPLE : Dans l'exemple d'AIX ci-dessus, rappelez-vous que les lignes prolongées de permission (correspondant entièrement ACL) étaient

permissions prolongées permises
indiquez le rw- u:holly
laiss - W u:heidi, g=sys
rw- u:matt de laiss
niez - W u:holly, g=faculty

Au commencement, le système de groupe avait lu la permission seulement sur le dossier. La deuxième ligne s'ajoute écrivent la permission pour des processus avec le heidi d'UID et le système de GID. La première ligne donne des processus avec le houx d'UID lu et écrit l'accès, à moins que quand le GID du processus est corps enseignant, dans ce cas le processus ne peut pas écrire à l'objet (voyez la quatrième ligne).


EXEMPLE : Le logiciel d'exploitation d'UNICOS fournit ACLs semblable à ceux d'AIX, mais permet des wildcards. Par exemple,

houx : maceranch : r  
signifie qu'un processus avec le houx d'UID et le maceranch de GID peut lire l'objet auquel le ACL est associé. L'entrée de ACL
houx : * : r  
signifie qu'un processus avec le houx d'UID peut accéder à l'objet indépendamment du groupe que le processus est dedans. Et l'entrée
* : maceranch : r  
signifie que n'importe quel processus avec le maceranch de GID peut lire l'objet.

Conflits

Un conflit surgit quand deux entrées de Access Control List dans le même ACL donnent différentes permissions au sujet. Le système peut permettre l'accès si n'importe quelle entrée donnerait l'accès, nient l'accès si n'importe quelle entrée nierait l'accès, ou appliquent la première entrée qui assortit le sujet.

EXEMPLE : Si n'importe quelle entrée dans un AIX ACL nie l'accès, le sujet est nié l'accès indépendamment de l'endroit de cette entrée. Autrement, si n'importe quelle entrée a accordé l'accès, on accorde le sujet l'accès. C'est un exemple de démenti ayant la priorité.


EXEMPLE : Les couteaux de Cisco appliquent la première entrée de Access Control List qui assortit le paquet entrant. Si aucun ne s'applique, le paquet entrant est jeté. C'est un exemple de la deuxième approche, avec une règle de défaut de nient.


ACLs et permissions de défaut

Quand ACLs et abréviations des listes de contrôle d'accès ou des droits d'accès de défaut coexistent (comme sur beaucoup de systèmes d'UNIX), il y a deux manières de déterminer des droits d'accès. Le premier doit appliquer l'entrée appropriée de ACL, si on existe, et appliquer les permissions de défaut ou les abréviations des listes de contrôle d'accès autrement. La deuxième manière est d'augmenter les permissions de défaut ou les abréviations des listes de contrôle d'accès avec ceux dans l'entrée appropriée de ACL.

EXEMPLE : L'AIX a prolongé des permissions entre dans la deuxième catégorie, parce qu'elles modifient les permissions basses.


EXEMPLE : Si un paquet entrant dans un couteau de Cisco est destiné à un centre serveur sur un réseau derrière le couteau, mais le couteau n'a aucune entrée de liste d'accès qui permet au paquet d'être expédié, le paquet est jeté. C'est un exemple de la première méthode, parce que la permission de défaut est nient.

Révocation des droites

La révocation, ou la prévention d'un sujet accédant à un objet, exige que les droites du sujet soient supprimées du ACL de l'objet.

Empêcher un sujet d'accéder à un objet est simple. L'entrée pour le sujet est supprimée du ACL de l'objet. Si seulement des droites spécifiques doivent être supprimées, elles sont enlevées de l'entrée du sujet approprié dans le ACL.

Si la propriété ne commande pas donner des droites, la révocation est plus complexe.

EXEMPLE : Le retour au système R. Suppose Anna a donné des droits de mise à jour de Peter au-dessus d'une relation T mais souhaite maintenant les retirer. Le système R soutient qu'après le retrait, l'état de protection du système devrait être comme il était avant qu'Anna ait donné à Peter tous les droits. Spécifiquement, si Peter donne à Mary des droits de mise à jour, quand Anna retire les droites de la mise à jour de Peter, les droites de la mise à jour de Mary est retiré à moins que quelqu'un autre que Peter lui ait également donné des droits de mise à jour.

Pour mettre en application ceci, le système R définit une relation appelée Sysauth. Les attributs de cette relation sont (utilisateur, Tableau, donateur, lu, insertion, effacement, baisse, mise à jour). Les valeurs des attributs correspondant vers les droites sont des horodateurs indiquant quand la droite a été donnée (excepté la mise à jour, que nous traiterons plus tard). Par exemple, si Anna donnait Peter a lu des droites au-dessus des rapports de relation au temps 10, et Peter les a donnés à Mary au temps 20, la table serait comme suit.

Utilisateur Tableau Donateur Lu

Peter

Rapports

Anna

10

Mary

Rapports

Peter

20


Si Anna retire les droites lues de Peter, et Mary l'obtenait lisait des droites de Peter après qu'Anna les ait données à Peter, elle a lu des droites serait également retirée. Cependant, supposez que Michelle avait également donné des droits lus par Mary au-dessus des rapports. Supprimer alors la dernière rangée dans la table laisse une entrée pour Marynamely, celle de Michelle :

Utilisateur Tableau Donateur Lu

Peter

Rapports

Anna

10

Mary

Rapports

Michelle

5


Ainsi Mary peut des rapports lus immobiles.

La droite de mise à jour a une valeur de tous, de certains, ou d'absents. Ces valeurs se rapportent à l'ensemble de rangées qui peuvent être changées. Si la valeur en est, Syscolauth appelé la deuxième par relation enregistre les colonnes que le sujet peut mettre à jour. Cette table enregistre également des périodes, et la révocation procède quant aux autres colonnes.

Exemple : Listes De Contrôle d'accès De Windows NT

Windows NT fournit des listes de contrôle d'accès pour ces dossiers sur des cloisons de NTFS. Windows NT permet à un utilisateur ou à un groupe de lire, écrire, s'exécuter, supprimer, de changer les permissions de, ou de prendre la propriété d'un dossier ou d'un annuaire. Ces droites sont groupées en jeux généralement assignés appelés les droites génériques. Les droites génériques pour des dossiers sont comme suit.

  • aucun accès, par lequel le sujet ne puisse pas accéder au dossier

  • lu, par lequel le sujet puisse lire ou exécuter le dossier

  • changez, par lequel le sujet puisse lire, exécuter, écrire, ou supprimer le dossier

  • pleine commande, par lequel le sujet ait tous les droits au dossier

En outre, le bon accès spécial générique permet l'attribution de n'importe laquelle de ces six permissions.

Les annuaires de Windows NT ont également leur propre notion des droites génériques.

  • aucun accès, par lequel le sujet ne puisse pas accéder à l'annuaire

  • lu, par lequel le sujet puisse lire ou exécuter des dossiers dans l'annuaire

  • énumérez, par lequel le sujet puisse énumérer le contenu de l'annuaire et puisse changer en un sous-répertoire dans cet annuaire

  • ajoutez, par lequel le sujet puisse créer des dossiers ou des sous-répertoires dans l'annuaire

  • ajoutez et lisez, qui combine les droites génériques s'ajoute et a lu

  • changez, par lequel le sujet puisse créer, lu, exécuter, ou écrire des dossiers dans l'annuaire et pouvez supprimer des sous-répertoires

  • pleine commande, par lequel le sujet ait tous les droits au-dessus des dossiers et sous-répertoires dans l'annuaire

Comme avant, le droit d'accès spécial générique permet l'attribution d'autres combinaisons des permissions.

Quand les accès d'utilisateur un dossier, Windows NT examine d'abord le ACL du dossier. Si l'utilisateur n'est pas présent dans le ACL, et n'est pas un membre de tout groupe énuméré dans le ACL, l'accès est nié. Autrement, si n'importe quelle entrée de ACL nie l'accès d'utilisateur, Windows NT nie l'accès (c'est un démenti explicite, qui est calculé d'abord). Si l'accès n'est pas explicitement nié, et l'utilisateur est appelé dans le ACL (en tant qu'un utilisateur ou membre d'un groupe), l'utilisateur a l'union de l'ensemble de droites de chaque entrée de ACL dans laquelle l'utilisateur est appelé.

Comme exemple, supposez que Paul, Quentin, et Regina sont des utilisateurs d'un système de Windows NT. Paul et Quentin sont dans les étudiants de groupe. Quentin et Regina sont dans le personnel de groupe. L'annuaire e:\stuff a son Access Control List réglé à (le personnel, ajoutent), (Quentin, changement), (des étudiants, aucun accès). Sous cette liste, la première entrée permet à Regina de créer des sous-répertoires ou des dossiers dans e:\stuff. La troisième entrée rejette tous les membres des étudiants de groupe d'accéder à l'annuaire. La deuxième entrée permettrait à Quentin de supprimer des sous-répertoires, sauf que Quentin est dans le groupe d'étudiants, et dans Windows NT que un explicite nie (comme donné dans la troisième entrée) dépasse toutes les concessions de la permission. Par conséquent, Quentin ne peut pas accéder à l'annuaire.

Maintenant, laissez Regina créer un plugh de sous-répertoire dans e:\stuff. Elle rejette alors l'accès de Paul, mais veut permettre à Quentin d'avoir accès de changement. Elle fait le suivant.

  • Créez e:\stuff \ plugh ; son ACL est (le personnel, ajoutent), (Quentin, changement), (des étudiants, aucun accès).

  • Supprimez la dernière entrée dans le ACL ; de la deuxième entrée, ceci donne l'accès de changement de Quentin.

  • Ajoutez l'entrée (Paul, aucun accès) au ACL.

La dernière étape est superflue, parce que Windows NT nie l'accès par défaut, mais il est plus sûr de l'ajouter de toute façon, de peur que les étudiants de groupe soient donnés des droits. Si cela se produit, Paul obtiendrait droites à moins que (Paul, aucun accès) l'entrée aient été présente.

c'est un article supplémentaire par Fred Foster


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions