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" } ] } },ロールを作成する
カスタム ロールを作成する前に、そのロールに割り当てる権限を特定する必要があります。
権限IDを取得する
アカウント スコープのアクセス許可のリストを取得するには、次のクエリを使用します。
query { customerAdministration { permissions { items { category feature id product subsetIds } nextCursor } }}組織をスコープとする権限の場合は、代わりに次のクエリを実行します。
query { customerAdministration { permissions(filter: { scope: { eq: "organization" } }) { items { category feature id product subsetIds } nextCursor } }}次のフィールドに注意してください。
items: 権限オブジェクトの配列。各オブジェクトには次の属性が含まれます。category: (文字列) 権限が属するカテゴリまたはグループ。feature: (文字列) 権限が関連付けられている特定の機能。id: (文字列) 各権限の一意の識別子。product: (文字列) 権限が適用される製品。subsetIds: (配列) サブセットまたは関連する権限を表す ID のリスト。
カスタムロールを作成する
新しいロールに割り当てる各権限の一意の識別子を取得したら、次のミューテーションを使用してロールを作成します。アカウント、組織、エンティティ レベルの 3 つの異なるスコープでロールを作成できます。作成するロールのタイプは、割り当てる権限の範囲と一致する必要があります。
アカウントスコープのロール
mutation { customRoleCreate( container: { id: "YOUR_ORGANIZATION_ID", type: "ORGANIZATION" } name: "MY CUSTOM ACCOUNT ROLE" permissionIds: [1, 2, 3] scope: "account" ) { id }}組織スコープのロール
mutation { customRoleCreate( container: { id: "YOUR_ORGANIZATION_ID", type: "ORGANIZATION" } name: "MY CUSTOM ORGANIZATION ROLE" permissionIds: [4, 5, 6] scope: "organization" ) { id }}エンティティスコープのロール
mutation { customRoleCreate( container: { id: "YOUR_ORGANIZATION_ID", type: "ORGANIZATION" } name: "MY CUSTOM ENTITY ROLE" permissionIds: [7, 8, 9] scope: "entity" ) { id }}パラメーター
container:id: (文字列) 組織の一意の識別子。YOUR_ORGANIZATION_ID実際の組織 ID に置き換えます。type: (文字列) コンテナの種類。現在サポートされているタイプは"ORGANIZATION"のみです。
name: (文字列) カスタム ロールに割り当てられた名前。permissionIds: (配列) カスタム ロールに割り当てられた機能を表す権限 ID のリスト。上記の権限クエリから取得した ID を使用します。scope: (文字列) ロールの権限が適用されるレベル。サポートされる値:"account": ロール権限はアカウントレベルで適用されます"organization": 役割権限は組織レベルで適用されます"entity": ロール権限はエンティティレベルで適用されます
レスポンス
id: 新しく作成されたカスタム ロールの一意の ID を返します。重要
- ミューテーションを実行する前に、
YOUR_ORGANIZATION_ID特定の組織 ID に置き換えます。 - 例
permissionIds、権限クエリから取得した実際の権限 ID に置き換えます。 - 使用する権限 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"] } ]}グループまたはユーザーにアクセスを許可する
アクセス許可は、グループまたはユーザーをロールに接続し、アクセスできる内容を定義します。アクセス許可を作成すると、ロールで定義され、特定の対象 (組織、アカウント、エンティティ、またはその他のグループ) に適用されるアクセス許可がユーザーまたはグループに付与されます。
アクセス許可の受信者を指定するには:
- ユーザーの場合:
idでgrantee問題を使用し、type: USER - グループの場合:
granteeをgroupId: "YOUR_GROUP_ID"
アカウントスコープの付与
アカウント スコープのロールへのアクセスを許可する例を次に示します。
mutation { authorizationManagementGrantAccess( grantAccessOptions: { accountAccessGrants: { accountId: YOUR_ACCOUNT_ID dataAccessPolicyId: "YOUR_DATA_ACCESS_POLICY_ID" roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { name } }}組織規模の助成金
組織スコープのロールにアクセス権を付与する例を次に示します。
mutation { authorizationManagementGrantAccess( grantAccessOptions: { organizationAccessGrants: { roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { name } }}エンティティスコープの付与
エンティティ スコープのロールへのアクセスを許可する例を次に示します。
mutation { authorizationManagementGrantAccess( grantAccessOptions: { entityAccessGrants: { entity: { id: "YOUR_ENTITY_ID", type: "YOUR_ENTITY_TYPE" } roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { name } }}グループスコープの付与
グループスコープのロールへのアクセスを許可する例を次に示します。
mutation { authorizationManagementGrantAccess( grantAccessOptions: { groupAccessGrants: { groupId: "YOUR_TARGET_GROUP_ID" roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { name } }}回答例
成功への対応:
{ "data": { "authorizationManagementGrantAccess": { "accessGrants": [ { "id": "ACCESS_GRANT_ID" } ], "roles": [ { "name": "ROLE_NAME" } ] } }}失敗への対応:
{ "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 を指定したauthorizationManagementUpdateAccessミューテーションを使用します。
重要
アクセス許可の更新は現在、アカウント スコープのアクセス許可に対してのみ可能です。
アカウント アクセス許可を更新する例を次に示します。
mutation { authorizationManagementUpdateAccess( updateAccessOptions: { accountAccessGrant: { dataAccessPolicyId: "YOUR_NEW_DATA_ACCESS_POLICY_ID" } ids: "YOUR_ACCESS_GRANT_ID" } ) { grants { id } }}ロール 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 } } } } } } } } }}グループまたはユーザーからの許可を取り消す
アクセス許可を取り消すと、グループまたはユーザーとロール間の接続が削除され、それらのユーザーが持っていた権限が失われます。組織、アカウント、エンティティ、またはグループのレベルで付与を取り消すことができます。取り消す場合は、アクセスを許可する場合と同様に、 grantee (ユーザーの場合) またはgroupId (グループの場合) を使用して、アクセスを失うユーザーを指定します。
アカウントスコープの取り消し
アカウント スコープのロールへのアクセスを取り消す例を次に示します。
mutation { authorizationManagementRevokeAccess( revokeAccessOptions: { accountAccessGrants: { accountId: YOUR_ACCOUNT_ID dataAccessPolicyId: "YOUR_DATA_ACCESS_POLICY_ID" roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { id } }}組織スコープの取り消し
組織スコープのロールへのアクセスを取り消す例を次に示します。
mutation { authorizationManagementRevokeAccess( revokeAccessOptions: { organizationAccessGrants: { roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { id } }}エンティティスコープの取り消し
エンティティ スコープのロールへのアクセスを取り消す例を次に示します。
mutation { authorizationManagementRevokeAccess( revokeAccessOptions: { entityAccessGrants: { entity: { id: "YOUR_ENTITY_ID", type: "YOUR_ENTITY_TYPE" } roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { id } }}グループスコープの取り消し
グループ スコープのロールへのアクセスを取り消す例を次に示します。
mutation { authorizationManagementRevokeAccess( revokeAccessOptions: { groupAccessGrants: { groupId: "YOUR_TARGET_GROUP_ID" roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { id } }}回答例
成功への対応:
{ "data": { "authorizationManagementRevokeAccess": { "accessGrants": [ { "id": "ACCESS_GRANT_ID" } ], "roles": [ { "id": "ROLE_ID" } ] } }}