NewRelicのNerdGraphAPIを使用して、ユーザーグループとアクセス許可を表示および管理できます。 UIでこれを行う方法については、 ユーザー管理UIのドキュメントを参照してください。
要件
NerdGraphを介してユーザーとグループを管理するためのいくつかの要件:
ProまたはEnterpriseエディションが必要です(Standardエディションの組織はグループを構成したり、許可にアクセスしたりすることはできません)。
SCIMプロビジョニングを使用している場合:その認証ドメインでは、グループとユーザーはSCIMを介して管理されるため、グループを作成したり、グループにユーザーを追加したりすることはできません。
新しいユーザーモデルのユーザーである必要があります。その他の権限関連の要件:
始める前に
NerdGraphを使用してユーザーを管理する前に:
- ユーザー管理の概念を十分に理解していることを確認してください
- まだ理解していない場合は、アクセス管理UIを調べて、グループとアクセス許可がどのように機能するかを理解し、既存のアクセス許可を理解することが役立ちます。
- 作成する必要のあるグループとアクセス許可について、適切な計画を立ててください。これを事前にスプレッドシートにマッピングしておくと役立つ場合があります。
- NerdGraphエクスプローラーには、これらのリクエストで使用されるフィールドを定義するドキュメントが組み込まれていることに注意してください。
- NewRelicアカウントへの変更を追跡できることに注意してください。
グループとアクセス許可を作成するための推奨ワークフロー
これらのクエリとミューテーションはさまざまな方法でさまざまな順序で使用できますが、グループとアクセス許可を設定するための一般的なワークフローは次のとおりです。
- ユーザーの情報と利用可能な役割をクエリする:これは、NewRelicで使用しているユーザーと利用可能な役割を確実に理解するための最初の場所として役立ちます。始めたばかりの場合は、まだユーザーを追加していない可能性があり、標準の役割しか持っていない可能性があります。
- オプション:新しいグループを作成します: SCIMプロビジョニングを使用している場合は使用できません。既存のグループを使用することも、新しいグループを作成することもできます。グループを作成したら、アクセス許可を作成して、グループに役割とアカウントへのアクセスを許可する必要があります。グループ自体は、そのグループ内のユーザーにアクセスを許可しないことに注意してください。ユーザーがロールとアカウントにアクセスできるのは、アクセス許可を介してのみです。
- アクセス許可を作成する:これは、グループに役割とアカウントへのアクセスを割り当てるものです。
完了したら、作成したグループに既にユーザーがいて、そのグループにアクセス許可がある場合、数分以内にアクセスできるようになります(ただし、 EUリージョンのNew Relicアカウントの場合、これには最大20分かかる場合がありますとか、ぐらい)。ユーザーがまだそのグループに属していない場合(これは、新しいグループを作成したばかりの場合に当てはまります)、 そのグループにユーザーを追加できます。
既存の役割を照会する
ロールに関する情報を返す例を次に示します。
{ 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" } ] } } ] } } ] } } } } }}
グループを作成する
グループを作成する例を次に示します。
mutation {
userManagementCreateGroup(createGroupOptions: {authenticationDomainId: "YOUR_AUTH_DOMAIN", 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: "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: "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: [GROUP_ID_1, GROUP_ID_2], 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: "ACCOUNT_ID", roleId: "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" ] } ]}
グループからの助成金を取り消す
グループからのアクセス許可を取り消す例を次に示します。
mutation {
authorizationManagementRevokeAccess(revokeAccessOptions: {accountAccessGrants: {accountId: "ACCOUNT_ID", roleId: "ROLE_ID"}, groupId: "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" } ] } }}