Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| conception:acl [2009/04/29 18:04] – samray1024 | conception:acl [2024/10/03 07:26] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Concevoir un système de gestion de droits ====== | ||
| + | |||
| + | Ce document propose l' | ||
| + | |||
| + | Les exemples et cas pratiques utilisés dans ce document sont rapportés à l' | ||
| + | |||
| + | //Je n'ai rien inventé dans tout ce qui va suivre et je m' | ||
| + | |||
| + | FIXME Document non définif et qui peut subir de profonds changements à tout moment ! | ||
| + | |||
| + | ===== Concepts ===== | ||
| + | |||
| + | Trois entités (deux au minimum) entrent en jeu pour réaliser un système de droits : | ||
| + | |||
| + | - Un utilisateur ou un groupe d' | ||
| + | - Un rôle | ||
| + | - Une ressource (non obligatoire) | ||
| + | |||
| + | ==== Groupe d' | ||
| + | |||
| + | Tout droit est toujours au final appliqué à un utilisateur que ce soit pour un droit spécifiquement appliqué à ce dernier ou pour un droit appliqué à l'un des groupes auquel l' | ||
| + | |||
| + | Pour simplifier le fonctionnement du système, il est préférable de ne prendre en considération que les groupes utilisateurs. Cela allège les ressources gérées dans la définition du droit et les traitements nécessaires au fonctionnement du système. L' | ||
| + | |||
| + | Dernier avantage, le fait de ne prendre en considération que les groupes utilisateurs dans le système de gestion de droit permet de rendre ce dernier aisément modulable et rattachable à une base utilisateurs existante. | ||
| + | |||
| + | ==== Rôle ==== | ||
| + | |||
| + | Deuxième élément de base entrant dans la constitution d'un droit, le rôle représente une action fournie par l' | ||
| + | |||
| + | Dans l'ACL, le rôle est un simple libellé dont le contenu est totalement libre et dont la seule contrainte est que deux rôles ne peuvent avoir le même nom. | ||
| + | |||
| + | Exemple de nommage de rôle pour les différentes actions de base d'un CMS : | ||
| + | |||
| + | cms.page.create | ||
| + | cms.page.update | ||
| + | cms.page.delete | ||
| + | cms.configuration.update | ||
| + | blog.article.create | ||
| + | ... | ||
| + | |||
| + | où la 1ère composante d'un rôle représenterait un module de l' | ||
| + | |||
| + | ==== Ressource ==== | ||
| + | |||
| + | Dernier élément non obligatoire mais nécessaire pour que la gestion des droits soit malléable et complète, la ressource représente les données volatiles créées et gérées par les utilisateurs de l' | ||
| + | |||
| + | ==== Droit ==== | ||
| + | |||
| + | Le droit est donc l' | ||
| + | |||
| + | Un droit = un rôle + un groupe d' | ||
| + | OU | ||
| + | Un droit = un rôle + un groupe d' | ||
| + | |||
| + | |||
| + | ===== Règles ===== | ||
| + | |||
| + | Maintenant que nous avons les entités de base de notre système, étudions les règles de base qui lient tout ce petit monde : | ||
| + | |||
| + | - Un utilisateur fait partie d'au moins un groupe d' | ||
| + | - Ce groupe d' | ||
| + | - Un groupe d' | ||
| + | - Un groupe d' | ||
| + | - Un groupe d' | ||
| + | - Un groupe d' | ||
| + | - Les groupes utilisateurs sont pondérés de sorte qu'un groupe d'une pondération plus faible qu'un autre est alors reconnu comme étant de niveau supérieur. Toutes les autorisations concédées à un groupe d'un certain niveau sont valables sur les groupes de plus faible niveau. | ||
| + | - Un rôle peut être associé à autant de groupes que nécessaires. | ||
| + | - Un utilisateur possède toujours tous les droits sur les ressources pour lesquelles il est propriétaire (il n'est donc pas nécessaire de créer des entrées dans l'ACL pour ses ressources). | ||
| + | - Toute ressource appartenant à un autre utilisateur est accessible par un autre utilisateur si : | ||
| + | - L' | ||
| + | - L' | ||
| + | - L' | ||
| + | |||
| + | ==== Héritage des groupes d' | ||