役割を管理

Directory API を使用すると、 ロールベース アクセス制御(RBAC) を使用して、Google Workspace ドメイン内の機能へのアクセスを管理できます。新しい カスタム ロール権限付きで使用して、管理者アクセスを 事前定義ロールもあります。ロールを割り当てるには ユーザーまたはセキュリティ グループに対してのみです。このガイドでは、Compute Engine インスタンスで 基本的なロールに関連するタスクを実行できます。

Directory API で使用される一般的な用語のリストを以下に示します。 Google Workspace 内の RBAC に関する

権限
特定のロールでタスクやオペレーションを実行するために必要な Google Workspace ドメインです。で表される Privilege リソース。そこで、 このリソースに関連付けられた永続データはありません。
職務
そのロールを持つエンティティに特定の権限を付与するための権限の集合 特定のタスクや操作を実行できますで表される Role リソース。
ロールの割り当て
ユーザーまたはグループに割り当てられた特定のロールのレコード。代表者 RoleAssignment 説明します。
セキュリティ グループ
特定の種類の Cloud Identity グループ 組織へのアクセス制御に使用される 説明します。セキュリティ グループには、個々のユーザーとグループの両方を含めることができます。

ロールとロールの割り当ての上限

作成できるカスタムロールやロールの割り当ては限られているため、 上限に近づいている場合は、統合するか削除して上限を超えないようにする必要があります。 できます。ロールとロールの割り当てには次の制限があります。

  • 組織全体で最大 750 個のカスタムロールを作成できます。
  • 各ロールに最大 1,000 個のロールの割り当てを 組織部門(OU)。この場合、ルート組織は部門とみなされます。 たとえば、ルート組織に 600 個のロールと、700 個のロールを 定義した別の組織部門(会社の部門など)内に移動することもできます。 Google Workspace の既定の管理者ロールはすべて、デフォルトで 組織全体のスコープです詳細: 組織部門単位で割り当てることができます

ロールとロールの割り当てには、グループに対して次の制限があります。

  • 特権管理者以外の任意のロールを割り当てることができます。
  • 組織部門全体でグループに設定できるロールの割り当ては、合計で 250 個までです。 割り当てることができます
  • このグループは、組織内のセキュリティ グループである必要があります。
  • グループ メンバーを組織内のユーザーに限定することをおすすめします。マイページ 組織外のユーザーも追加できますが、 ロールの権限を取得できない可能性があります。詳しくは、 グループ メンバーを制限する。 ### グループへのロールの割り当て

1 つの組織部門に 1, 000 個を超えるロールを割り当てる必要がある場合は、 セキュリティ グループに追加し、そのグループにロールを割り当てます。グループの役割 割り当てには追加の制限があります。詳しくは、 詳しくは、管理者用ヘルプセンターをご覧ください。

Google 管理コンソールのロールから権限へのマッピング

権限にアクセスするユーザーにロールを割り当てるには、 付与する必要があるため、特定の追加の権限が必要となる場合があります。 付与されています。たとえば、Google Chat で他のユーザーを 付与されているのは、USERS_CREATE 権限だけではありません。 USERS_UPDATEORGANIZATION_UNITS_RETRIEVE も必須 できます。次の表に、管理コンソールと ユーザーとリソースの管理に必要な権限の付与を 組織部門です。

管理コンソールの機能 必要な権限
組織部門 - 読み取り ORGANIZATION_UNITS_RETRIEVE
組織部門 - 作成 ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_CREATE
組織部門 - 更新 ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_UPDATE
組織部門 - 削除 ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_DELETE
組織部門 ORGANIZATION_UNITS_ALL
ユーザー - 読み取り USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
ユーザー - 作成 USERS_CREATE + USERS_UPDATE + ORGANIZATION_UNITS_RETRIEVE
ユーザー - 更新 USERS_UPDATE + ORGANIZATION_UNITS_RETRIEVE
ユーザー - ユーザーの移動 USERS_MOVE + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
ユーザー - ユーザー名の変更 USERS_ALIAS + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
ユーザー - パスワードの再設定 USERS_RESET_PASSWORD + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
ユーザー - パスワードの強制変更 USERS_FORCE_PASSWORD_CHANGE + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
ユーザー - エイリアスの追加/削除 USERS_ADD_NICKNAME + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
ユーザー - ユーザーの停止 USERS_SUSPEND + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
グループ GROUPS_ALL
セキュリティ - ユーザー セキュリティの管理 USER_SECURITY_ALL + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE

ユースケースの例

始める前に

認証と認可 手順をご案内します。

ドメインの権限のリストを取得する

ドメインでサポートされている権限のページ分けされたリストを取得するには、 privileges.list() メソッドを呼び出します。

  • 所有するドメインで権限を取得している管理者は、 お客様 ID として my_customer

  • 販売パートナーが顧客の権限を取得している場合は 顧客 ID によって返されたお客様 ID を user オペレーションで定義されます。

リクエスト

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles/ALL/privileges

レスポンス

成功すると、レスポンスとして HTTP 200 ステータスが返されます。 提供します。また、 ドメインでサポートされている権限が返されます。

{
  "kind": "admin\#directory\#privileges",
  "etag": ...,
  "items": [
    {
      "kind": "admin\#directory\#privilege",
      "etag": ...,
      "serviceId": "02afmg282jiquyg",
      "privilegeName": "APP_ADMIN",
      "isOuScopable": false
    },
    {
      "kind": "admin\#directory\#privilege",
      "etag": ...,
      "serviceId": "04f1mdlm0ki64aw",
      "privilegeName": "MANAGE_USER_SETTINGS",
      "isOuScopable": true,
      "childPrivileges": [
        {
          "kind": "admin\#directory\#privilege",
          "etag": ...,
          "serviceId": "04f1mdlm0ki64aw",
          "privilegeName": "MANAGE_APPLICATION_SETTINGS",
          "isOuScopable": true
        }
      ]
    },
    ...
  ]
}

既存のロールを取得する

既存のロールのリストを取得するには、次の GET リクエストを使用して、 「認証」と「認証」で説明されています。 リクエストできます

  • 管理者がドメインでロールを取得する場合は、 お客様 ID として my_customer

  • 販売パートナーがお客様の代わりにロールを取得する場合は、取得したお客様 ID を使用してください。 使用して取得された user オペレーションで定義されます。

リクエスト

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles

レスポンス

成功すると、レスポンスとして HTTP 200 ステータスが返されます。 提供します。また、 ドメインに存在するロールが返されます。

{
  "kind": "admin\#directory\#roles",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/DywA6_jaJCYw-f0lFs2-g17UWe8\"",
  "items": [
    {
      "kind": "admin\#directory\#role",
      "etag": ... ,
      "roleId": "3894208461012993",
      "roleName": "_SEED_ADMIN_ROLE",
      "roleDescription": "Google Workspace Administrator Seed Role",
      "rolePrivileges": [
        {
          "privilegeName": "SUPER_ADMIN",
          "serviceId": "01ci93xb3tmzyin"
        },
        {
          "privilegeName": "ROOT_APP_ADMIN",
          "serviceId": "00haapch16h1ysv"
        },
        {
          "privilegeName": "ADMIN_APIS_ALL",
          "serviceId": "00haapch16h1ysv"
        },
        ...
      ],
      "isSystemRole": true,
      "isSuperAdminRole": true
    },
    {
      "kind": "admin\#directory\#role",
      "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/bTXiZXfuK1NGr_f4paosCWXuHmw\"",
      "roleId": "3894208461012994",
      "roleName": "_GROUPS_ADMIN_ROLE",
      "roleDescription": "Groups Administrator",
      "rolePrivileges": [
        {
          "privilegeName": "CHANGE_USER_GROUP_MEMBERSHIP",
          "serviceId": "01ci93xb3tmzyin"
        },
        {
          "privilegeName": "USERS_RETRIEVE",
          "serviceId": "00haapch16h1ysv"
        },
        {
          "privilegeName": "GROUPS_ALL",
          "serviceId": "00haapch16h1ysv"
        },
        {
          "privilegeName": "ADMIN_DASHBOARD",
          "serviceId": "01ci93xb3tmzyin"
        },
        {
          "privilegeName": "ORGANIZATION_UNITS_RETRIEVE",
          "serviceId": "00haapch16h1ysv"
        }
      ],
      "isSystemRole": true
    },
    ...
  ]
}

すべてのロール割り当てを一覧表示する

直接割り当てられているすべてのロールのページ分けされたリストを取得するには、 roleAssignments.list() メソッドを呼び出します。userKey のエラーが発生した場合、API はページトークンを含む空の結果を返すことがあります。 パラメータが設定されています。ページトークンがなくなるまでページ分割を続行する必要があります。 返されます。

  • 自身のドメインでロールの割り当てを取得する管理者は、 お客様 ID として my_customer

  • ある顧客のロール割り当てが販売パートナーになれば、 顧客 ID によって返されたお客様 ID を user オペレーションで定義されます。

リクエスト

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments

レスポンス

成功すると、レスポンスとして HTTP 200 ステータスが返されます。 提供します。また、 ドメイン内に割り当てられているすべてのロールがレスポンスで返されます。

{
  "kind": "admin\#directory\#roleAssignment",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
  "roleAssignmentId:"3894208461013211",
  "assignedTo:"100662996240850794412",
  "assigneeType:"user",
  "scopeType:"CUSTOMER",
}

すべての間接ロール割り当てを一覧表示する

間接的役割を含むすべてのロールの割り当てについて、ページ分けされたリストを取得する ユーザーに割り当てられている場合は、 roleAssignments.list() メソッドを呼び出します。

API は、ページトークンを含む空の結果を返すことがあります。続行してください ページトークンが返されなくなるまでページ分割が行われます。

  • 自身のドメインでロールの割り当てを取得する管理者は、 お客様 ID として my_customer

  • ある顧客のロール割り当てが販売パートナーになれば、 顧客 ID によって返されたお客様 ID を user オペレーションで定義されます。

  • USER_KEY は、サービスを識別する値に置き換えます。 API リクエスト内で識別されます。詳細については、users.get をご覧ください。

リクエスト

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments?userKey=USER_KEY&includeIndirectRoleAssignments=true

レスポンス

成功すると、レスポンスとして HTTP 200 ステータスが返されます。 提供します。また、 ステータス コードが返されると、レスポンスはドメイン内に割り当てられているすべてのロールと、 assigneeTypeuser または group の場合:

{
  "kind": "admin\#directory\#roleAssignment",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
  "roleAssignmentId:"3894208461013211",
  "assignedTo:"100662996240850794412",
  "assigneeType:"group",
  "scopeType:"CUSTOMER",
}

ロールを作成する

新しいロールを作成するには、次の POST リクエストを使用して、 「認証」と「認証」で説明されています。 リクエストできます。 必要とする権限ごとに privilegeNameserviceId を追加 付与されることになります。リクエストとレスポンスのプロパティについては、API リファレンスをご覧ください。

リクエスト

POST https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles

{
  "roleName": "My New Role",
  "rolePrivileges": [
    {
      "privilegeName": "USERS_ALL",
      "serviceId": "00haapch16h1ysv"
    },
    {
      "privilegeName": "GROUPS_ALL",
      "serviceId": "00haapch16h1ysv"
    }
  ]
}

レスポンス

成功すると、レスポンスとして HTTP 200 ステータスが返されます。 提供します。また、 ステータス コードが検出されると、レスポンスは新しいロールのプロパティを返します。

{
  "kind": "admin\#directory\#role",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/uX9tXw0qyijC9nUKgCs08wo8aEM\"",
  "roleId": "3894208461013031",
  "roleName": "My New Role",
  "rolePrivileges": [
    {
      "privilegeName": "GROUPS_ALL",
      "serviceId": "00haapch16h1ysv"
    },
    {
      "privilegeName": "USERS_ALL",
      "serviceId": "00haapch16h1ysv"
    }
  ]
}

ロールの割り当てを作成する

ロールを割り当てるには、次の POST メソッドを使用して、権限付与を含めます。 説明 リクエストを承認する

リクエスト

POST https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments

{
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER"
}

レスポンス

成功すると、レスポンスとして HTTP 200 ステータスが返されます。 提供します。また、 ステータス コードが検出されると、レスポンスは新しいロールの割り当てのプロパティを返します。

{
  "kind": "admin\#directory\#roleAssignment",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
  "roleAssignmentId": "3894208461013211",
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER"
}

条件を指定してロールの割り当てを作成する

特定の条件を満たすアクションを実行するロールを付与できます。現在、 次の 2 つの条件のみがサポートされています。

  • セキュリティ グループにのみ適用
  • セキュリティ グループには適用されません

condition が設定されている場合は、リソースの作成時にのみ 条件が満たされますcondition が空の場合、ロール(roleId)は次のようになります。 スコープ(scopeType)でアクター(assignedTo)に無条件で適用されます。

ユーザーにロールを割り当てるには、次の POST メソッドを使用し、 認可については、 承認 リクエストできます

ユーザーの user_id を含む JSON 本文を追加します。これは次から取得できます。 users.get()roleId既存のロールを取得するcondition で説明されています。「 2 つの条件文字列をそのまま使用する必要があります。 グループ エディタとグループ リーダーでのみ機能します。 既定の管理者ロール。 これらの条件は Cloud IAM の条件の構文

リクエスト

セキュリティ グループにのみ適用
POST https://admin.googleapis.com/admin/directory/v1.1beta1/customer/customer_id/roleassignments

{
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER",
  "condition": "api.getAttribute('cloudidentity.googleapis.com/groups.labels',
    []).hasAny(['groups.security']) && resource.type ==
    'cloudidentity.googleapis.com/Group'"
}
セキュリティ グループには適用されません
POST https://admin.googleapis.com/admin/directory/v1.1beta1/customer/customer_id/roleassignments

{
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER",
  "condition": "!api.getAttribute('cloudidentity.googleapis.com/groups.labels',
    []).hasAny(['groups.security']) && resource.type ==
    'cloudidentity.googleapis.com/Group'"
}

レスポンス

成功すると、レスポンスとして HTTP 200 ステータスが返されます。 提供します。また、 ステータス コードが検出されると、レスポンスは新しいロールの割り当てのプロパティを返します。

{
  "kind": "admin\#directory\#roleAssignment",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
  "roleAssignmentId": "3894208461013211",
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER",
  "condition": "!api.getAttribute('cloudidentity.googleapis.com/groups.labels',
    []).hasAny(['groups.security']) && resource.type ==
    'cloudidentity.googleapis.com/Group'"
}