Vous pouvez utiliser notre APINerdGraph pour afficher et gérer les groupes d'utilisateurs et ce à quoi ces groupes peuvent accéder. Pour savoir comment procéder dans l'UI, consultez la documentation UI de gestion des utilisateurs.
Pour utiliser NerdGraph pour créer un utilisateur et afficher ses informations, voir Gérer l'utilisateur avec NerdGraph.
Exigences
Quelques exigences pour la gestion des utilisateurs et des groupes via NerdGraph :
L'édition Pro ou Enterprise est requise pour personnaliser les groupes d'utilisateurs et les rôles
Si vous utilisez le provisionnement SCIM: pour ce domaine d'authentification, vous ne pouvez pas créer de groupes ni ajouter d'utilisateurs à des groupes, car vos groupes et utilisateurs sont gérés via SCIM.
Vous devez être un utilisateur de notre nouveau modèle d'utilisateur. Autres exigences liées aux autorisations :
- Type d'utilisateur requis : utilisateur principal ou utilisateur de la plateforme complète
- Paramètres d'administration requis : Organization settings ou Authentication domain settings
Avant de commencer
Avant d'utiliser NerdGraph pour gérer l'utilisateur :
- Assurez-vous d'avoir une bonne compréhension de nos concepts de gestion des utilisateurs
- Si vous ne l'avez pas déjà fait, nous vous suggérons de consulter l'UI Access management pour améliorer votre compréhension du fonctionnement des groupes et de l'accès des utilisateurs, et pour comprendre les groupes qui existent déjà. Avant de faire cela, nous vous recommandons de créer un plan pour l'accès au groupe que vous devez créer : voici un exemple de feuille de calcul de planification.
- Notez que l'explorateur NerdGraph dispose de documents intégrés qui définissent les champs utilisés dans ces requests.
- Notez que vous pouvez suivre les modifications apportées à votre compte New Relic.
Workflow suggéré pour la création de groupes
Vous pouvez utiliser ces requêtes et mutations de différentes manières et dans différents ordres, mais voici un workflow courant pour la configuration de groupes :
- interrogez les informations de votre utilisateur et les rôles disponibles: cela peut être un premier point de départ utile pour vous assurer de comprendre quel utilisateur vous avez dans New Relic et les rôles disponibles. Si vous débutez, vous n'avez peut-être pas encore ajouté d'utilisateur et vous n'avez peut-être que nos rôles standard.
- Facultatif : Créer un nouveau groupe: Not available if using SCIM provisioning. Vous pouvez soit utiliser des groupes existants, soit créer un nouveau groupe. Après avoir créé un groupe, vous devez lui accorder l'accès aux rôles et aux comptes. Notez qu'un groupe, à lui seul, n'accorde aucun accès à l'utilisateur de ce groupe : c'est seulement lorsqu'un rôle et un compte lui sont attribués que l'utilisateur peut réellement accéder à New Relic.
- Accorder l'accès à un groupe: c'est ce qui attribue aux groupes l'accès aux rôles et aux comptes.
Une fois que vous avez terminé, s'il y a déjà des utilisateurs dans le groupe que vous avez créé et que ce groupe a accès à au moins un rôle et un compte, ils devraient avoir accès dans quelques minutes (bien que pour les comptes New Relic de la région UE, cela puisse prendre jusqu'à 20 minutes environ). Si votre utilisateur n'est pas encore dans ce groupe (ce qui serait vrai si vous venez de créer un nouveau groupe), vous pouvez ajouter un utilisateur à ce groupe.
Groupes de requêtes
Voici un exemple de requête pour des groupes existants dans un domaine d'authentification donné :
{ actor { organization { userManagement { authenticationDomains(id: "YOUR_AUTHENTICATION_DOMAIN_ID") { authenticationDomains { groups { groups { displayName id } } } } } } }}
Qequête sur les rôles existants
Voici un exemple de retour d'informations sur les rôles :
{ actor { organization { authorizationManagement { authenticationDomains { authenticationDomains { groups { groups { roles { roles { accountId displayName id name organizationId type } } } } } } } } }}
Voici un exemple de résultat :
{ "data": { "actor": { "organization": { "authorizationManagement": { "authenticationDomains": { "authenticationDomains": [ { "groups": { "groups": [ { "roles": { "roles": [ { "accountId": "account-id", "displayName": "name", "id": "id", "name": "role-name", "organizationId": null, "type": "role-type" }, { "accountId": null, "displayName": "name", "id": "id", "name": "role-name", "organizationId": "organization-id", "type": "role-type" } ] } } ] } } ] } } } } }}
Qequête utilisateur
Information de requête utilisateur
Voici un exemple de requête d'informations sur votre utilisateur :
{ actor { organization { userManagement { authenticationDomains { authenticationDomains { groups { groups { users { users { id email name timeZone } } } } } } } } }}
Voici un exemple de résultat :
{ "data": { "actor": { "organization": { "userManagement": { "authenticationDomains": { "authenticationDomains": [ { "groups": { "groups": [ { "users": { "users": [ { "email": "example@newrelic.com", "id": "123456789", "name": "Example Relic", "timeZone": "Etc/UTC" } ] } } ] } } ] } } } } }}
Interrogez les appartenances aux groupes de vos utilisateurs
Voici un exemple d'interrogation des groupes auxquels appartient votre utilisateur :
{ actor { organization { userManagement { authenticationDomains { authenticationDomains { users { users { groups { groups { displayName } } email } } } } } } }}
Voici un exemple de réponse :
{ "data": { "actor": { "organization": { "userManagement": { "authenticationDomains": { "authenticationDomains": [ { "users": { "users": [ { "email": "pete@example.com", "groups": { "groups": [ { "displayName": "Admin" }, { "displayName": "Basic Sub Account" } ] } },
Créer un rôle
Voici un exemple de création d'un rôle:
mutation { customRoleCreate( container: { id: "YOUR_ORGANIZATION_ID", type: "ORGANIZATION" } name: "MY CUSTOM ROLE" permissionIds: [1, 2, 3] scope: "ACCOUNT" ) { id }}
Paramètres
container
:id
: (Chaîne) L'identifiant unique de votre organisation. RemplacezYOUR_ORGANIZATION_ID
par votre ID d’organisation réel.type
: (Chaîne) Le type de conteneur. Actuellement, le seul type pris en charge est"ORGANIZATION"
.name
: (Chaîne) Le nom attribué au rôle personnalisé. Exemple :"MY CUSTOM ROLE"
.
permissionIds
:(éventuel) Une liste d'ID d'autorisation représentant les capacités attribuées au rôle personnalisé. Assurez-vous que ces identifiants correspondent à des autorisations valides dans votre système.scope
: (Chaîne) Le niveau auquel les autorisations du rôle s'appliquent. Dans ce instance, la portée est"ACCOUNT"
.
Réponse
id
: Renvoie l'ID unique du rôle personnalisé nouvellement créé.Important
- Remplacez
YOUR_ORGANIZATION_ID
par votre ID d’organisation spécifique avant d’exécuter la mutation. - Assurez-vous que les
permissionIds
fournis sont valides et correspondent aux autorisations que vous souhaitez accorder.
- Remplacez
Avant de créer un rôle personnalisé, vous devez identifier les autorisations que vous souhaitez lui attribuer.
Utilisez la requête suivante pour récupérer la liste des autorisations :
mutation { customerAdministration { permissions { items { category feature id product subsetIds } nextCursor } }}
Cela renvoie les autorisations limitées au compte. Pour les autorisations limitées à une organisation, exécutez plutôt la requête suivante :
{ customerAdministration { permissions(filter: { scope: { eq: "organization" } }) { items { category feature id product subsetIds } nextCursor } }}
Notez les champs suivants :
items
:Un éventail d'objets d'autorisation, chacun contenant l'attribut suivant :category
: (Chaîne) La catégorie ou le groupe auquel appartient l'autorisation.feature
: (Chaîne) La fonctionnalité spécifique à laquelle l'autorisation est associée.id
: (Chaîne) Un identifiant unique pour chaque autorisation.product
: (Chaîne) Le produit auquel l'autorisation s'applique.subsetIds
: (éventuel) Une liste d'identifiants représentant des sous-ensembles ou des autorisations associées.
Une fois que vous disposez de l’identifiant unique pour chaque autorisation que vous souhaitez attribuer au nouveau rôle, créez ce rôle.
Mettre à jour le rôle
Voici un exemple de mise à jour d'un rôle.
mutation { customRoleUpdate( id: ROLE_ID name: "MY NEW CUSTOM ROLE NAME" permissionIds: [4, 5, 6] ) { id }}
Paramètres
id
: L'identifiant unique du rôle personnalisé que vous souhaitez modifier. RemplacezROLE_ID
par l’ID réel du rôle.name
:Le nouveau nom que vous souhaitez attribuer au rôle personnalisé. Dans cet exemple, c'estMY NEW CUSTOM ROLE NAME
.permissionIds
:Un éventail d’ID d’autorisation que vous souhaitez attribuer à ce rôle. Assurez-vous que ces identifiants sont valides et correspondent aux autorisations que vous souhaitez mettre en œuvre.
Supprimer un rôle
Voici un exemple de suppression d'un rôle:
mutation { customRoleDelete(id: ROLE_ID) { id }}
Paramètres
id
: L'identifiant unique du rôle que vous souhaitez supprimer. RemplacezROLE_ID
par l’ID réel du rôle que vous souhaitez supprimer.
Réponse
id
: Renvoie l'ID du rôle qui a été supprimé, confirmant l'exécution réussie de la mutation.
Créer un groupe
Voici un exemple de création d'un groupe:
mutation { userManagementCreateGroup( createGroupOptions: { authenticationDomainId: "YOUR_AUTH_DOMAIN_ID" displayName: "GROUP_DISPLAY_NAME" } ) { group { displayName id } }}
Réponse réussie :
{ "data": { "userManagementCreateGroup": { "group": { "displayName": "GROUP_DISPLAY_NAME" "id": "GROUP_ID" } } }}
Mettre à jour le groupe d'utilisateurs
Voici un exemple de mise à jour d'un groupe.
mutation { userManagementUpdateGroup( updateGroupOptions: { displayName: "YOUR_UPDATED_GROUP_NAME" id: "YOUR_GROUP_ID" } ) { group { id displayName } }}
Réponse en cas de succès :
{ "data": { "userManagementUpdateGroup": { "group": { "displayName": "YOUR_UPDATED_GROUP_NAME", "id": "GROUP_ID" } } }}
Réponse en cas d'échec :
{ "data": { "userManagementUpdateGroup": null }, "errors": [ { "extensions": { "errorClass": "SERVER_ERROR" }, "locations": [ { "column": 3, "line": 2 } ], "message": "Group could not be found", "path": ["userManagementUpdateGroup"] } ]}
Supprimer un groupe
Voici un exemple de suppression d'un groupe:
mutation { userManagementDeleteGroup(groupOptions: { id: "YOUR_GROUP_ID" }) { group { id } }}
Réponse en cas de succès :
{ "data": { "userManagementDeleteGroup": { "group": { "id": "GROUP_ID" } } }}
Réponse en cas d'échec :
{ "data": { "userManagementDeleteGroup": null }, "errors": [ { "extensions": { "errorClass": "SERVER_ERROR" }, "locations": [ { "column": 3, "line": 2 } ], "message": "Couldn't find Group with 'id'='ENTERED_GROUP_ID", "path": ["userManagementDeleteGroup"] } ]}
Ajouter un utilisateur aux groupes
Voici un exemple d'ajout d'utilisateur à des groupes :
mutation { userManagementAddUsersToGroups( addUsersToGroupsOptions: { groupIds: [FIRST_GROUP_ID, SECOND_GROUP_ID] userIds: [YOUR_USERS_IDS] } ) { groups { displayName id } }}
Réponse en cas de succès :
{ "data": { "userManagementAddUsersToGroups": { "groups": [ { "displayName": "GROUP_1_NAME", "id": "GROUP_ID_1" }, { "displayName": "GROUP_NAME_2", "id": "GROUP_ID_2" } ] } }}
Réponse en cas d'échec :
{ "data": { "userManagementAddUsersToGroups": null }, "errors": [ { "extensions": { "errorClass": "SERVER_ERROR" }, "locations": [ { "column": 3, "line": 2 } ], "message": "The following ids were not found: group_ids: 'NON_EXISTENT_GROUP_ID'", "path": ["userManagementAddUsersToGroups"] } ]}
Supprimer l'utilisateur des groupes
Voici un exemple de suppression d'utilisateur des groupes :
mutation { userManagementRemoveUsersFromGroups( removeUsersFromGroupsOptions: { groupIds: [YOUR_GROUP_IDS] userIds: [YOUR_USER_IDS] } ) { groups { displayName id } }}
Réponse en cas de succès :
{ "data": { "userManagementRemoveUsersFromGroups": { "groups": [ { "displayName": "YOUR_GROUP_NAME", "id": "YOUR_GROUP_ID" } ] } }}
Réponse en cas d'échec :
{ "data": { "userManagementRemoveUsersFromGroups": null }, "errors": [ { "extensions": { "errorClass": "SERVER_ERROR" }, "locations": [ { "column": 3, "line": 2 } ], "message": "The following ids were not found: user_ids: 'NON-EXISTENT_USER_ID'", "path": ["userManagementRemoveUsersFromGroups"] } ]}
Accorder l'accès à un groupe
Voici un exemple d'octroi à un groupe d'un accès à un rôle et à un compte :
mutation { authorizationManagementGrantAccess( grantAccessOptions: { groupId: "YOUR_GROUP_ID" accountAccessGrants: { accountId: YOUR_ACCOUNT_ID roleId: "YOUR_ROLE_ID" } } ) { roles { displayName accountId } }}
Réponse en cas de succès :
{ "data": { "authorizationManagementGrantAccess": { "roles": [ { "displayName": "ROLE_NAME_1", "id": "ROLE_ID_1" }, { "displayName": "ROLE_NAME_2", "id": "ROLE_ID_2" }, { "displayName": "ROLE_NAME_3", "id": "ROLE_ID_3" }, { "displayName": "ROLE_NAME_4", "id": "ROLE_ID_4" } ] } }}
Réponse en cas d'échec :
{ "data": { "authorizationManagementGrantAccess": null }, "errors": [ { "extensions": { "errorClass": "SERVER_ERROR" }, "locations": [ { "column": 3, "line": 2 } ], "message": "Validation failed: Role must exist, Role can't be blank, Role scope does not match granted_on type", "path": ["authorizationManagementGrantAccess"] } ]}
Trouver un identifiant de rôle
Pour certains cas d'utilisation, comme l'octroi de l'accès à un groupe, vous pouvez avoir besoin de l'ID d'un rôle : l'ID numérique représentant ce rôle dans New Relic.
Voici quelques identifiants pour nos rôles par défaut et nos paramètres d'administration:
All product admin:
1254
.Standard user:
1253
.Read only:
1252
.Organization manager setting
1994
- Read only:
1995
- Read only:
Authentication domain setting:
- Manage:
1996
- Read only:
1997
- Add users:
14517
- Read users:
14603
- Manage:
Group admin:
14516
Voici une requête pour trouver l'ID d'un rôle personnalisé :
{ actor { organization { authorizationManagement { authenticationDomains(id: "YOUR_AUTHENTICATION_DOMAIN_ID") { authenticationDomains { groups { groups { displayName id roles { roles { roleId name } } } } } } } } }}
Révoquer les subventions du groupe
Voici un exemple de suppression de l’accès à un groupe :
mutation { authorizationManagementRevokeAccess( revokeAccessOptions: { accountAccessGrants: { accountId: YOUR_ACCOUNT_ID roleId: "YOUR_ROLE_ID" } groupId: "YOUR_GROUP_ID" } ) { roles { accountId displayName } }}
Réponse en cas de succès :
{ "data": { "authorizationManagementRevokeAccess": { "roles": [ { "displayName": "ROLE_NAME_1", "id": "ROLE_ID_1" }, { "displayName": "ROLE_NAME_2", "id": "ROLE_ID_2" }, { "displayName": "ROLE_NAME_3", "id": "ROLE_ID_3" } ] } }}