Aller au contenu principal

Contrôle d’accès basé sur les rôles

Le contrôle d’accès basé sur les rôles (RBAC) est une méthode d'attribution de permissions aux utilisateurs en fonction de leurs rôles. 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 basées sur des rôles, tels qu'admin, éditeur ou spectateur.
  • Vous devez 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 des permissions individuellement.
  • Votre application dessert différents départements ou équipes : Il est utile dans les scénarios où différents groupes nécessitent des niveaux d'accès distincts aux ressources.

Comprendre comment fonctionne le contrôle d’accès basé sur les rôles

Permissions (Portées)

La 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 être attribuées.

Exemples de permissions, y compris la capacité d'éditer une commande, de lire un document et de supprimer un produit, sont les suivants :

  • write:orders
  • read:documents
  • delete:products
Permissions

La figure ci-dessus montre que la permission read:item dans la ressource https://api-1.store.io est différente de la permission read:item dans la ressource https://api-2.store.io.

Si aucune ressource API n'est fournie, la permission sera traitée comme "pour OIDC". Habituellement, ce n'est pas ce que vous voulez dans le RBAC.

Apprenez comment configurer les permissions API dans Logto.

Rôles

Les rôles sont un regroupement de permissions qui peuvent être attribuées aux utilisateurs. Ils fournissent é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 order_admin avec plusieurs permissions pour deux ressources :

Rôle d'admin des commandes

Il est acceptable d'avoir un chevauchement de permissions entre les rôles.

Apprenez comment configurer les rôles dans Logto.

Exemple : Une librairie en ligne

Disons que vous avez 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. Ils ont différents indicateurs de ressource comme ci-dessous :

  • Commandes : https://api.store.io/orders
  • Produits : https://api.store.io/products

Pour chaque ressource, vous souhaitez séparer les permissions en lecture, écriture et suppression. Vous définissez donc six permissions au total :

  • https://api.store.io/orders
    • Permission read:order
    • Permission write:order
    • Permission delete:order
  • https://api.store.io/products
    • Permission read:product
    • Permission write:product
    • Permission delete:product

Voici l'illustration de ce modèle :

API et Permissions de la librairie

Vous souhaitez avoir deux types d'admin, admin des commandes et admin des produits :

  • Admin des commandes peut gérer les commandes et voir les produits (car les commandes se composent de produits), mais ne peut pas gérer les produits.
  • Admin des produits peut gérer les produits, et ils ne devraient pas être au courant de toutes les commandes.

Vous créez donc deux rôles, order_admin et product_admin, avec les permissions :

  • 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 :

Rôles de la librairie

Il est acceptable d'attribuer à la fois order_admin et product_admin à un utilisateur, alors ils auront toutes les six permissions que vous venez de définir.

Notez que l'admin des commandes partage la permission read:product avec l'admin des produits, et les permissions finales qu'un utilisateur détient sont l'union de toutes les permissions des rôles qui lui ont été attribués.

Ressources connexes

Maîtriser le RBAC dans Logto : Un exemple complet du monde réel

CIAM 102 : Autorisation & Contrôle d’accès basé sur les rôles