Identity and Access Management(IAM)ポリシー。Google Cloud リソースのアクセス制御を指定します。
Policy
は bindings
をまとめたものです。binding
は、1 つ以上の members
(プリンシパル)を 1 つの role
にバインドします。プリンシパルは、ユーザー アカウント、サービス アカウント、Google グループ、ドメイン(G Suite など)です。role
は権限のリストに名前を付けたものです。role
はそれぞれ、IAM 事前定義ロールまたはユーザー作成のカスタムロールにできます。
Google Cloud リソースの種類によっては、binding
は condition
を指定できます。これは、式が true
と評価された場合にのみリソースへのアクセスを許可する論理式です。条件は、リクエスト、リソース、またはその両方の属性に基づいて制約を追加できます。IAM ポリシーで条件をサポートするリソースについては、IAM のドキュメントをご覧ください。
JSON の例:
{
"bindings": [
{
"role": "roles/resourcemanager.organizationAdmin",
"members": [
"user:mike@example.com",
"group:admins@example.com",
"domain:google.com",
"serviceAccount:my-project-id@appspot.gserviceaccount.com"
]
},
{
"role": "roles/resourcemanager.organizationViewer",
"members": [
"user:eve@example.com"
],
"condition": {
"title": "expirable access",
"description": "Does not grant access after Sep 2020",
"expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')",
}
}
],
"etag": "BwWWja0YfJA=",
"version": 3
}
YAML の例:
bindings:
- members:
- user:mike@example.com
- group:admins@example.com
- domain:google.com
- serviceAccount:my-project-id@appspot.gserviceaccount.com
role: roles/resourcemanager.organizationAdmin
- members:
- user:eve@example.com
role: roles/resourcemanager.organizationViewer
condition:
title: expirable access
description: Does not grant access after Sep 2020
expression: request.time < timestamp('2020-10-01T00:00:00.000Z')
etag: BwWWja0YfJA=
version: 3
IAM とその機能についての説明は、IAM のドキュメントをご覧ください。
JSON 表現 |
---|
{ "version": integer, "bindings": [ { object ( |
フィールド | |
---|---|
version |
ポリシーの形式を指定します。 有効な値は 条件付きロール バインディングに影響するオペレーションでは、バージョン
重要: IAM Conditions を使用する場合、 ポリシーに条件が指定されていない場合、ポリシーに対する操作で有効なバージョンの指定、またはフィールド設定の解除ができます。 IAM ポリシーで条件をサポートするリソースについては、IAM のドキュメントをご覧ください。 |
bindings[] |
1 つの |
auditConfigs[] |
このポリシーに対する Cloud Audit Logging の監査ログを指定します。 |
etag |
重要: IAM Conditions を使用する場合、 Base64 でエンコードされた文字列。 |
Binding
members
(プリンシパル)を role
に関連付けます。
JSON 表現 |
---|
{
"role": string,
"members": [
string
],
"condition": {
object ( |
フィールド | |
---|---|
role |
|
members[] |
Google Cloud リソースへのアクセスをリクエストするプリンシパルを指定します。
|
condition |
このバインディングに関連付けられている条件。 条件が 条件が IAM ポリシーで条件をサポートするリソースについては、IAM のドキュメントをご覧ください。 |
Expr
Common Expression Language(CEL)構文のテキスト式を表します。CEL は C に似た式言語です。CEL の構文とセマンティクスは、https://github.com/google/cel-spec に記載されています。
例(比較):
title: "Summary size limit"
description: "Determines if a summary is less than 100 chars"
expression: "document.summary.size() < 100"
例(同等):
title: "Requestor is owner"
description: "Determines if requestor is the document owner"
expression: "document.owner == request.auth.claims.email"
例(論理):
title: "Public documents"
description: "Determine whether the document should be publicly visible"
expression: "document.type != 'private' && document.type != 'internal'"
例(データ操作):
title: "Notification string"
description: "Create a notification string with a timestamp."
expression: "'New message received at ' + string(document.create_time)"
式内で参照できる正確な変数と関数は、式を評価するサービスによって決定されます。詳細については、サービスのドキュメントをご覧ください。
JSON 表現 |
---|
{ "expression": string, "title": string, "description": string, "location": string } |
フィールド | |
---|---|
expression |
Common Expression Language 構文による式のテキスト表現。 |
title |
省略可。式のタイトル。式の目的を説明する短い文字列です。たとえば、式を入力できる UI でこれを使用します。 |
description |
省略可。式の説明。式を説明する長いテキストです。たとえば、UI で式にカーソルを合わせたときに表示されます。 |
location |
省略可。エラー報告用に式の場所を示す文字列。たとえば、ファイル名とファイル内の位置です。 |
AuditConfig
サービスの監査構成を指定します。この構成により、ログに記録される権限タイプとロギングから除外される ID が決まります。AuditConfig には 1 つ以上の AuditLogConfig が必要です。
allServices
と特定のサービスの両方に AuditConfig がある場合、2 つの AuditConfig を合わせたものがそのサービスに使用されます。つまり各 AuditConfig で指定された log_types が有効になり、各 AuditLogConfig にある exemptedMembers が除外されます。
複数の AuditConfig を使用したポリシーの例:
{
"auditConfigs": [
{
"service": "allServices",
"auditLogConfigs": [
{
"logType": "DATA_READ",
"exemptedMembers": [
"user:jose@example.com"
]
},
{
"logType": "DATA_WRITE"
},
{
"logType": "ADMIN_READ"
}
]
},
{
"service": "sampleservice.googleapis.com",
"auditLogConfigs": [
{
"logType": "DATA_READ"
},
{
"logType": "DATA_WRITE",
"exemptedMembers": [
"user:aliya@example.com"
]
}
]
}
]
}
sampleservice の場合、このポリシーを使用すると、DATA_READ、DATA_WRITE、ADMIN_READ のロギングが有効になります。また、DATA_READ ロギングから jose@example.com
が除外され、DATA_WRITE ロギングから aliya@example.com
が除外されます。
JSON 表現 |
---|
{
"service": string,
"auditLogConfigs": [
{
object ( |
フィールド | |
---|---|
service |
監査ログに関して有効になるサービスを指定します。例: |
auditLogConfigs[] |
権限のタイプごとのログの構成。 |
AuditLogConfig
特定の権限タイプをロギングする場合の構成を指定します。次に例を示します。
{
"auditLogConfigs": [
{
"logType": "DATA_READ",
"exemptedMembers": [
"user:jose@example.com"
]
},
{
"logType": "DATA_WRITE"
}
]
}
DATA_READ と DATA_WRITE のロギングが有効になり、jose@example.com は DATA_READ のロギングから除外されます。
JSON 表現 |
---|
{
"logType": enum ( |
フィールド | |
---|---|
logType |
この構成で有効になるログタイプです。 |
exemptedMembers[] |
このタイプの権限に対してログが発生しない ID を指定します。 |
LogType
ロギングを有効にする権限タイプの一覧です。管理者の書き込みは常にロギングされますが、構成はできません。
列挙型 | |
---|---|
LOG_TYPE_UNSPECIFIED |
デフォルト。これを使用することはありません。 |
ADMIN_READ |
管理者読み取り。例: CloudIAM getIamPolicy |
DATA_WRITE |
データ書き込み。例: CloudSQL Users create |
DATA_READ |
データ読み取り。例: CloudSQL Users list |