Contrôle d’accès basé sur les rôles (Role-based access control)
Contrôle d’accès basé sur les rôles (RBAC) est une méthode d’attribution des permissions (Permissions) aux utilisateurs en fonction de leurs rôles (Roles). Envisagez d’utiliser le RBAC dans les scénarios suivants :
- Vous avez plusieurs utilisateurs avec des besoins d’accès différents : Le RBAC est idéal lorsque les utilisateurs ont besoin de permissions variées selon leur rôle, comme administrateur, éditeur ou lecteur.
- Vous souhaitez simplifier la gestion des permissions : Il est efficace pour gérer de grands groupes d’utilisateurs en attribuant des rôles plutôt qu’en définissant les permissions individuellement.
- Votre application dessert différents départements ou équipes : Il est utile lorsque différents groupes nécessitent des niveaux d’accès distincts aux ressources.
Comprendre le fonctionnement du contrôle d’accès basé sur les rôles
Permissions (Portées)
Une permission (Permission) fait référence à l’autorisation d’accéder à une ressource API. Dans le monde réel, des entités telles que les commandes, les produits et les documents peuvent être désignées comme ressources, et diverses actions peuvent leur être attribuées.
Exemples de permissions (Permissions), incluant la possibilité de modifier une commande, lire un document ou supprimer un produit :
write:orders
read:documents
delete:products

La figure ci-dessus montre que la permission (Permission) read:item
dans la ressource (API resource) https://api-1.store.io
est différente de la permission (Permission) read:item
dans la ressource (API resource) https://api-2.store.io
.
Si aucune ressource API n’est fournie, la permission (Permission) sera considérée comme "pour OIDC". Habituellement, ce n’est pas ce que vous souhaitez dans le RBAC.
Découvrez comment configurer les permissions API dans Logto.
Rôles (Roles)
Les rôles (Roles) sont un regroupement de permissions (Permissions) qui peuvent être attribués aux utilisateurs. Ils offrent également un moyen d’agréger les permissions définies pour différentes API, rendant l’ajout, la suppression ou l’ajustement des permissions plus efficace que de les attribuer individuellement aux utilisateurs.
Voici un exemple de rôle (Role) order_admin
avec plusieurs permissions (Permissions) pour deux ressources :

Il est possible d’avoir un chevauchement de permissions (Permissions) entre les rôles (Roles).
Découvrez comment configurer les rôles dans Logto.
Exemple : Une librairie en ligne
Supposons que vous ayez une librairie en ligne à gérer. Ici, nous simplifions grandement le modèle de contrôle d’accès à des fins de démonstration.
Le modèle est divisé en deux grandes ressources API : commandes et produits. Elles ont des indicateurs de ressource différents comme ci-dessous :
- Commandes :
https://api.store.io/orders
- Produits :
https://api.store.io/products
Pour chaque ressource, vous souhaitez séparer les permissions (Permissions) en lecture, écriture et suppression. Vous définissez donc six permissions au total :
https://api.store.io/orders
- Permission (Permission)
read:order
- Permission (Permission)
write:order
- Permission (Permission)
delete:order
- Permission (Permission)
https://api.store.io/products
- Permission (Permission)
read:product
- Permission (Permission)
write:product
- Permission (Permission)
delete:product
- Permission (Permission)
Voici l’illustration de ce modèle :

Vous souhaitez avoir deux types d’administrateurs, admin des commandes et admin des produits :
- Admin des commandes peut gérer les commandes et voir les produits (car les commandes sont composées de produits), mais ne peut pas gérer les produits.
- Admin des produits peut gérer les produits, et ne doit pas avoir connaissance des commandes.
Vous créez donc deux rôles (Roles), order_admin
et product_admin
, avec les permissions (Permissions) suivantes :
order_admin
https://api.store.io/orders
read:order
,write:order
,delete:order
https://api.store.io/products
read:product
product_admin
https://api.store.io/products
read:product
,write:product
,delete:product
Voici l’illustration de ces deux rôles (Roles) :

Il est possible d’attribuer à la fois order_admin
et product_admin
à un utilisateur, il disposera alors des six permissions (Permissions) que vous venez de définir.
Notez que l’admin des commandes partage la permission (Permission) read:product
avec l’admin des produits, et les permissions (Permissions) finales qu’un utilisateur détient sont l’union de toutes les permissions issues des rôles (Roles) qui lui ont été attribués.
Ressources associées
RBAC en pratique : Guide étape par étape pour mettre en œuvre une autorisation sécurisée dans votre application
Maîtriser le RBAC dans Logto : Un exemple complet et concret
CIAM 102 : Autorisation & Contrôle d’accès basé sur les rôles (RBAC)