Le RBAC (Role-Based Access Control) est un modèle de contrôle d'accès qui attribue des permissions aux utilisateurs en fonction de rôles prédéfinis plutôt que de manière individuelle. C'est le mécanisme d'autorisation le plus répandu dans les applications d'entreprise.
Le modèle RBAC repose sur trois concepts fondamentaux :
| Concept | Description | Exemple |
|---|---|---|
| Utilisateur | Personne ou service authentifié | alice@company.com |
| Rôle | Ensemble nommé de permissions | admin, editor, viewer |
| Permission | Droit d'effectuer une action sur une ressource | articles:write, users:delete |
Exemple d'implémentation en Python :
RBACRoles = {
"admin": ["read", "write", "delete", "manage_users"],
"editor": ["read", "write"],
"viewer": ["read"],
}
def check_permission(user_role: str, action: str) -> bool:
permissions = RBAC_ROLES.get(user_role, [])
return action in permissions
# Usage
if check_permission(current_user.role, "delete"):
delete_article(article_id)
else:
raise PermissionError("Accès refusé")
Le RBAC peut être étendu avec des hiérarchies de rôles (un admin hérite des permissions d'un editor) et des contraintes (séparation des devoirs, rôles mutuellement exclusifs).
Des modèles plus fins existent : ABAC (basé sur des attributs), ReBAC (basé sur les relations), et PBAC (basé sur des politiques).
À retenir
Le RBAC protège l'autorisation, mais il suppose une authentification fiable en amont. Si les comptes à privilèges utilisent des mots de passe faibles, tout le modèle s'effondre. Protégez vos accès critiques avec des identifiants générés aléatoirement.
Termes connexes : authentification, IAM, Zero Trust, ABAC, principe du moindre privilège.
