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_UPDATE
と ORGANIZATION_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
ステータスが返されます。
提供します。また、
ステータス コードが返されると、レスポンスはドメイン内に割り当てられているすべてのロールと、
assigneeType
が user
または group
の場合:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId:"3894208461013211",
"assignedTo:"100662996240850794412",
"assigneeType:"group",
"scopeType:"CUSTOMER",
}
ロールを作成する
新しいロールを作成するには、次の POST
リクエストを使用して、
「認証」と「認証」で説明されています。
リクエストできます。
必要とする権限ごとに privilegeName
と serviceId
を追加
付与されることになります。リクエストとレスポンスのプロパティについては、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
メソッドを使用して、権限付与を含めます。
説明
リクエストを承認する。
ユーザーにロールを割り当てるには、ユーザーの
user_id
を含む JSON 本文を追加します。 できます。users.get()
、roleId
(詳細については、 既存のロールを取得する)とscope_type
を作成します。サービス アカウントにロールを割り当てるには、 サービス アカウントの
unique_id
( Identity and Access Management(IAM))、roleId
(詳細については、 既存のロールを取得する)、scope_type
をご覧ください。グループにロールを割り当てるには、
group_id
を含む JSON 本文を追加します。 このグループは、groups.get()
roleId
(詳細については、 既存のロールを取得する)、scope_type
です。
リクエスト
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'"
}