CREATE ROLE 'manager';
GRANT SELECT, INSERT ON database.* TO 'manager';
GRANT 'manager' TO 'alice';RBAC, ou contrôle d’accès basé sur les rôles, est un modèle de gestion des autorisations …
RBAC simplifie la gestion : au lieu d’attribuer des permissions à chaque utilisateur, on les attribue à des rôles — puis on assigne les rôles. |
dans lequel l’accès aux ressources est déterminé par les rôles assignés aux utilisateurs.
Ce modèle est largement utilisé dans les systèmes informatiques et les applications pour gérer efficacement les permissions, réduire les erreurs humaines et améliorer la sécurité.
Un rôle est une collection d’autorisations ou de privilèges.
Administrateur, Utilisateur, Modérateur, Analyste.
Les permissions sont des droits spécifiques accordés pour effectuer une action sur une ressource.
Lire, Écrire, Supprimer, Modifier.
Les utilisateurs sont des entités (personnes ou systèmes) auxquelles des rôles sont assignés.
Alice est un "Administrateur",
Bob est un "Utilisateur".
Les objets auxquels les utilisateurs peuvent accéder.
Fichiers, bases de données, API, systèmes.
Chaque rôle est associé à une ou plusieurs permissions.
Les utilisateurs se voient attribuer des rôles en fonction de leur fonction ou position.
Les permissions sont directement associées aux rôles.
Les utilisateurs obtiennent des permissions via leurs rôles.
Implémente des relations hiérarchiques entre les rôles.
Un rôle "Manager" hérite des permissions du rôle "Employé".
Permet de définir des restrictions supplémentaires, comme la séparation des responsabilités (SoD - Segregation of Duties).
Un utilisateur ne peut pas être à la fois "Auditeur" et "Finance Manager".
Les autorisations sont gérées au niveau des rôles, et non des utilisateurs individuels.
Moins de risques d’accorder accidentellement des permissions excessives.
Facilite la mise en conformité avec des réglementations comme GDPR, HIPAA, ou PCI-DSS. === Évolutivité :
Pratique pour les grandes organisations avec des milliers d’utilisateurs et de ressources.
Réduit l’exposition aux attaques grâce à un contrôle précis des permissions.
Listez toutes les ressources nécessitant un contrôle d’accès (fichiers, services, API, etc.).
Identifiez les rôles nécessaires à l’organisation.
Administrateur, Utilisateur, Responsable, Analyste.
Déterminez quelles actions chaque rôle peut effectuer sur les ressources.
Un rôle "Utilisateur" peut lire des fichiers, mais ne peut pas les supprimer.
Attribuez des rôles en fonction des responsabilités de chaque utilisateur.
Mettez à jour les rôles, permissions et assignations en fonction des évolutions organisationnelles.
Rôles assignés pour gérer les accès aux tables et colonnes.
CREATE ROLE 'manager';
GRANT SELECT, INSERT ON database.* TO 'manager';
GRANT 'manager' TO 'alice';Utilisation des groupes d’utilisateurs pour gérer les permissions.
useradd alice
groupadd managers
usermod -aG managers aliceLes rôles IAM (Identity and Access Management) gèrent les permissions sur les services AWS.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::example-bucket/*"
}
]
}Middleware pour gérer les permissions basées sur les rôles.
Solution d’identité et d’accès avec gestion des rôles.
RBAC intégré pour contrôler l’accès aux ressources du cluster.
Accordez uniquement les permissions nécessaires à un rôle pour accomplir ses tâches.
Assignez les permissions aux rôles, et non directement aux utilisateurs.
Vérifiez régulièrement les rôles et permissions pour détecter les anomalies.
Créez des rôles granulaires qui peuvent être combinés pour des cas d’utilisation spécifiques.
Révoquez les rôles des utilisateurs qui quittent l’organisation ou changent de poste.
Gérer les accès aux applications métiers en fonction des fonctions des employés.
Contrôler les accès aux ressources numériques des étudiants et professeurs.
Restreindre l’accès aux données des patients aux rôles autorisés (médecins, infirmiers).
Gérer les permissions pour les ressources cloud (AWS, Azure, GCP).
Le RLS (Row-Level Security) étend le principe RBAC au niveau des lignes d’une table de base de données.
RBAC contrôle quelles tables/colonnes un utilisateur peut voir. RLS va plus loin : il filtre les lignes visibles selon l’identité ou le rôle de l’utilisateur. |
Chaque utilisateur ne voit que les lignes qui le concernent
Le filtrage est appliqué automatiquement par le moteur SQL
Transparent pour les applications — les requêtes restent les mêmes
Multi-tenant SaaS — chaque client ne voit que ses propres données
Données médicales — médecins voient leurs patients uniquement
RH — managers voient leur équipe, employés se voient eux-mêmes
Finance — chaque commercial voit ses propres ventes
RGPD — accès strictement minimal aux données personnelles
RLS = mise en œuvre pratique du moindre privilège au niveau données. |
-- Activer RLS sur une table
ALTER TABLE commandes ENABLE ROW LEVEL SECURITY;
-- Politique : un commercial voit ses propres commandes
CREATE POLICY mes_commandes ON commandes
FOR SELECT
USING (commercial_id = current_user_id());CREATE FUNCTION dbo.fn_securitypredicate(@CommercialId int)
RETURNS TABLE WITH SCHEMABINDING
AS RETURN SELECT 1 AS result
WHERE @CommercialId = USER_ID();
CREATE SECURITY POLICY CommandesFilter
ADD FILTER PREDICATE dbo.fn_securitypredicate(commercial_id)
ON dbo.commandes;Oracle : VPD (Virtual Private Database) — équivalent RLS
MySQL : pas de RLS natif, simulé via vues + current_user()
Sécurité au plus près de la donnée (defense in depth)
Indépendant de la couche applicative (un bug applicatif ne contourne pas RLS)
Audit simplifié : la politique est centralisée
Transparent pour l’application
|
Tester avec différents profils utilisateurs
Auditer régulièrement les politiques
Combiner avec RBAC applicatif
Defense in depth : RLS + chiffrement + audit
Documenter les politiques pour les futurs DBA
RBAC est la mise en œuvre concrète du moindre privilège — incontournable pour toute organisation moderne. |
Voir aussi : Moindre privilège · ACL · Active Directory · Sécuriser ses accès |