Groupes et rôles
Dans le monde de l'informatique, les concepts de Groupe
et de Rôle
sont souvent flous et interchangeables.
Dans Keycloak, les Groupes ne sont qu'un ensemble d'utilisateurs auxquels vous pouvez attribuer des rôles et des attributs en un seul endroit.
Les Rôles, quant à eux, définissent un type d'utilisateur, et les applications leur assignent des permissions et un contrôle d'accès.
Les Rôles Composites ne sont-ils pas similaires aux Groupes ? Logiquement, ils offrent exactement la même fonctionnalité, mais la différence est conceptuelle.
Les rôles composites
doivent être utilisés pour appliquer le modèle de permissions à votre ensemble de services et d'applications.
Les groupes
, en revanche, doivent être centrés sur la gestion des collections d'utilisateurs et de leurs rôles au sein de votre organisation.
Il faut donc utilisez les groupes
pour gérer les utilisateurs.
et utilisez les rôles composites
pour gérer les applications et les services.
Dans le Keycloak d'Open ENT, les groupes sont stockés dans les noeuds Neo4j ProfileGroup
.
Et les rôles sont stockés dans les noeuds Function
.
Hiérarchie des groupes
Les groupes sont hiérarchiques. Un groupe peut avoir plusieurs sous-groupes, mais un groupe ne peut avoir qu'un seul parent. Les sous-groupes héritent les attributs et les mappages de rôles de leur parent. Les utilisateurs héritent également des attributs et des mappages de rôles de leur parent.
Liste des différents rôles
Voici les différents rôles d'Open ENT gérés dans Neo4j dans un noeud Function
Voici la liste des rôles sous forme d'un tableau Markdown, en incluant les informations pertinentes telles que le nom du rôle, son externalId
(s'il est présent), et son type (clientRole
ou non) :
| Nom du Rôle | External ID / Name | Client Role | Lié au royaume ID | Lié à un client |
|---------------------------|-----------------------|-------------|-------------------|-------------------------|
| SuperAdmin | SUPER_ADMIN | Non | - | - |
| AdminLocal | ADMIN_LOCAL | Non | - | - |
| ClassAdmin | CLASS_ADMIN | Non | - | - |
| default-roles-openent | default-roles-openent | Non | Oui | - |
| offline_access | offline_access | Non | Oui | - |
| uma_authorization | uma_authorization | Non | Oui | - |
| manage-account | - | Oui | Oui | Client account |
| view-groups | - | Oui | Oui | Client account |
| delete-account | - | Oui | Oui | Client account |
| realm-admin | - | Oui | Oui | Client realm-management |
| create-client | - | Oui | Oui | Client realm-management |
| view-realm | - | Oui | Oui | Client realm-management |
| view-users | - | Oui | Oui | Client realm-management |
| view-clients | - | Oui | Oui | Client realm-management |
| view-events | - | Oui | Oui | Client realm-management |
| view-identity-providers | - | Oui | Oui | Client realm-management |
| view-authorization | - | Oui | Oui | Client realm-management |
| manage-realm | - | Oui | Oui | Client realm-management |
| manage-users | - | Oui | Oui | Client realm-management |
| manage-clients | - | Oui | Oui | Client realm-management |
| manage-events | - | Oui | Oui | Client realm-management |
| manage-identity-providers | - | Oui | Oui | Client realm-management |
| manage-authorization | - | Oui | Oui | Client realm-management |
| query-users | - | Oui | Oui | Client realm-management |
| query-clients | - | Oui | Oui | Client realm-management |
| query-realms | - | Oui | Oui | Client realm-management |
| query-groups | - | Oui | Oui | Client realm-management |
| impersonation | - | Oui | Oui | Client realm-management |
Légende
- Nom du Rôle : Le nom du rôle tel qu'il apparaît dans les données.
- External ID / Name : La valeur de la propriété
externalId
si elle existe, sinon-
. - Client Role : Indique si le rôle est spécifique à un client (
Oui
) ou global (Non
). - Realm ID : Identifiant du domaine (realm) associé au rôle.
- Client ID : Identifiant du client associé au rôle (si applicable).
Signification des différents rôles
Voici une explication des différents rôles issus de Open ENT v3 et Keycloak. Ces rôles sont utilisés pour gérer les autorisations et les droits dans le domaine (realm) openent
spécifique :
Rôles Globaux (clientRole: false
)
Ce sont des rôles qui s'appliquent à tout le domaine (realm). Ils ne sont pas liés à un client spécifique.
-
default-roles-openent
- Signification : Ce rôle est automatiquement attribué à tous les nouveaux utilisateurs du domaine "openent". Il représente les droits par défaut accordés aux utilisateurs lorsqu'ils rejoignent ce domaine.
- Usage : Gestion des permissions de base pour tous les utilisateurs.
-
offline_access
- Signification : Permet à un utilisateur de conserver un accès hors ligne (par exemple, via des jetons de rafraîchissement).
- Usage : Autorise l'utilisateur à rester connecté même lorsqu'il n'a pas de connexion active au serveur.
-
uma_authorization
- Signification : Ce rôle est lié à la gestion des autorisations basées sur User-Managed Access (UMA), un protocole permettant aux utilisateurs de contrôler l'accès à leurs ressources.
- Usage : Utilisé pour gérer les autorisations fines sur des ressources spécifiques.
-
AdminLocal
- Signification : Rôle administratif local à un établissement.
- Usage : Administration locale sans portée globale.
-
SuperAdmin
- Signification : Rôle super-administrateur avec des droits étendus sur tout le système.
- Usage : Gestion complète du domaine, y compris la configuration et les autres utilisateurs.
-
ClassAdmin
- Signification : Administrateur d'une classe ou d'un groupe spécifique.
- Usage : Gestion des utilisateurs ou des ressources au sein d'une classe.
Rôles Clients (clientRole: true
)
Ces rôles sont spécifiques à un client particulier (application ou service) configuré dans Keycloak. Chaque rôle est associé à un clientId
et contrôle les permissions pour ce client.
Client ID : Client account
-
manage-account
- Signification : Permet à un utilisateur de gérer son propre compte (par exemple, mettre à jour ses informations personnelles).
- Usage : Accès à la gestion des comptes utilisateur.
-
view-groups
- Signification : Autorise l'utilisateur à visualiser les groupes existants.
- Usage : Consultation des groupes sans pouvoir les modifier.
-
delete-account
- Signification : Permet à un utilisateur de supprimer son propre compte.
- Usage : Fonctionnalité de suppression de compte.
Client ID : Client realm-management
Ce client semble être lié à la gestion administrative du domaine (realm). Voici les rôles associés :
-
realm-admin
- Signification : Rôle administrateur complet pour le domaine.
- Usage : Gestion totale du domaine, y compris les utilisateurs, clients et configurations.
-
create-client
- Signification : Permet de créer de nouveaux clients dans le domaine.
- Usage : Ajout de nouvelles applications ou services dans Keycloak.
-
view-realm
- Signification : Autorise la consultation des informations du domaine.
- Usage : Visualisation des paramètres et configurations du domaine.
-
view-users
- Signification : Permet de consulter la liste des utilisateurs du domaine.
- Usage : Lecture des informations utilisateur.
-
view-clients
- Signification : Autorise la consultation des clients configurés dans le domaine.
- Usage : Visualisation des applications ou services enregistrés.
-
view-events
- Signification : Permet de consulter les événements (logs) du domaine.
- Usage : Suivi des activités et audits.
-
view-identity-providers
- Signification : Autorise la consultation des fournisseurs d'identité configurés.
- Usage : Visualisation des configurations OAuth, SAML, etc.
-
view-authorization
- Signification : Permet de consulter les configurations d'autorisation.
- Usage : Lecture des règles d'autorisation.
-
manage-realm
- Signification : Permet de modifier les paramètres du domaine.
- Usage : Configuration avancée du domaine.
-
manage-users
- Signification : Permet de gérer les utilisateurs (ajouter, supprimer, modifier).
- Usage : Administration des comptes utilisateurs.
-
manage-clients
- Signification : Permet de gérer les clients (applications ou services).
- Usage : Configuration et modification des clients.
-
manage-events
- Signification : Permet de gérer les événements (logs) du domaine.
- Usage : Suppression ou export des logs.
-
manage-identity-providers
- Signification : Permet de configurer ou modifier les fournisseurs d'identité.
- Usage : Gestion des connexions externes (OAuth, SAML, etc.).
-
manage-authorization
- Signification : Permet de configurer les règles d'autorisation.
- Usage : Définition des politiques d'accès.
-
query-users
- Signification : Permet de rechercher des utilisateurs dans le domaine.
- Usage : Requêtes sur les utilisateurs.
-
query-clients
- Signification : Permet de rechercher des clients dans le domaine.
- Usage : Requêtes sur les applications ou services.
-
query-realms
- Signification : Permet de rechercher des domaines (realms) dans Keycloak.
- Usage : Requêtes sur les domaines disponibles.
-
query-groups
- Signification : Permet de rechercher des groupes dans le domaine.
- Usage : Requêtes sur les groupes d'utilisateurs.
-
impersonation
- Signification : Permet à un administrateur de se connecter en tant qu'un autre utilisateur.
- Usage : Simulation d'un utilisateur pour le dépannage ou les tests.
- Les rôles globaux (
clientRole: false
) définissent des permissions générales pour tout le domaine. - Les rôles clients (
clientRole: true
) sont spécifiques à une application ou un service configuré dans Keycloak. - Les rôles comme
realm-admin
,manage-users
, ouimpersonation
sont souvent utilisés pour des tâches administratives avancées.
Sélection des rôles dans Keycloak
Rôle du royaume Open ENT
Rôle au niveau d'un utilisateur
Rôle au niveau d'un groupe