ポリシー

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

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

必要に応じて、bindingcondition を指定できます。これは、式が true と評価された場合にのみリソースへのアクセスを許可する論理式です。条件は、リクエスト、リソース、またはその両方の属性に基づいて制約を追加できます。

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 ポリシーの条件はすべて失われます。

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

bindings[]

object (Binding)

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

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 でエンコードされた文字列。

バインディング

membersrole に関連付けます。

JSON 表現

{
  "role": string,
  "members": [
    string
  ],
  "condition": {
    object (Expr)
  }
}
フィールド
role

string

members に割り当てるロール。例: roles/viewerroles/editor、または roles/owner

members[]

string

Cloud Platform リソースのアクセスのリクエスト元を識別する情報を指定します。members には次の値を指定できます。

  • allUsers: Google アカウントの有無を問わず、インターネット上のすべてのユーザーを表す特別な識別子。

  • allAuthenticatedUsers: Google アカウントまたはサービス アカウントで認証される任意のユーザーを表す特別な識別子。

  • user:{emailid}: 特定の Google アカウントを表すメールアドレス。例: alice@example.com

  • serviceAccount:{emailid}: サービス アカウントを表すメールアドレス。例: my-other-app@appspot.gserviceaccount.com

  • group:{emailid}: Google グループを表すメールアドレス。例: admins@example.com

  • deleted:user:{emailid}?uid={uniqueid}: 最近削除されたユーザーを表すメールアドレスと一意の ID。例: alice@example.com?uid=123456789012345678901ユーザーが復元された場合、この値は user:{emailid} に戻り、復元されたユーザーはバインディングのロールを保持します。

  • deleted:serviceAccount:{emailid}?uid={uniqueid}: 最近削除されたサービス アカウントを表すメールアドレスと一意の ID。例: my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901サービス アカウントが削除されていない場合、この値は serviceAccount:{emailid} に戻り、削除されていないサービス アカウントはバインディングのロールを保持します。

  • deleted:group:{emailid}?uid={uniqueid}: 最近削除された Google グループを表すメールアドレスと一意の ID。例: admins@example.com?uid=123456789012345678901グループが復元された場合、この値は group:{emailid} に戻り、復元されたグループはバインディングのロールを保持します。

  • domain:{domain}: G Suite ドメイン(プライマリ)。そのドメインのすべてのユーザーを表します。たとえば、google.comexample.com です。
condition

object (Expr)

このバインディングに関連付けられている条件。注: 条件を満たさないと、ユーザーは現在のバインディングからアクセスできません。条件を含む異なるバインディングは、個別に検査されます。

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

string

Common Expression Language 構文による式のテキスト表現。

title

string

省略可。式のタイトル。式の目的を説明する短い文字列です。たとえば、式を入力できる UI でこれを使用します。

description

string

省略可。式の説明。式を説明する長いテキストです。たとえば、UI で式にカーソルを合わせたときに表示されます。

location

string

省略可。エラー報告用に式の場所を示す文字列。たとえば、ファイル名とファイル内の位置です。

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 (AuditLogConfig)
    }
  ]
}
フィールド
service

string

監査ログに関して有効になるサービスを指定します。例: storage.googleapis.comcloudsql.googleapis.comallServices は、すべてのサービスに当てはまる特殊値です。

auditLogConfigs[]

object (AuditLogConfig)

権限のタイプごとのログの構成。

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": [
    string
  ]
}
フィールド
logType

enum (LogType)

この構成で有効になるログタイプです。

exemptedMembers[]

string

このタイプの権限に対してログが発生しない ID を指定します。Binding.members と同じ形式に従います。

LogType

ロギングを有効にする権限タイプの一覧です。管理者の書き込みは常にロギングされますが、構成はできません。

列挙型
LOG_TYPE_UNSPECIFIED デフォルト。これを使用することはありません。
ADMIN_READ 管理者読み取り。例: CloudIAM getIamPolicy
DATA_WRITE データ書き込み。例: CloudSQL Users create
DATA_READ データ読み取り。例: CloudSQL Users list