NerdGraph APIを使用して、ユーザー グループとそれらのグループがアクセスできる対象を表示および管理できます。UI でこれを行う方法については、 ユーザー管理 UI のドキュメントを参照してください。
NerdGraph を使用してユーザーを作成し、その情報を表示するには、「 NerdGraph でユーザーを管理する」を参照してください。
要件
NerdGraphを介してユーザーとグループを管理するためのいくつかの要件:
- ユーザー グループとロールをカスタマイズするには、Pro またはエンタープライズ エディションが必要です 
- SCIMプロビジョニングを使用している場合:その認証ドメインでは、グループとユーザーはSCIMを介して管理されるため、グループを作成したり、グループにユーザーを追加したりすることはできません。 
- 新しいユーザーモデルのユーザーである必要があります。その他の権限関連の要件: 
始める前に
NerdGraphを使用してユーザーを管理する前に:
- ユーザー管理の概念を十分に理解していることを確認してください
- まだご覧になっていない場合は、 Access management UI をご覧になって、グループとユーザー アクセスの仕組みについての理解を深め、既存のグループについて理解を深めることをお勧めします。 これを実行する前に、作成する必要があるグループ アクセスの計画を作成することをお勧めします。こちらに計画スプレッドシートの例を示します。
- NerdGraphエクスプローラーには、これらのリクエストで使用されるフィールドを定義するドキュメントが組み込まれていることに注意してください。
- NewRelicアカウントへの変更を追跡できることに注意してください。
グループ作成の推奨ワークフロー
これらのクエリとミューテーションはさまざまな方法とさまざまな順序で使用できますが、グループを設定するための一般的なワークフローの 1 つを次に示します。
- ユーザーの情報と利用可能な役割をクエリする:これは、NewRelicで使用しているユーザーと利用可能な役割を確実に理解するための最初の場所として役立ちます。始めたばかりの場合は、まだユーザーを追加していない可能性があり、標準の役割しか持っていない可能性があります。
- オプション: 新しいグループを作成します: Not available if using SCIM provisioning.既存のグループを使用することも、新しいグループを作成することもできます。 グループを作成したら、そのグループにロールとアカウントへのアクセス権を付与する必要があります。 グループ自体では、そのグループ内のユーザーにアクセス権は付与されないことに注意してください。ロールとアカウントが割り当てられている場合にのみ、ユーザーは実際に New Relic にアクセスできます。
- グループへのアクセスを許可する : これは、ロールとアカウントへのグループ アクセスを割り当てるものです。
完了したら、作成したグループにすでにユーザーがいて、そのグループが少なくとも 1 つのロールとアカウントにアクセスできる場合、それらのユーザーは数分以内にアクセスできるようになります (ただし、 EU 地域の New Relic アカウントの場合、これは可能です)。 20分ほどかかります)。ユーザーがまだそのグループに属していない場合 (新しいグループを作成した場合に該当します)、 そのグループにユーザーを追加できます。
クエリ グループ
特定の認証ドメイン内の既存のグループを照会する例を次に示します。
{  actor {    organization {      userManagement {        authenticationDomains(id: "YOUR_AUTHENTICATION_DOMAIN_ID") {          authenticationDomains {            groups {              groups {                displayName                id              }            }          }        }      }    }  }}既存の役割を照会する
ロールに関する情報を返す例を次に示します。
{  actor {    organization {      authorizationManagement {        authenticationDomains {          authenticationDomains {            groups {              groups {                roles {                  roles {                    accountId                    displayName                    id                    name                    organizationId                    type                  }                }              }            }          }        }      }    }  }}結果の例を次に示します。
{  "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"                          }                        ]                      }                    }                  ]                }              }            ]          }        }      }    }  }}ユーザーに問い合わせる
ユーザー情報のクエリ
ユーザーに関する情報をクエリする例を次に示します。
{  actor {    organization {      userManagement {        authenticationDomains {          authenticationDomains {            groups {              groups {                users {                  users {                    id                    email                    name                    timeZone                  }                }              }            }          }        }      }    }  }}結果の例を次に示します。
{  "data": {    "actor": {      "organization": {        "userManagement": {          "authenticationDomains": {            "authenticationDomains": [              {                "groups": {                  "groups": [                    {                      "users": {                        "users": [                          {                            "email": "example@newrelic.com",                            "id": "123456789",                            "name": "Example Relic",                            "timeZone": "Etc/UTC"                          }                        ]                      }                    }                  ]                }              }            ]          }        }      }    }  }}ユーザーのグループメンバーシップをクエリする
ユーザーが所属するグループをクエリする例を次に示します。
{  actor {    organization {      userManagement {        authenticationDomains {          authenticationDomains {            users {              users {                groups {                  groups {                    displayName                  }                }                email              }            }          }        }      }    }  }}応答の例を次に示します。
{  "data": {    "actor": {      "organization": {        "userManagement": {          "authenticationDomains": {            "authenticationDomains": [              {                "users": {                  "users": [                    {                      "email": "pete@example.com",                      "groups": {                        "groups": [                          {                            "displayName": "Admin"                          },                          {                            "displayName": "Basic Sub Account"                          }                        ]                      }                    },ロールを作成する
ロールを作成する例を次に示します。
mutation {  customRoleCreate(    container: { id: "YOUR_ORGANIZATION_ID", type: "ORGANIZATION" }    name: "MY CUSTOM ROLE"    permissionIds: [1, 2, 3]    scope: "account"  ) {    id  }}パラメーター
- container:- id: (文字列) 組織の一意の識別子。- YOUR_ORGANIZATION_ID実際の組織 ID に置き換えます。
- type: (文字列) コンテナの種類。現在サポートされているタイプは- "ORGANIZATION"のみです。
- name: (文字列) カスタム ロールに割り当てられた名前。例:- "MY CUSTOM ROLE"。
 
- permissionIds: (配列) カスタム ロールに割り当てられた機能を表す権限 ID のリスト。 これらの ID がシステム内の有効な権限に対応していることを確認してください。
- scope: (文字列) ロールの権限が適用されるレベル。このインスタンスでは、スコープは- "ACCOUNT"です。
レスポンス
- id: 新しく作成されたカスタム ロールの一意の ID を返します。- 重要- ミューテーションを実行する前に、 YOUR_ORGANIZATION_ID特定の組織 ID に置き換えます。
- 提供されたpermissionIdsが有効であり、付与する権限と一致していることを確認してください。
 
- ミューテーションを実行する前に、 
カスタム ロールを作成する前に、そのロールに割り当てる権限を特定する必要があります。
権限のリストを取得するには、次のクエリを使用します。
mutation {  customerAdministration {    permissions {      items {        category        feature        id        product        subsetIds      }      nextCursor    }  }}これにより、アカウント スコープのアクセス許可が返されます。 組織に限定された権限の場合は、代わりに次のクエリを実行します。
{  customerAdministration {    permissions(filter: { scope: { eq: "organization" } }) {      items {        category        feature        id        product        subsetIds      }      nextCursor    }  }}次のフィールドに注意してください。
- items: 権限オブジェクトの配列。各オブジェクトには次の属性が含まれます。- category: (文字列) 権限が属するカテゴリまたはグループ。
- feature: (文字列) 権限が関連付けられている特定の機能。
- id: (文字列) 各権限の一意の識別子。
- product: (文字列) 権限が適用される製品。
- subsetIds: (配列) サブセットまたは関連する権限を表す ID のリスト。
 
新しいロールに割り当てる各権限の一意の識別子を取得したら、そのロールを作成します。
役割の更新
ロールを更新する例を次に示します。
mutation {  customRoleUpdate(    id: ROLE_ID    name: "MY NEW CUSTOM ROLE NAME"    permissionIds: [4, 5, 6]  ) {    id  }}パラメーター
- id: 変更するカスタム ロールの一意の識別子。- ROLE_IDロールの実際の ID に置き換えます。
- name: カスタム ロールに割り当てる新しい名前。 この例では、- MY NEW CUSTOM ROLE NAMEです。
- permissionIds: このロールに割り当てる権限 ID の配列。 これらの ID が有効であり、実装する予定の権限に対応していることを確認してください。
役割を削除する
ロールを削除する例を次に示します。
mutation {  customRoleDelete(id: ROLE_ID) {    id  }}パラメーター
- id: 削除するロールの一意の識別子。- ROLE_ID、削除するロールの実際の ID に置き換えます。
レスポンス
- id: 削除されたロールの ID を返し、ミューテーションが正常に実行されたことを確認します。
グループを作成する
グループを作成する例を次に示します。
mutation {  userManagementCreateGroup(    createGroupOptions: {      authenticationDomainId: "YOUR_AUTH_DOMAIN_ID"      displayName: "GROUP_DISPLAY_NAME"    }  ) {    group {      displayName      id    }  }}成功した応答:
{  "data": {    "userManagementCreateGroup": {      "group": {        "displayName": "GROUP_DISPLAY_NAME"          "id": "GROUP_ID"      }    }  }}ユーザーグループを更新する
グループを更新する例を次に示します。
mutation {  userManagementUpdateGroup(    updateGroupOptions: {      displayName: "YOUR_UPDATED_GROUP_NAME"      id: "YOUR_GROUP_ID"    }  ) {    group {      id      displayName    }  }}成功への対応:
{  "data": {    "userManagementUpdateGroup": {      "group": {        "displayName": "YOUR_UPDATED_GROUP_NAME",        "id": "GROUP_ID"      }    }  }}失敗への対応:
{  "data": {    "userManagementUpdateGroup": null  },  "errors": [    {      "extensions": {        "errorClass": "SERVER_ERROR"      },      "locations": [        {          "column": 3,          "line": 2        }      ],      "message": "Group could not be found",      "path": ["userManagementUpdateGroup"]    }  ]}グループを削除する
グループを削除する例を次に示します。
mutation {  userManagementDeleteGroup(groupOptions: { id: "YOUR_GROUP_ID" }) {    group {      id    }  }}成功への対応:
{  "data": {    "userManagementDeleteGroup": {      "group": {        "id": "GROUP_ID"      }    }  }}失敗への対応:
{  "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"]    }  ]}グループへのユーザー追加
グループにユーザーを追加する例を次に示します。
mutation {  userManagementAddUsersToGroups(    addUsersToGroupsOptions: {      groupIds: [FIRST_GROUP_ID, SECOND_GROUP_ID]      userIds: [YOUR_USERS_IDS]    }  ) {    groups {      displayName      id    }  }}成功への対応:
{  "data": {    "userManagementAddUsersToGroups": {      "groups": [        {          "displayName": "GROUP_1_NAME",          "id": "GROUP_ID_1"        },        {          "displayName": "GROUP_NAME_2",          "id": "GROUP_ID_2"        }      ]    }  }}失敗への対応:
{  "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"]    }  ]}グループからユーザーを削除する
グループからユーザーを削除する例を次に示します。
mutation {  userManagementRemoveUsersFromGroups(    removeUsersFromGroupsOptions: {      groupIds: [YOUR_GROUP_IDS]      userIds: [YOUR_USER_IDS]    }  ) {    groups {      displayName      id    }  }}成功への対応:
{  "data": {    "userManagementRemoveUsersFromGroups": {      "groups": [        {          "displayName": "YOUR_GROUP_NAME",          "id": "YOUR_GROUP_ID"        }      ]    }  }}失敗への対応:
{  "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"]    }  ]}グループへのアクセスを許可する
ロールとアカウントへのグループ アクセスを許可する例を次に示します。
mutation {  authorizationManagementGrantAccess(    grantAccessOptions: {      groupId: "YOUR_GROUP_ID"      accountAccessGrants: {        accountId: YOUR_ACCOUNT_ID        roleId: "YOUR_ROLE_ID"      }    }  ) {    roles {      displayName      accountId    }  }}成功への対応:
{  "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"        }      ]    }  }}失敗への対応:
{  "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"]    }  ]}ロール ID を検索する
グループへのアクセス許可など、一部のユースケースでは、ロールの ID (New Relic でそのロールを表す数値 ID) が必要になる場合があります。
- 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
カスタム ロールの ID を検索するクエリは次のとおりです。
{  actor {    organization {      authorizationManagement {        authenticationDomains(id: "YOUR_AUTHENTICATION_DOMAIN_ID") {          authenticationDomains {            groups {              groups {                displayName                id                roles {                  roles {                    roleId                    name                  }                }              }            }          }        }      }    }  }}グループからの助成金を取り消す
グループからアクセス権を削除する例を次に示します。
mutation {  authorizationManagementRevokeAccess(    revokeAccessOptions: {      accountAccessGrants: {        accountId: YOUR_ACCOUNT_ID        roleId: "YOUR_ROLE_ID"      }      groupId: "YOUR_GROUP_ID"    }  ) {    roles {      accountId      displayName    }  }}成功への対応:
{  "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"        }      ]    }  }}