Você pode usar nossa API NerdGraph para visualizar e gerenciar grupos de usuários e o que esses grupos podem acessar. Para saber como fazer isso na interface, consulte a documentação da interface de gerenciamento do usuário.
Para usar o NerdGraph para criar usuários e visualizar suas informações, consulte Gerenciar usuários com NerdGraph.
Requisitos
Alguns requisitos para gerenciamento de usuários e grupos via NerdGraph:
Pro ou edição Enterprise é necessária para personalizar grupos e funções de usuários
Se você estiver usando o provisionamento SCIM: para esse domínio de autenticação, você não poderá criar grupos ou adicionar usuários a grupos, porque seus grupos e usuários são gerenciados via SCIM.
Você deve ser um usuário do nosso modelo de usuário mais recente. Outros requisitos relacionados a permissões:
- Tipo de usuário necessário: usuário principal ou usuário completo da plataforma
- Configurações de administração necessárias: Organization settings ou Authentication domain settings
Antes que você comece
Antes de usar o NerdGraph para gerenciar o usuário:
- Certifique-se de ter uma compreensão adequada de nossos conceitos de gerenciamento de usuários
- Se ainda não o fez, sugerimos que consulte a interface Access management para melhorar sua compreensão de como funciona o acesso de grupos e usuários e para entender os grupos que já existem. Antes de fazer isso, recomendamos criar um plano para o acesso ao grupo que você precisa criar: aqui está um exemplo de planilha de planejamento.
- Observe que o NerdGraph Explorer possui documentos integrados que definem os campos usados nessas solicitações.
- Observe que você pode acompanhar as alterações em sua conta New Relic.
Fluxo de trabalho sugerido para criação de grupos
Você pode usar essas consultas e mutações de várias maneiras e em várias ordens, mas aqui está um fluxo de trabalho comum para configurar grupos:
- consulte as informações do seu usuário e as funções disponíveis: este pode ser um primeiro lugar útil para começar a ter certeza de que você entende qual usuário você tem no New Relic e as funções disponíveis. Se você está apenas começando, talvez ainda não tenha adicionado o usuário e talvez tenha apenas nossas funções padrão.
- Opcional: Crie um novo grupo: Not available if using SCIM provisioning. Você pode usar grupos existentes ou criar um novo grupo. Depois de criar um grupo, você deverá conceder-lhe acesso a funções e contas. Observe que um grupo, por si só, não concede nenhum acesso ao usuário desse grupo: somente quando ele tem uma função e uma conta atribuídas é que o usuário pode realmente acessar o New Relic.
- Conceder acesso a um grupo: é isso que atribui aos grupos acesso a funções e contas.
Quando terminar, se já houver usuários no grupo que você criou e esse grupo tiver acesso a pelo menos uma função e conta, eles deverão ter acesso em alguns minutos (embora para contas New Relic da região da UE, isso possa levar até 20 minutos ou mais). Se o seu usuário ainda não estiver nesse grupo (o que seria verdade se você acabou de criar um novo grupo), você pode adicionar o usuário a esse grupo.
Grupos de consulta
Aqui está um exemplo de consulta de grupos existentes em um determinado domínio de autenticação:
{ actor { organization { userManagement { authenticationDomains(id: "YOUR_AUTHENTICATION_DOMAIN_ID") { authenticationDomains { groups { groups { displayName id } } } } } } }}
Consultar funções existentes
Aqui está um exemplo de retorno de informações sobre funções:
{ actor { organization { authorizationManagement { authenticationDomains { authenticationDomains { groups { groups { roles { roles { accountId displayName id name organizationId type } } } } } } } } }}
Aqui está um exemplo de resultado:
{ "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" } ] } } ] } } ] } } } } }}
Consulte o usuário
Consultar informações do usuário
Aqui está um exemplo de consulta de informações sobre seu usuário:
{ actor { organization { userManagement { authenticationDomains { authenticationDomains { groups { groups { users { users { id email name timeZone } } } } } } } } }}
Aqui está um exemplo de resultado:
{ "data": { "actor": { "organization": { "userManagement": { "authenticationDomains": { "authenticationDomains": [ { "groups": { "groups": [ { "users": { "users": [ { "email": "example@newrelic.com", "id": "123456789", "name": "Example Relic", "timeZone": "Etc/UTC" } ] } } ] } } ] } } } } }}
Consulte as associações de grupo do seu usuário
Aqui está um exemplo de consulta aos grupos aos quais seu usuário pertence:
{ actor { organization { userManagement { authenticationDomains { authenticationDomains { users { users { groups { groups { displayName } } email } } } } } } }}
Aqui está um exemplo de resposta:
{ "data": { "actor": { "organization": { "userManagement": { "authenticationDomains": { "authenticationDomains": [ { "users": { "users": [ { "email": "pete@example.com", "groups": { "groups": [ { "displayName": "Admin" }, { "displayName": "Basic Sub Account" } ] } },
Criar uma função
Aqui está um exemplo de criação de uma função:
mutation { customRoleCreate( container: { id: "$YOUR_ORGANIZATION_ID", type: "ORGANIZATION" } name: "MY CUSTOM ROLE" permissionIds: [1, 2, 3] scope: "ACCOUNT" ) { id }}
Parâmetro
container
:id
: (String) O identificador exclusivo da sua organização. Substitua organização pelo seu ID de organização real.type
: (String) O tipo de contêiner. Atualmente, o único tipo suportado é "organização".name
: (String) O nome atribuído à função personalizada. Exemplo: "MINHA FUNÇÃO PERSONALIZADA".
permissionIds
: (matriz) Uma lista de IDs de permissão que representam os recursos atribuídos à função personalizada. Certifique-se de que esses IDs correspondem a permissões válidas no seu sistema.scope
: (String) O nível no qual as permissões da função se aplicam. Nesta instância, o escopo é "CONTA".
Resposta
id
: Retorna o ID único da função personalizada recém-criada.Importante
- Substitua
$YOUR_ORGANIZATION_ID
pelo ID específico da sua organização antes de executar a mutação. - Certifique-se de que os
permissionIds
fornecidos sejam válidos e estejam alinhados com as permissões que você deseja conceder.
- Substitua
Antes de criar uma função personalizada, você precisa identificar as permissões que deseja atribuir a ela.
Use a seguinte consulta para recuperar a lista de permissões:
mutation { customerAdministration { permissions { items { category feature id product subsetIds } nextCursor } }}
Isso retorna permissões no escopo da conta. Para permissões com escopo para uma organização, execute a seguinte consulta:
{ customerAdministration { permissions(filter: { scope: { eq: "organization" } }) { items { category feature id product subsetIds } nextCursor } }}
Observe os seguintes campos:
items
: Uma matriz de objetos de permissão, cada um contendo o seguinte atributo:category
: (String) A categoria ou agrupamento ao qual a permissão pertence.feature
: (String) O recurso específico ao qual a permissão está associada.id
: (String) Um identificador exclusivo para cada permissão.product
: (String) O produto ao qual a permissão se aplica.subsetIds
: (matriz) Uma lista de IDs que representam subconjuntos ou permissões relacionadas.
Depois de ter o identificador exclusivo para cada permissão que você deseja atribuir à nova função, crie essa função.
Atualizar função
Aqui está um exemplo de atualização de uma função.
mutation { customRoleUpdate( id: $ROLE_ID name: "MY NEW CUSTOM ROLE NAME" permissionIds: [4, 5, 6] ) { id }}
Parâmetro
id
: O identificador exclusivo da função personalizada que você deseja modificar. Substitua$ROLE_ID
pelo ID real da função.name
: O novo nome que você deseja atribuir à função personalizada. Neste exemplo, éMY NEW CUSTOM ROLE NAME
.permissionIds
: Uma matriz de IDs de permissão que você deseja atribuir a esta função. Certifique-se de que esses IDs sejam válidos e correspondam às permissões que você pretende implementar.
Excluir uma função
Aqui está um exemplo de exclusão de uma função:
mutation { customRoleDelete(id: $ROLE_ID) { id }}
Parâmetro
id
: O identificador exclusivo da função que você deseja excluir. Substitua$ROLE_ID
pelo ID real da função que você deseja remover.
Resposta
id
: Retorna o ID da função que foi excluída, confirmando a execução bem-sucedida da mutação.
Crie um grupo
Aqui está um exemplo de criação de um grupo:
mutation { userManagementCreateGroup( createGroupOptions: { authenticationDomainId: "YOUR_AUTH_DOMAIN_ID" displayName: "GROUP_DISPLAY_NAME" } ) { group { displayName id } }}
Resposta bem-sucedida:
{ "data": { "userManagementCreateGroup": { "group": { "displayName": "GROUP_DISPLAY_NAME" "id": "GROUP_ID" } } }}
Atualizar grupo de usuários
Aqui está um exemplo de atualização de um grupo.
mutation { userManagementUpdateGroup( updateGroupOptions: { displayName: "YOUR_UPDATED_GROUP_NAME" id: "YOUR_GROUP_ID" } ) { group { id displayName } }}
Resposta para o sucesso:
{ "data": { "userManagementUpdateGroup": { "group": { "displayName": "YOUR_UPDATED_GROUP_NAME", "id": "GROUP_ID" } } }}
Resposta para falha:
{ "data": { "userManagementUpdateGroup": null }, "errors": [ { "extensions": { "errorClass": "SERVER_ERROR" }, "locations": [ { "column": 3, "line": 2 } ], "message": "Group could not be found", "path": ["userManagementUpdateGroup"] } ]}
Excluir um grupo
Aqui está um exemplo de exclusão de um grupo:
mutation { userManagementDeleteGroup(groupOptions: { id: "YOUR_GROUP_ID" }) { group { id } }}
Resposta para o sucesso:
{ "data": { "userManagementDeleteGroup": { "group": { "id": "GROUP_ID" } } }}
Resposta para falha:
{ "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"] } ]}
Adicionar usuário aos grupos
Aqui está um exemplo de adição de usuário a grupos:
mutation { userManagementAddUsersToGroups( addUsersToGroupsOptions: { groupIds: [FIRST_GROUP_ID, SECOND_GROUP_ID] userIds: [YOUR_USERS_IDS] } ) { groups { displayName id } }}
Resposta para o sucesso:
{ "data": { "userManagementAddUsersToGroups": { "groups": [ { "displayName": "GROUP_1_NAME", "id": "GROUP_ID_1" }, { "displayName": "GROUP_NAME_2", "id": "GROUP_ID_2" } ] } }}
Resposta para falha:
{ "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"] } ]}
Remover usuário dos grupos
Aqui está um exemplo de remoção de usuários de grupos:
mutation { userManagementRemoveUsersFromGroups( removeUsersFromGroupsOptions: { groupIds: [YOUR_GROUP_IDS] userIds: [YOUR_USER_IDS] } ) { groups { displayName id } }}
Resposta para o sucesso:
{ "data": { "userManagementRemoveUsersFromGroups": { "groups": [ { "displayName": "YOUR_GROUP_NAME", "id": "YOUR_GROUP_ID" } ] } }}
Resposta para falha:
{ "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"] } ]}
Conceder acesso a um grupo
Aqui está um exemplo de concessão de acesso a um grupo a uma função e uma conta:
mutation { authorizationManagementGrantAccess( grantAccessOptions: { groupId: "YOUR_GROUP_ID" accountAccessGrants: { accountId: YOUR_ACCOUNT_ID roleId: "YOUR_ROLE_ID" } } ) { roles { displayName accountId } }}
Resposta para o sucesso:
{ "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" } ] } }}
Resposta para falha:
{ "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"] } ]}
Encontre um ID de função
Para alguns casos de uso, como conceder acesso a um grupo, você pode precisar de um ID de função: o ID numérico que representa essa função no New Relic.
Aqui estão alguns IDs para nossas funções padrão e configurações de administração:
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
Aqui está uma consulta para encontrar o ID de uma função personalizada:
{ actor { organization { authorizationManagement { authenticationDomains(id: "YOUR_AUTHENTICATION_DOMAIN_ID") { authenticationDomains { groups { groups { displayName id roles { roles { roleId name } } } } } } } } }}
Revogar concessões do grupo
Aqui está um exemplo de remoção de acesso de um grupo:
mutation { authorizationManagementRevokeAccess( revokeAccessOptions: { accountAccessGrants: { accountId: YOUR_ACCOUNT_ID roleId: "YOUR_ROLE_ID" } groupId: "YOUR_GROUP_ID" } ) { roles { accountId displayName } }}
Resposta para o sucesso:
{ "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" } ] } }}