- JSON 表現
- バインディング
- Expr
- AuditConfig
- AuditLogConfig
- LogType
- ルール
- アクション
- Condition
- Attr
- Attr
- オペレーター
- LogConfig
- CounterOptions
- CustomField
- DataAccessOptions
- LogMode
- CloudAuditOptions
- LogName
- AuthorizationLoggingOptions
- PermissionType
- PermissionType
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 の監査ログを指定します。 |
rules[] |
複数のルールを指定した場合、それらのルールは次のように適用されます。すべての一致 LOG ルールが常に適用されます。- いずれかの DENY/DENY_WITH_LOG ルールが一致する場合は、権限が拒否されます。1 つ以上の一致ルールでログが必要な場合は、ログが適用されます。- それ以外の場合、ALLOW/ALLOW_WITH_LOG ルールのいずれかが一致すれば、権限が付与されます。1 つ以上の一致ルールでログが必要な場合は、ログが適用されます。- それ以外の場合、適用されるルールがなければ、権限は拒否されます。 |
etag |
重要: IAM Conditions を使用する場合、 Base64 でエンコードされた文字列。 |
Binding
members
(プリンシパル)を role
に関連付けます。
JSON 表現 |
---|
{
"role": string,
"members": [
string
],
"condition": {
object ( |
フィールド | |
---|---|
role |
IAM ロールと権限の概要については、IAM のドキュメントをご覧ください。使用可能な事前定義ロールのリストについては、こちらをご覧ください。 |
members[] |
Google Cloud リソースへのアクセスをリクエストするプリンシパルを指定します。
|
condition |
このバインディングに関連付けられている条件。 条件が 条件が IAM ポリシーで条件をサポートするリソースについては、IAM のドキュメントをご覧ください。 |
bindingId |
|
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 を指定します。 |
ignoreChildExemptions |
|
LogType
ロギングを有効にする権限タイプの一覧です。管理者の書き込みは常にロギングされますが、構成はできません。
列挙型 | |
---|---|
LOG_TYPE_UNSPECIFIED |
デフォルト。これを使用することはありません。 |
ADMIN_READ |
管理者読み取り。例: CloudIAM getIamPolicy |
DATA_WRITE |
データ書き込み。例: CloudSQL Users create |
DATA_READ |
データ読み取り。例: CloudSQL Users list |
ルール
ポリシーで適用されるルール。
JSON 表現 |
---|
{ "description": string, "permissions": [ string ], "action": enum ( |
フィールド | |
---|---|
description |
人が読める形式のルールの説明。 |
permissions[] |
権限は、' |
action |
必須 |
in[] |
1 つ以上の 'in' 句が指定され、そのエントリの 1 つ以上に PRINCIPAL/AUTHORITY_SELECTOR がある場合、ルールが一致します。 |
notIn[] |
1 つ以上の 'notIn' 句が指定され、そのエントリのいずれにも PRINCIPAL/AUTHORITY_SELECTOR がない場合、ルールが一致します。 |
conditions[] |
満たされる必要がある追加の制限。ルールが一致するためには、すべての条件を満たす必要があります。 |
logConfig[] |
LOG アクションに一致するすべてのエントリで CheckPolicy の発信者に返される構成。 |
アクション
ルール アクションの種類。
列挙型 | |
---|---|
NO_ACTION |
デフォルトのアクションなし。 |
ALLOW |
1 つ以上のエントリで条件が一致した場合にアクセスを許可します。 |
ALLOW_WITH_LOG |
1 つ以上のエントリで条件が一致した場合にアクセスを許可し、発信者は戻された log_configs ごとにリクエストをログに記録するよう保証します。 |
DENY |
1 つ以上のエントリで条件が一致した場合にアクセスを拒否します。 |
DENY_WITH_LOG |
1 つ以上のエントリで条件が一致した場合にアクセスを拒否し、発信者は戻された log_configs ごとにリクエストをログに記録するよう保証します。 |
LOG |
一致する「エントリ」が IAM.Check の呼び出し元にログの生成を指示します。 |
Condition
一致する必要のある条件。
JSON 表現 |
---|
{ "op": enum ( |
フィールド | |
---|---|
op |
対象に適用する演算子。 |
values[] |
条件のオブジェクト。 |
共用体フィールド Subject 。条件式の左辺。Subject は次のいずれかになります。 |
|
iam |
IAM システムから提供される、信頼できる属性。 |
sys |
リソースを所有し、アクセス制御に IAM システムを使用しているサービスにより提供される信頼できる属性。 |
svc |
サービスにより提供される信頼できる属性。 |
Attr
属性の種類。
列挙型 | |
---|---|
NO_ATTR |
デフォルトの属性の種類なし。 |
AUTHORITY |
プリンシパルか(もしあれば)権限セレクタ。 |
ATTRIBUTION |
プリンシパル(権限セレクタが存在する場合でも)。承認ではなく、属性のみに使用する必要があります。 |
SECURITY_REALM |
IAMContext 内のセキュリティ レルム(go/security-realms)。IN とともに使用すると、条件は「リクエストのレルムのいずれかが指定された値のいずれかに一致する」ことを示し、NOT_IN とともに使用すると、「どのレルムも指定された値のいずれにも一致しない」ことを示します。指定できる値: - 'self:campus'(同じキャンパス内のクライアント) - 'self:metro'(同じ大都市圏内のクライアント) - 'self:cloud-region' (同じクラウド リージョンにあるクライアントからの接続を許可する) - 'self:prod-region'(同じ本番環境リージョンにあるクライアントからの接続を許可する) - 'guardians'(ガーディアン レルムからの接続を許可する。詳細については、go/security-realms-glossary#guardian をご覧ください) - 'self' [非推奨](つまり、現在はキャンパス サイズであるが、保証されている訳ではない同じセキュリティ レルムにあるクライアントからの接続を許可する) - レルム(例: 'campus-abc') - レルムグループ(例: 'realms-for-borg-cell-xx'、go/realm-groups を参照)一致は、RealmAclRep オブジェクト(go/realm-acl-howto)によって実行されるレルムグループ メンバーシップ チェックによって決定されます。レルムがないことを条件にアクセス権を付与することはできません。このため、レルム条件は正のコンテキスト(例: ALLOW/IN または DENY/NOT_IN)でのみ使用できます。 |
APPROVER |
このリクエストの承認者(依頼者とは異なる)。IN とともに使用すると、条件は、リクエストに関連付けられている承認者の 1 人が指定のプリンシパルと一致するか、または指定されたグループのメンバーであることを示します。承認者は追加のアクセス権のみを付与できます。このため、厳密な正のコンテキスト(たとえば、ALLOW/IN または DENY/NOT_IN)でのみ使用されます。 |
JUSTIFICATION_TYPE |
このリクエストとともに指定された理由のタイプ。文字列値は、security.credentials.JustificationType の列挙型名と一致する必要があります(例: 「MANUAL_STRING」)。理由がないことを条件にアクセス権を付与することはできません。このため、理由条件は、正のコンテキスト(例: ALLOW/IN または DENY/NOT_IN)でのみ使用できます。 複数の理由(例: Buganizer ID と手動で入力された理由)が存在することは正常な状態で、サポートされています。 |
CREDENTIALS_TYPE |
このリクエストとともに指定された認証情報のタイプ。文字列値は security_loas_l2.CredentialsType の列挙型名と一致する必要があります。現在、CREDS_TYPE_EMERGENCY のみがサポートされています。認証情報タイプがないことを条件にアクセス権を付与することはできません。このため、この条件は、正のコンテキスト(例: ALLOW/IN または DENY/NOT_IN)でのみ使用できます。 |
CREDS_ASSERTION |
試験運用版 - 使用しないでください。 この条件は、正のコンテキスト(例: ALLOW/IN または DENY/NOT_IN)でのみ使用できます。 |
Attr
属性の種類。
列挙型 | |
---|---|
NO_ATTR |
デフォルトの属性の種類なし。 |
REGION |
リソースの地域 |
SERVICE |
サービス名 |
NAME |
リソース名 |
IP |
呼び出し元の IP アドレス |
Operator
条件演算子の種類。
列挙型 | |
---|---|
NO_OP |
無演算(デフォルト)。 |
EQUALS |
非推奨。代わりに IN を使用してください。 |
NOT_EQUALS |
非推奨。代わりに NOT_IN を使用してください。 |
IN |
サブジェクト(セットの場合は任意の要素)が指定値のいずれかと一致すると、条件が true になります。 |
NOT_IN |
サブジェクト(セットの場合は各要素)が指定値のいずれにも一致しない場合、条件が true になります。 |
DISCHARGED |
前提条件が解消されています。 |
LogConfig
呼び出し側が書き込む必要があるログの種類を指定します。
JSON 表現 |
---|
{ // Union field |
フィールド | |
---|---|
共用体フィールド type 。type (次のいずれかに限定)を設定する必要があります。 |
|
counter |
カウンタ オプション。 |
dataAccess |
データアクセスのオプション。 |
cloudAudit |
クラウド監査オプション |
CounterOptions
指定された指標名とフィールド名を使用して streamz カウンタをインクリメントします。
指標名は、'/' で始め、通常は小文字のみを使用し、"_count" で終わります。フィールド名の先頭にスラッシュは付けません。実際にエクスポートされる指標名の先頭には "/iam/policy" が追加されます。
フィールド名は IAM のリクエスト パラメータに対応し、フィールド値はそれらの値に対応します。
サポートされているフィールド名: - 「authority」、これは IAMContext.token が存在する場合は「[token]」、存在しない場合は IAMContext.authority_selector(存在する場合) の値、IAMContext.authority_selector が存在しない場合は IAMContext.principal の表現。または - トークンまたは権限セレクタが存在する場合でも、IAMContext.principal の表現である「iamPrincipal」。または - ""(空の文字列)、フィールドのないカウンタになる。
例: counter { metric: "/debug_access_count" field: "iamPrincipal" } ==> increment counter /iam/policy/debug_access_count {iamPrincipal=[value of IAMContext.principal]}
JSON 表現 |
---|
{
"metric": string,
"field": string,
"customFields": [
{
object ( |
フィールド | |
---|---|
metric |
更新する指標。 |
field |
該当するフィールド値。 |
customFields[] |
カスタム フィールド。 |
CustomField
カスタム フィールド。 これらを使用して、任意のフィールドと値のペアを持つカウンタを作成できます。go/rpcsp-custom-fields をご覧ください。
JSON 表現 |
---|
{ "name": string, "value": string } |
フィールド | |
---|---|
name |
Name はフィールド名です。 |
value |
Value はフィールド値です。CounterOptions.field とは対照的に、ここでの値は IAMContext から派生しない定数であることが重要です。 |
DataAccessOptions
データアクセス(Gin)ログを記述します。
JSON 表現 |
---|
{
"logMode": enum ( |
フィールド | |
---|---|
logMode |
|
isDirectAuth |
通常の権限付与ポリシーによってアクセス権が付与されたことを示します |
LogMode
Gin ロギングに関するクライアントの動作を指定します。
列挙型 | |
---|---|
LOG_MODE_UNSPECIFIED |
クライアントは、承認チェックの直後に部分的な Gin ログを書き込む必要はありません。クライアントが書き込みを選択して失敗した場合、クライアントは Fail Open(オペレーションを続行)または Fail Closed(結果を DENY として処理)のいずれかを選択できます。 |
LOG_FAIL_CLOSED |
この承認チェックが行われるコンテキストでのアプリのオペレーションは、Gin に正常にログインされた場合にのみ実行できます。たとえば、承認ライブラリは、承認チェック時に部分的なログエントリを出力し、成功した場合にのみアプリケーションに ALLOW を返すことで、この義務を果たすことができます。 一致するルールにこのディレクティブがあっても、クライアントがそのような要件を遵守することを示していない場合、IAM チェックは CheckPolicyResponse.success=false を設定して承認エラーとなります。 |
CloudAuditOptions
クラウド監査ログを書き込みます。
JSON 表現 |
---|
{ "logName": enum ( |
フィールド | |
---|---|
logName |
クラウド監査レコードに記録する logName。 |
authorizationLoggingOptions |
Cloud Audit Logging パイプラインで使用される情報。PermissionType への移行が完了すると、非推奨となります(b/201806118)。 |
permissionType |
権限に関連付けられているタイプ。 |
LogName
ログ名の列挙。
列挙型 | |
---|---|
UNSPECIFIED_LOG_NAME |
デフォルト。これは使用しないでください。 |
ADMIN_ACTIVITY |
cloudaudit.googleapis.com/activity に対応します。 |
DATA_ACCESS |
cloudaudit.googleapis.com/dataAccess に対応します。 |
AuthorizationLoggingOptions
Cloud Audit Logging で使用される承認関連の情報。
JSON 表現 |
---|
{
"permissionType": enum ( |
フィールド | |
---|---|
permissionType |
確認された権限のタイプ。 |
PermissionType
確認された有効な権限のタイプのリスト。
列挙型 | |
---|---|
PERMISSION_TYPE_UNSPECIFIED |
デフォルト。これは使用しないでください。 |
ADMIN_READ |
管理(メタ)データの読み取り。 |
ADMIN_WRITE |
管理(メタ)データの書き込み。 |
DATA_READ |
標準データの読み取り。 |
DATA_WRITE |
標準データの書き込み。 |
PermissionType
確認された有効な権限のタイプのリスト。
列挙型 | |
---|---|
PERMISSION_TYPE_UNSPECIFIED |
デフォルト。これは使用しないでください。 |
ADMIN_READ |
リソース構成やメタデータの読み取りを制御する権限。 |
ADMIN_WRITE |
リソース構成やメタデータの変更を制御する権限。 |
DATA_READ |
ユーザー提供データの読み取りを制御する権限。 |
DATA_WRITE |
ユーザー提供データの書き込みを制御する権限。 |