Le Contrôle d'accès Énumère le ACL
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.
-
Déterminez ce qui a placé S des permissions que
l'utilisateur a des permissions basses.
-
Si les permissions prolongées sont handicapées,
arrêtez. L'ensemble S est l'ensemble de l'utilisateur de
permissions.
-
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.
-
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é.
-
Modifiez S comme dicté par les permissions dans
l'entrée.
-
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.
-
Quels sujets peuvent modifier le ACL d'un objet ?
-
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 ?
-
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) ?
-
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 ?
-
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
|