ロールの管理

Directory API を使用すると、ロールベースのアクセス制御を使用して、ドメイン内の機能へのユーザー アクセスを管理できます。これを行うには、権限とロール、およびユーザーへのロールの割り当てを管理します。

概要

ドメイン内でなんらかのタスクと操作を行うには、権限が必要です。 ロールとは、そのロールを持つユーザーになんらかのタスクまたは操作を実行する(ユーザー サービスや Chrome などのサービスの)権限を付与する権限の集合のことです。ロールの割り当ては、ユーザーに割り当てられた特定のロールの記録です。

このガイドのメソッドは、ドメイン内でのロールの作成や、ユーザーへのロールの割り当てに使用できます。一般的なプロセスでは、次の 3 つのリソースを使用します。

  • privileges リソースは、ドメイン内でサポートされている権限のリストを取得するために使用されます。
  • roles リソースは、新しいロールの作成または既存のロールの取得に使用されます。
  • roleAssignments リソースは、ドメイン内のユーザーにロールを割り当てるために使用されます。

サポートされている権限を取得する

サポートされている権限のリストを取得するには、次の GET リクエストを使用し、リクエストを承認するで説明されている承認を含めます。

  • 自社のドメインで権限を取得する管理者の場合は、顧客 ID に my_customer を使用します。

  • 販売パートナーがいずれかの顧客の権限を取得する場合は、ユーザーを取得するの操作で返された顧客 ID を使用します。

リクエスト

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 を使用します。

リクエスト

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
    },
    ...
  ]
}

ロールを作成する

新しいロールを作成するには、次の 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 メソッドを使用し、リクエストを承認するで説明されている承認を含めます。 JSON 本文では、user_id にユーザー(users.get() で取得)を指定し、roleId は既存のロールを取得するで説明したとおりに指定します。

リクエスト

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 メソッドを使用し、リクエストを承認するで説明されている承認を含めます。

JSON 本文では、ユーザーの user_idusers.get() で取得)、既存のロールを取得するで説明した roleIdcondition を指定します。この 2 つの条件文字列は、下記のとおりに使用する必要があります。この条件は、Groups Editor と Groups Reader の既定の管理者ロールでのみ機能します。 これらの条件は、Cloud IAM Conditions 構文に従います。

リクエスト

セキュリティ グループにのみ適用する

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'"
}

管理コンソールの UI にロールを割り当てる

管理コンソールの UI から権限にアクセスするユーザーにロールを割り当てるには、追加の権限を付与する必要があります。たとえば、管理コンソールの UI で他のユーザーを作成できるようにするには、USERS_CREATE 権限だけでなく、USERS_UPDATE 権限と ORGANIZATION_UNITS_RETRIEVE 権限も必要になります。次の表に、管理コンソールの UI の機能と、ユーザーと組織部門の管理に必要な権限の対応を示します。

管理コンソールの UI の機能 必要な権限
組織部門 - 読み取り 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