L'API Directory vous permet d'utiliser Contrôle des accès basé sur les rôles (RBAC) pour gérer l'accès aux fonctionnalités de votre domaine Google Workspace. Vous pouvez créer des rôles personnalisés avec des droits permettant de limiter l'accès administrateur plus spécifiquement les rôles prédéfinis fournis avec Google Workspace. Vous pouvez attribuer des rôles aux utilisateurs ou aux groupes de sécurité. Ce guide vous explique comment effectuer les tâches de base liées aux rôles.
Voici une liste de termes courants utilisés par l'API Directory avec concernant RBAC dans Google Workspace:
- Droit
- Autorisation nécessaire pour effectuer une tâche ou une opération dans un
domaine Google Workspace. Représenté par la paire valeur/clé
Ressource
Privilege
. Il y qu'aucune donnée persistante n'est associée à cette ressource. - Rôle
- Ensemble de droits accordant aux entités disposant de ce rôle le rôle
la capacité à effectuer certaines
tâches ou opérations. Représenté par la paire valeur/clé
Ressource
Role
. - Attribution de rôle
- Enregistrement d'un rôle particulier attribué à l'utilisateur ou au groupe. Représenté par
le
RoleAssignment
ressource. - Groupe de sécurité
- Type de Groupe Cloud Identity permettant de contrôler l'accès aux ressources ressources. Les groupes de sécurité peuvent contenir à la fois des utilisateurs individuels et des groupes.
Limites d'attribution de rôles
Vous ne pouvez créer qu'un nombre limité de rôles personnalisés ou d'attributions de rôles. Par conséquent, si vous approchez de la limite, regroupez-les ou supprimez-les pour rester en deçà limite. Les limites suivantes s'appliquent aux rôles et aux attributions de rôles:
- Vous pouvez créer jusqu'à 750 rôles personnalisés pour l'ensemble de votre organisation.
- Vous pouvez créer jusqu'à 1 000 attributions de rôles par unité organisationnelle (UO), où l'organisation racine est considérée comme une unité. Par exemple, vous pouvez attribuer 600 rôles dans l'organisation racine et 700 rôles au sein d'une autre OU que vous avez définie, telle qu'un service d'une entreprise. Tous les rôles d'administrateur prédéfinis dans Google Workspace sont définis par défaut à l'échelle de l'organisation. En savoir plus sur des limites sur les droits pouvant être attribués au niveau de l'UO.
Les rôles et les attributions de rôles sont soumis aux limites suivantes pour les groupes:
- Vous pouvez attribuer n'importe quel rôle, sauf celui de super-administrateur.
- Vous pouvez attribuer jusqu'à 250 attributions de rôles à des groupes au total dans l'UO globale et dans chaque UO.
- Le groupe doit être un groupe de sécurité de votre organisation.
- Nous vous recommandons de limiter l'adhésion aux groupes aux utilisateurs de votre organisation. Toi peuvent ajouter des utilisateurs externes à votre organisation, risquent de ne pas disposer des privilèges du rôle. Pour en savoir plus, consultez Restreindre les adhésions à un groupe. ### Attribution de rôles à des groupes
Si vous devez attribuer plus de 1 000 rôles à une unité organisationnelle, vous pouvez ajouter plusieurs les membres à un groupe de sécurité et attribuer un rôle au groupe. Rôle dans le groupe d'attributions présentent des limites supplémentaires. Consultez les Centre d'aide pour les administrateurs.
Mappage des rôles aux privilèges dans la console d'administration Google
Pour attribuer des rôles aux utilisateurs qui accèdent à leurs droits via la
dans la console d'administration, certains droits supplémentaires
accordé. Par exemple, pour autoriser un utilisateur à créer d'autres utilisateurs via
dans la console d'administration, non seulement le droit USERS_CREATE
obligatoire, mais aussi USERS_UPDATE
et ORGANIZATION_UNITS_RETRIEVE
.
de droits. Le tableau suivant mappe la console d'administration
aux droits requis pour gérer les utilisateurs
des unités organisationnelles.
Fonctionnalités de la console d'administration | Droits requis |
---|---|
Unités organisationnelles – Lecture | ORGANIZATION_UNITS_RETRIEVE |
Unités organisationnelles - Créer | ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_CREATE |
Unités organisationnelles - Mise à jour | ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_UPDATE |
Unités organisationnelles – Supprimer | ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_DELETE |
Unités organisationnelles | ORGANIZATION_UNITS_ALL |
Utilisateurs - Lu | USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Utilisateurs - Créer | USERS_CREATE + USERS_UPDATE + ORGANIZATION_UNITS_RETRIEVE |
Utilisateurs - Mise à jour | USERS_UPDATE + ORGANIZATION_UNITS_RETRIEVE |
Utilisateurs - Déplacer des utilisateurs | USERS_MOVE + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Utilisateurs - Renommer les comptes utilisateur | USERS_ALIAS + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Utilisateurs - Réinitialiser le mot de passe | USERS_RESET_PASSWORD + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Utilisateurs - Forcer le changement de mot de passe | USERS_FORCE_PASSWORD_CHANGE + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Utilisateurs - Ajouter/Supprimer des alias | USERS_ADD_NICKNAME + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Utilisateurs - Suspendre des comptes utilisateur | USERS_SUSPEND + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
GROUPS | GROUPS_ALL |
Sécurité – Gestion de la sécurité utilisateur | USER_SECURITY_ALL + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Exemples de cas d'utilisation
Avant de commencer
Suivez les authentification et autorisation pour Google Workspace.
Obtenir la liste des droits du domaine
Pour obtenir la liste paginée des droits pris en charge dans votre domaine, utilisez le
privileges.list()
.
Si vous êtes un administrateur disposant de droits dans votre propre domaine, utilisez
my_customer
comme numéro client.Si vous êtes un revendeur disposant de droits pour l'un de vos clients, utilisez le numéro client renvoyé par la fonction Récupérer opération utilisateur.
Requête
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles/ALL/privileges
Réponse
Une réponse positive renvoie un état HTTP 200 code. En plus des code d'état, la réponse renvoie les droits pris en charge dans le domaine:
{
"kind": "admin\#directory\#privileges",
"etag": ...,
"items": [
{
"kind": "admin\#directory\#privilege",
"etag": ...,
"serviceId": "02afmg282jiquyg",
"privilegeName": "APP_ADMIN",
"isOuScopable": false
},
{
"kind": "admin\#directory\#privilege",
"etag": ...,
"serviceId": "04f1mdlm0ki64aw",
"privilegeName": "MANAGE_USER_SETTINGS",
"isOuScopable": true,
"childPrivileges": [
{
"kind": "admin\#directory\#privilege",
"etag": ...,
"serviceId": "04f1mdlm0ki64aw",
"privilegeName": "MANAGE_APPLICATION_SETTINGS",
"isOuScopable": true
}
]
},
...
]
}
Obtenir les rôles existants
Pour obtenir la liste des rôles existants, utilisez la requête GET
suivante et incluez les
l'autorisation décrite dans la section
requêtes.
Si, en tant qu'administrateur, vous obtenez des rôles dans votre propre domaine, utilisez
my_customer
comme numéro client.Si vous obtenez des rôles pour un client en tant que revendeur, utilisez le numéro client que vous obtenu à l'aide de la fonction Récupérer opération utilisateur.
Requête
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles
Réponse
Une réponse positive renvoie un état HTTP 200
.
le code. En plus des
code d'état, la réponse renvoie les rôles qui existent dans le domaine:
{
"kind": "admin\#directory\#roles",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/DywA6_jaJCYw-f0lFs2-g17UWe8\"",
"items": [
{
"kind": "admin\#directory\#role",
"etag": ... ,
"roleId": "3894208461012993",
"roleName": "_SEED_ADMIN_ROLE",
"roleDescription": "Google Workspace Administrator Seed Role",
"rolePrivileges": [
{
"privilegeName": "SUPER_ADMIN",
"serviceId": "01ci93xb3tmzyin"
},
{
"privilegeName": "ROOT_APP_ADMIN",
"serviceId": "00haapch16h1ysv"
},
{
"privilegeName": "ADMIN_APIS_ALL",
"serviceId": "00haapch16h1ysv"
},
...
],
"isSystemRole": true,
"isSuperAdminRole": true
},
{
"kind": "admin\#directory\#role",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/bTXiZXfuK1NGr_f4paosCWXuHmw\"",
"roleId": "3894208461012994",
"roleName": "_GROUPS_ADMIN_ROLE",
"roleDescription": "Groups Administrator",
"rolePrivileges": [
{
"privilegeName": "CHANGE_USER_GROUP_MEMBERSHIP",
"serviceId": "01ci93xb3tmzyin"
},
{
"privilegeName": "USERS_RETRIEVE",
"serviceId": "00haapch16h1ysv"
},
{
"privilegeName": "GROUPS_ALL",
"serviceId": "00haapch16h1ysv"
},
{
"privilegeName": "ADMIN_DASHBOARD",
"serviceId": "01ci93xb3tmzyin"
},
{
"privilegeName": "ORGANIZATION_UNITS_RETRIEVE",
"serviceId": "00haapch16h1ysv"
}
],
"isSystemRole": true
},
...
]
}
Lister toutes les attributions de rôles
Pour obtenir la liste paginée de toutes les attributions de rôles directs, utilisez la
roleAssignments.list()
. L'API peut renvoyer des résultats vides avec un jeton de page lorsque userKey
est défini. Vous devez poursuivre la pagination jusqu'à ce qu'aucun jeton de page ne soit
renvoyé.
Si, en tant qu'administrateur, vous obtenez des attributions de rôles dans votre propre domaine, utilisez
my_customer
comme numéro client.Si vous êtes un revendeur et que vous obtenez des attributions de rôles pour l'un de vos clients, utilisez le numéro client renvoyé par la fonction Récupérer opération utilisateur.
Requête
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments
Réponse
Une réponse positive renvoie un état HTTP 200
.
le code. En plus des
code d'état, la réponse renvoie tous les rôles attribués dans le domaine:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId:"3894208461013211",
"assignedTo:"100662996240850794412",
"assigneeType:"user",
"scopeType:"CUSTOMER",
}
Répertorier toutes les attributions de rôles indirectes
Pour obtenir une liste paginée de toutes les attributions de rôles, y compris celles indirectement
attribués à un utilisateur en raison des groupes auxquels il appartient, utilisez la
roleAssignments.list()
.
L'API peut renvoyer des résultats vides avec un jeton de page. Vous devez continuer la pagination jusqu'à ce qu'aucun jeton de page ne soit renvoyé.
Si, en tant qu'administrateur, vous obtenez des attributions de rôles dans votre propre domaine, utilisez
my_customer
comme numéro client.Si vous êtes un revendeur et que vous obtenez des attributions de rôles pour l'un de vos clients, utilisez le numéro client renvoyé par la fonction Récupérer opération utilisateur.
Remplacez
USER_KEY
par une valeur qui identifie le dans la requête API. Pour en savoir plus, consultezusers.get
.
Requête
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments?userKey=USER_KEY&includeIndirectRoleAssignments=true
Réponse
Une réponse positive renvoie un état HTTP 200
.
le code. En plus des
code d'état, la réponse renvoie tous les rôles attribués dans le domaine et indique si
assigneeType
est user
ou group
:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId:"3894208461013211",
"assignedTo:"100662996240850794412",
"assigneeType:"group",
"scopeType:"CUSTOMER",
}
Créer un rôle
Pour créer un rôle, utilisez la requête POST
suivante et incluez les
l'autorisation décrite dans la section
requêtes.
Ajoutez un privilegeName
et un serviceId
pour chaque droit qui doit être
accordé avec ce rôle. Pour connaître les propriétés des requêtes et des réponses, consultez la documentation API
Référence.
Requête
POST https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles { "roleName": "My New Role", "rolePrivileges": [ { "privilegeName": "USERS_ALL", "serviceId": "00haapch16h1ysv" }, { "privilegeName": "GROUPS_ALL", "serviceId": "00haapch16h1ysv" } ] }
Réponse
Une réponse positive renvoie un état HTTP 200
.
le code. En plus des
code d'état, la réponse renvoie les propriétés du nouveau rôle:
{
"kind": "admin\#directory\#role",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/uX9tXw0qyijC9nUKgCs08wo8aEM\"",
"roleId": "3894208461013031",
"roleName": "My New Role",
"rolePrivileges": [
{
"privilegeName": "GROUPS_ALL",
"serviceId": "00haapch16h1ysv"
},
{
"privilegeName": "USERS_ALL",
"serviceId": "00haapch16h1ysv"
}
]
}
Créer une attribution de rôle
Pour attribuer un rôle, utilisez la méthode POST
suivante et incluez l'autorisation
décrits dans
Autoriser les requêtes
Pour attribuer le rôle à un utilisateur, ajoutez un corps JSON avec le
user_id
de l'utilisateur. que vous pouvez provenant deusers.get()
, leroleId
(tel que décrit dans Obtenir les rôles existants) et lescope_type
.Pour attribuer le rôle à un compte de service, ajoutez un corps JSON avec le paramètre
unique_id
du compte de service (tel que défini dans Identity and Access Management (IAM)), leroleId
(tel que décrit dans Obtenir les rôles existants) etscope_type
.Pour attribuer le rôle à un groupe, ajoutez un corps JSON avec le
group_id
de que vous pouvez obtenirgroups.get()
, leroleId
(comme décrit dans Obtenir les rôles existants), etscope_type
.
Requête
POST https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments { "roleId": "3894208461012995", "assignedTo": "100662996240850794412", "scopeType": "CUSTOMER" }
Réponse
Une réponse positive renvoie un état HTTP 200
.
le code. En plus des
code d'état, la réponse renvoie les propriétés de la nouvelle attribution de rôle:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId": "3894208461013211",
"roleId": "3894208461012995",
"assignedTo": "100662996240850794412",
"scopeType": "CUSTOMER"
}
Créer une attribution de rôle avec des conditions
Vous pouvez attribuer des rôles pour effectuer des actions qui répondent à des conditions spécifiques. Actuellement, seules deux conditions sont acceptées:
- Uniquement applicable aux groupes de sécurité
- Non applicable aux groupes de sécurité
Si la règle condition
est définie, elle ne prend effet que lorsque la ressource faisant l'objet
lorsque l'utilisateur accède
à la condition requise. Si condition
est vide, le rôle (roleId
) est
appliquée sans condition à l'acteur (assignedTo
) au niveau du champ d'application (scopeType
).
Pour attribuer un rôle à un utilisateur, utilisez la méthode POST suivante et incluez le paramètre l'autorisation décrite dans Autoriser requêtes.
Ajoutez un corps JSON avec le user_id
de l'utilisateur, que vous pouvez obtenir à partir de
users.get(), le roleId
en tant que
décrit dans Obtenir les rôles existants et la condition
. La
deux chaînes de condition doivent être utilisées mot pour mot, comme indiqué ci-dessous et elles
ne fonctionnent qu'avec l'éditeur de groupes et le lecteur de groupes
rôles d'administrateur prédéfinis.
Ces conditions suivent
Syntaxe des conditions Cloud IAM
Requête
Uniquement applicable aux groupes de sécurité
POST https://admin.googleapis.com/admin/directory/v1.1beta1/customer/customer_id/roleassignments { "roleId": "3894208461012995", "assignedTo": "100662996240850794412", "scopeType": "CUSTOMER", "condition": "api.getAttribute('cloudidentity.googleapis.com/groups.labels', []).hasAny(['groups.security']) && resource.type == 'cloudidentity.googleapis.com/Group'" }
Non applicable aux groupes de sécurité
POST https://admin.googleapis.com/admin/directory/v1.1beta1/customer/customer_id/roleassignments { "roleId": "3894208461012995", "assignedTo": "100662996240850794412", "scopeType": "CUSTOMER", "condition": "!api.getAttribute('cloudidentity.googleapis.com/groups.labels', []).hasAny(['groups.security']) && resource.type == 'cloudidentity.googleapis.com/Group'" }
Réponse
Une réponse positive renvoie un état HTTP 200
.
le code. En plus des
code d'état, la réponse renvoie les propriétés de la nouvelle attribution de rôle:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId": "3894208461013211",
"roleId": "3894208461012995",
"assignedTo": "100662996240850794412",
"scopeType": "CUSTOMER",
"condition": "!api.getAttribute('cloudidentity.googleapis.com/groups.labels',
[]).hasAny(['groups.security']) && resource.type ==
'cloudidentity.googleapis.com/Group'"
}