|
| 1 | +--- |
| 2 | +title: Contrôle d'accès basé sur les attributs (Atrribute-based access control, ABAC) |
| 3 | +tags: [authorization] |
| 4 | +description: Le contrôle d'accès basé sur les attributs (ABAC) est un modèle de contrôle d'accès qui utilise des attributs (tels que les rôles d'utilisateur, les propriétés des ressources et les conditions environnementales) pour prendre des décisions de contrôle d'accès. C'est une manière flexible et dynamique de gérer l'accès aux ressources protégées. |
| 5 | +--- |
| 6 | + |
| 7 | +## Qu'est-ce que le contrôle d'accès basé sur les attributs (ABAC) ? |
| 8 | + |
| 9 | +ABAC est un modèle de <Ref slug="access-control" /> qui utilise des attributs pour prendre des décisions de contrôle d'accès. Ces attributs peuvent inclure divers facteurs, tels que : |
| 10 | + |
| 11 | +- Attributs utilisateur : par exemple, rôles, département, localisation, etc. |
| 12 | +- Attributs de ressource : par exemple, niveau de sensibilité, propriétaire, type, etc. |
| 13 | +- Attributs environnementaux : par exemple, heure d'accès, localisation, appareil, etc. |
| 14 | + |
| 15 | +En évaluant ces attributs et en les passant à travers un ensemble de règles, l'ABAC peut déterminer si un sujet (par exemple, utilisateur, service) doit se voir accorder l'accès à une ressource. Cette approche permet un contrôle d'accès fin et une application dynamique des politiques en fonction du contexte. |
| 16 | + |
| 17 | +## Comment fonctionne l'ABAC ? |
| 18 | + |
| 19 | +L'ABAC utilise une approche basée sur des politiques pour le contrôle d'accès. Une politique ABAC typique se compose de : |
| 20 | + |
| 21 | +- **Sujet** : L'entité demandant l'accès (par exemple, utilisateur, service, appareil). |
| 22 | +- **Action** : L'opération effectuée sur la ressource (par exemple, lire, écrire, supprimer). |
| 23 | +- **Ressource** : L'entité à laquelle on accède (par exemple, fichier, base de données, API). |
| 24 | +- **Environnement** : Le contexte dans lequel l'accès est demandé (par exemple, heure, localisation, appareil). |
| 25 | +- **Attributs** : Les propriétés du sujet, de la ressource et de l'environnement qui sont évaluées pour prendre des décisions d'accès. |
| 26 | +- **Politiques** : Un ensemble de règles qui définissent les conditions sous lesquelles l'accès est accordé ou refusé. |
| 27 | + |
| 28 | +Les politiques ABAC sont plus complexes que les modèles traditionnels de contrôle d'accès comme le <Ref slug="rbac" />. En revanche, l'ABAC offre plus de flexibilité et de granularité dans les décisions de contrôle d'accès. |
| 29 | + |
| 30 | +### Exemple de politiques ABAC |
| 31 | + |
| 32 | +Par exemple, un système a plusieurs politiques ABAC : |
| 33 | + |
| 34 | +1. **Politique 1** : Autoriser l'accès si : |
| 35 | + |
| 36 | + - (Sujet) Le rôle du sujet est `manager`. |
| 37 | + - (Attribut) Le niveau de sensibilité de la ressource est `high`. |
| 38 | + - (Environnement) La localisation est `internal`. |
| 39 | + - (Action) Toute action. |
| 40 | + - (Environnement) L'heure est entre 9h et 17h (heures de bureau). |
| 41 | + |
| 42 | +2. **Politique 2** : Refuser l'accès si : |
| 43 | + |
| 44 | + - (Sujet) Le rôle du sujet n'est pas `manager`. |
| 45 | + - (Attribut) Le niveau de sensibilité de la ressource est `high`. |
| 46 | + - (Environnement) Toute localisation. |
| 47 | + - (Action) Toute action. |
| 48 | + - (Environnement) Toute heure. |
| 49 | + |
| 50 | +3. **Politique 3** : Autoriser l'accès si : |
| 51 | + |
| 52 | + - (Sujet) Le rôle du sujet est `employee` ou `manager`. |
| 53 | + - (Attribut) Le niveau de sensibilité de la ressource est `low`. |
| 54 | + - (Environnement) Toute localisation. |
| 55 | + - (Action) Action `read`. |
| 56 | + - (Environnement) Toute heure. |
| 57 | + |
| 58 | +Le moteur d'évaluation des politiques vérifiera ces politiques dans l'ordre, et la première politique qui correspondra aux conditions déterminera la décision d'accès. Pendant ce temps, une politique par défaut de refus est appliquée si aucune autre politique ne correspond. |
| 59 | + |
| 60 | +Passons en revue quelques scénarios pour comprendre comment fonctionne l'ABAC : |
| 61 | + |
| 62 | +> **Scénario 1**. Un utilisateur souhaite accéder (effectuer l'action `read`) à un document (ressource) de niveau de sensibilité élevé en dehors du bureau (environnement). Le rôle de l'utilisateur est `manager` enregistré dans le système. |
| 63 | + |
| 64 | +**Décision** : L'accès est refusé car l'utilisateur est en dehors du bureau (la localisation n'est pas `internal`). |
| 65 | + |
| 66 | +> **Scénario 2**. Un utilisateur souhaite accéder (effectuer l'action `read`) à un document (ressource) de niveau de sensibilité élevé pendant les heures de bureau (environnement) dans le réseau bureautique (localisation=`internal`). Le rôle de l'utilisateur est `manager`. |
| 67 | +
|
| 68 | +**Décision** : L'accès est accordé car toutes les conditions de la Politique 1 sont remplies. |
| 69 | + |
| 70 | +> **Scénario 3**. Toutes les conditions du scénario 2 sont les mêmes, mais le rôle de l'utilisateur est `employee` au lieu de `manager`. |
| 71 | +
|
| 72 | +**Décision** : L'accès est refusé car le rôle de l'utilisateur ne correspond pas aux conditions de la Politique 1. |
| 73 | + |
| 74 | +> **Scénario 4**. Un utilisateur souhaite accéder (effectuer l'action `read`) à un document (ressource) de niveau de sensibilité faible. Le rôle de l'utilisateur est `employee`. |
| 75 | +
|
| 76 | +**Décision** : L'accès est accordé car toutes les conditions de la Politique 3 sont remplies. |
| 77 | + |
| 78 | +> **Scénario 5**. Un utilisateur souhaite supprimer (effectuer l'action `delete`) un document (ressource) de niveau de sensibilité faible. Le rôle de l'utilisateur est `employee`. |
| 79 | +
|
| 80 | +**Décision** : L'accès est refusé car il n'existe aucune politique qui autorise l'action `delete` sur les documents de niveau de sensibilité faible. |
| 81 | + |
| 82 | +Vous remarquerez que tous les attributs ne sont pas nécessaires dans chaque politique. Cette flexibilité permet un mécanisme de contrôle d'accès plus dynamique et sensible au contexte. |
| 83 | + |
| 84 | +## Considérations d'implémentation |
| 85 | + |
| 86 | +Bien que l'ABAC offre une manière puissante de gérer le contrôle d'accès, il comporte également certaines considérations d'implémentation : |
| 87 | + |
| 88 | +- Complexité du système : Les politiques ABAC peuvent devenir complexes à mesure que le nombre d'attributs et de règles augmente. Une gestion et un test appropriés des politiques prennent plus de temps que les modèles de contrôle d'accès simples. |
| 89 | +- Performance : L'évaluation de politiques ABAC complexes peut avoir un impact sur la performance du système. Les techniques de mise en cache et d'optimisation peuvent aider à atténuer ce problème. |
| 90 | +- Conflits de politique : Les politiques conflictuelles peuvent entraîner des décisions d'accès imprévisibles. Un examen régulier des politiques et la résolution des conflits devraient faire partie du processus de gestion des politiques. |
| 91 | + |
| 92 | +## ABAC vs. RBAC |
| 93 | + |
| 94 | +Comparer l'ABAC avec le <Ref slug="rbac" /> peut vous aider à comprendre les différences entre les deux modèles : |
| 95 | + |
| 96 | +| | RBAC | ABAC | |
| 97 | +|-----------------------|------------------------------------|------------------------------------------| |
| 98 | +| Politique de contrôle d'accès | Basée sur des rôles | Basée sur des attributs | |
| 99 | +| Granularité | Grossière | Fine-grained | |
| 100 | +| Flexibilité | Limitée | Très flexible | |
| 101 | +| Complexité | Plus simple | Plus complexe | |
| 102 | +| Impact sur la performance | Minimal | Peut être significatif | |
| 103 | +| Gestion des accès | Gestion des rôles | Gestion des politiques | |
| 104 | +| Idéal pour | Structures de permission bien définies | Contrôle d'accès dynamique et sensible au contexte | |
| 105 | + |
| 106 | +<SeeAlso slugs={["access-control", "rbac", "authorization"]} /> |
| 107 | + |
| 108 | +<Resources |
| 109 | + urls={[ |
| 110 | + "https://blog.logto.io/rbac-and-abac", |
| 111 | + "https://csrc.nist.gov/publications/detail/sp/800-162/final", |
| 112 | + ]} |
| 113 | +/> |
0 commit comments