• ログイン無料アカウント

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

NerdGraphチュートリアル:ユーザーグループとアクセス許可を管理する

NewRelicのNerdGraphAPIを使用して、ユーザーグループとアクセス許可を表示および管理できます。 UIでこれを行う方法については、 ユーザー管理UIのドキュメントを参照してください。

要件

NerdGraphを介してユーザーとグループを管理するためのいくつかの要件:

  • ProまたはEnterpriseエディションが必要です(Standardエディションの組織はグループを構成したり、許可にアクセスしたりすることはできません)。

  • SCIMプロビジョニングを使用している場合:その認証ドメインでは、グループとユーザーはSCIMを介して管理されるため、グループを作成したり、グループにユーザーを追加したりすることはできません。

  • NewRelicOneユーザーモデルのユーザーである必要があります。その他の権限関連の要件:

    • 必要なユーザータイプ:コアユーザーまたはフルプラットフォームユーザー
    • 必要な役割組織マネージャーまたは認証ドメインマネージャー

始める前に

NerdGraphを使用してユーザーを管理する前に:

  • ユーザー管理の概念を十分に理解していることを確認してください
  • まだ行っていない場合は、組織とアクセスUIを調べて、グループとアクセス許可がどのように機能するかを理解し、既存のアクセス許可を理解するのに役立ちます。
  • 作成する必要のあるグループとアクセス許可について、適切な計画を立ててください。これを事前にスプレッドシートにマッピングしておくと役立つ場合があります。
  • NerdGraphエクスプローラーには、これらのリクエストで使用されるフィールドを定義するドキュメントが組み込まれていることに注意してください。
  • NewRelicアカウントへの変更を追跡できることに注意してください

グループとアクセス許可を作成するための推奨ワークフロー

これらのクエリとミューテーションはさまざまな方法でさまざまな順序で使用できますが、グループとアクセス許可を設定するための一般的なワークフローは次のとおりです。

  1. ユーザーの情報と利用可能な役割クエリする:これは、NewRelicで使用しているユーザーと利用可能な役割を確実に理解するための最初の場所として役立ちます。始めたばかりの場合は、まだユーザーを追加していない可能性があり、標準の役割しか持っていない可能性があります。
  2. オプション:新しいグループを作成しますSCIMプロビジョニングを使用している場合は使用できません。既存のグループを使用することも、新しいグループを作成することもできます。グループを作成したら、アクセス許可を作成して、グループに役割とアカウントへのアクセスを許可する必要があります。グループ自体は、そのグループ内のユーザーにアクセスを許可しないことに注意してください。ユーザーがロールとアカウントにアクセスできるのは、アクセス許可を介してのみです。
  3. アクセス許可を作成する:これは、グループに役割とアカウントへのアクセスを割り当てるものです。

完了したら、作成したグループに既にユーザーがいて、そのグループにアクセス許可がある場合、数分以内にアクセスできるようになります(ただし、 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"
}
]
}
}
}
Copyright © 2022 New Relic Inc.