Policy

Identity and Access Management(IAM)ポリシー。Google Cloud リソースのアクセス制御を指定します。

Policybindings をまとめたものです。binding は、1 つ以上の members(プリンシパル)を 1 つの role にバインドします。プリンシパルは、ユーザー アカウント、サービス アカウント、Google グループ、ドメイン(G Suite など)です。role は権限のリストに名前を付けたものです。role はそれぞれ、IAM 事前定義ロールまたはユーザー作成のカスタムロールにできます。

Google Cloud リソースの種類によっては、bindingcondition を指定できます。これは、式が 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 (Binding)
    }
  ],
  "auditConfigs": [
    {
      object (AuditConfig)
    }
  ],
  "etag": string
}
フィールド
version

integer

ポリシーの形式を指定します。

有効な値は 013 です。無効な値を指定したリクエストは拒否されます。

条件付きロール バインディングに影響するオペレーションでは、バージョン 3 を指定する必要があります。この要件は、次のオペレーションに適用されます。

  • 条件付きロール バインディングを含むポリシーの取得
  • 条件付きロール バインディングのポリシーへの追加
  • ポリシーの条件付きロール バインディングの変更
  • 条件の有無にかかわらず、すべてのロール バインディングを、条件を含むポリシーから削除する

重要: IAM Conditions を使用する場合、setIamPolicy を呼び出すときは必ず etag フィールドを含める必要があります。このフィールドを省略すると、IAM によってバージョン 3 ポリシーをバージョン 1 ポリシーで上書きできるようになり、バージョン 3 ポリシーの条件はすべて失われます。

ポリシーに条件が指定されていない場合、ポリシーに対する操作で有効なバージョンの指定、またはフィールド設定の解除ができます。

IAM ポリシーで条件をサポートするリソースについては、IAM のドキュメントをご覧ください。

bindings[]

object (Binding)

members のリストまたはプリンシパルを role に関連付けます。必要に応じて、bindings を適用する方法とタイミングを決定する condition を指定できます。bindings には、それぞれ少なくとも 1 つのプリンシパルを含める必要があります。

1 つの Policybindings では最大 1,500 個のプリンシパルを参照できます。これらのプリンシパルのうち、最大 250 個は Google グループにすることができます。1 つのプリンシパルのそれぞれのオカレンスが上限のカウント対象になります。たとえば、bindings が 50 個の異なるロールを user:alice@example.com に付与し、他のプリンシパルには付与しない場合、Policybindings には、さらに 1,450 個のプリンシパルを追加できます。

auditConfigs[]

object (AuditConfig)

このポリシーに対する Cloud Audit Logging の監査ログを指定します。

etag

string (bytes format)

etag は、オプティミスティック同時実行制御でポリシーの同時更新による相互上書きを防ぐために使用されます。競合状態の発生を回避する目的で、システムのポリシー更新の読み込み・変更・書き込みサイクルでは etag を活用することを強くおすすめします。getIamPolicy へのレスポンスでは etag が返されます。その etag を setIamPolicy に対するリクエストに配置すれば、対応する変更が同じバージョンのポリシーに確実に適用されるようになります。

重要: IAM Conditions を使用する場合、setIamPolicy を呼び出すときは必ず etag フィールドを含める必要があります。このフィールドを省略すると、IAM によってバージョン 3 ポリシーをバージョン 1 ポリシーで上書きできるようになり、バージョン 3 ポリシーの条件はすべて失われます。

base64 でエンコードされた文字列。