Package google.iam.v1

索引

IAMPolicy

API の概要

Identity and Access Management(IAM)のポリシーを管理します。

アクセス制御機能を備えた API の実装では、google.iam.v1.IAMPolicy インターフェースが実装されます。

データモデル

アクセス制御は、プリンシパル(ユーザーまたはサービス アカウント)がサービスによって公開されているリソースに対してなんらかのアクションを実行する際に適用されます。アクセス制御では、URI のような名称で識別されるリソースを単位として指定します。アクセス制御の細かさと各リソースに対してサポートされる権限は、サービスの実装で選択できます。たとえば、あるデータベース サービスではテーブルレベルでのみアクセス制御を指定できるようにしながら、別のデータベース サービスでは列レベルでも指定できるようにすることができます。

ポリシーの構造

google.iam.v1.Policy を参照してください。

アクセス制御ポリシーは、それぞれのアタッチ先となるリソースによって黙示的に作成、削除されるため、これは CRUD スタイルの API ではありません。

GetIamPolicy

rpc GetIamPolicy(GetIamPolicyRequest) returns (Policy)

リソースのアクセス制御ポリシーを取得します。リソースが存在し、ポリシーが設定されていない場合は、空のポリシーを返します。

認可スコープ

次の OAuth スコープが必要です。

  • https://www.googleapis.com/auth/cloud-platform

詳細については、認証の概要をご覧ください。

SetIamPolicy

rpc SetIamPolicy(SetIamPolicyRequest) returns (Policy)

指定したリソースにアクセス制御ポリシーを設定します。既存のポリシーをすべて置き換えます。

NOT_FOUNDINVALID_ARGUMENTPERMISSION_DENIED のエラーを返すことができます。

認可スコープ

次の OAuth スコープが必要です。

  • https://www.googleapis.com/auth/cloud-platform

詳細については、認証の概要をご覧ください。

TestIamPermissions

rpc TestIamPermissions(TestIamPermissionsRequest) returns (TestIamPermissionsResponse)

指定されたリソースに対して呼び出し元が持っている権限を返します。リソースが存在しない場合、NOT_FOUND エラーではなく、空の権限セットが返されます。

注: このオペレーションは、承認チェックではなく、権限に対応した UI とコマンドライン ツールの構築に使用するように設計されています。このオペレーションは警告なしに「フェイル オープン」することがあります。

認可スコープ

次の OAuth スコープが必要です。

  • https://www.googleapis.com/auth/cloud-platform

詳細については、認証の概要をご覧ください。

AuditConfig

サービスの監査構成を指定します。この構成により、ログに記録される権限タイプとロギングから除外される ID が決まります。AuditConfig には 1 つ以上の AuditLogConfig が必要です。

allServices と特定のサービスの両方に AuditConfig がある場合は、2 つの AuditConfig を合わせたものがそのサービスに使用されます。つまり各 AuditConfig で指定された log_types が有効になり、各 AuditLogConfig にある exempted_members が除外されます。

複数の AuditConfig を使用したポリシーの例:

{
  "audit_configs": [
    {
      "service": "allServices",
      "audit_log_configs": [
        {
          "log_type": "DATA_READ",
          "exempted_members": [
            "user:jose@example.com"
          ]
        },
        {
          "log_type": "DATA_WRITE"
        },
        {
          "log_type": "ADMIN_READ"
        }
      ]
    },
    {
      "service": "sampleservice.googleapis.com",
      "audit_log_configs": [
        {
          "log_type": "DATA_READ"
        },
        {
          "log_type": "DATA_WRITE",
          "exempted_members": [
            "user:aliya@example.com"
          ]
        }
      ]
    }
  ]
}

sampleservice の場合、このポリシーを使用すると、DATA_READ、DATA_WRITE、ADMIN_READ のロギングが有効になります。また、DATA_READ ロギングから jose@example.com が除外され、DATA_WRITE ロギングから aliya@example.com が除外されます。

フィールド
service

string

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

audit_log_configs[]

AuditLogConfig

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

AuditLogConfig

特定の権限タイプをロギングする場合の構成を指定します。次に例を示します。

{
  "audit_log_configs": [
    {
      "log_type": "DATA_READ",
      "exempted_members": [
        "user:jose@example.com"
      ]
    },
    {
      "log_type": "DATA_WRITE"
    }
  ]
}

DATA_READ と DATA_WRITE のロギングが有効になり、jose@example.com は DATA_READ のロギングから除外されます。

フィールド
log_type

AuditLogConfig.LogType

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

exempted_members[]

string

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

LogType

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

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

バインディング

members(プリンシパル)を role に関連付けます。

フィールド
role

string

members またはプリンシパルのリストに割り当てられるロール。例: roles/viewerroles/editor、または roles/owner

members[]

string

Google Cloud リソースへのアクセスをリクエストするプリンシパルを指定します。members は次のいずれかの値を取ります。

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

  • allAuthenticatedUsers: Google アカウントまたはサービス アカウントで認証される任意のユーザーを表す特別な識別子。 ID 連携を介して外部 ID プロバイダ(IdP)から取得した ID は含まれません。

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

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

  • serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: Kubernetes サービス アカウントの ID。例: my-project.svc.id.goog[my-namespace/my-kubernetes-sa]

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

  • domain:{domain}: G Suite ドメイン(プライマリ)。そのドメインのすべてのユーザーを表します。たとえば、google.comexample.com です。
  • principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}: Workforce Identity プール内の単一の ID

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}: グループ内のすべての Workforce ID

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}: 特定の属性値を持つすべての Workforce ID

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*: Workforce Identity プール内のすべての ID

  • principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}: Workload Identity プール内の単一の ID

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}: Workload Identity プールのグループ。

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}: 特定の属性を持つ Workload Identity プール内のすべての ID

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*: Workload Identity プール内のすべての ID

  • 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} に戻り、復元されたグループはバインディングのロールを保持します。

  • deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}: Workforce Identity プール内の削除された単一の ID。例: deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value

condition

Expr

このバインディングに関連付けられている条件。

条件が true と評価された場合、このバインディングは現在のリクエストに適用されます。

条件が false と評価された場合、このバインディングは現在のリクエストに適用されません。ただし、別のロール バインディングによって、このバインディングの 1 つ以上のプリンシパルに同じロールが付与される場合があります。

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

GetIamPolicyRequest

GetIamPolicy メソッドに対するリクエスト メッセージ。

フィールド
resource

string

必須: ポリシーをリクエストする対象のリソース。このフィールドに適切な値については、リソース名をご覧ください。

options

GetPolicyOptions

省略可: GetIamPolicy にオプションを指定するための GetPolicyOptions オブジェクト。

GetPolicyOptions

GetIamPolicy に対して指定された設定をカプセル化します。

フィールド
requested_policy_version

int32

省略可。ポリシーの形式設定に使用されるポリシーの最大バージョン。

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

条件付きロール バインディングがあるポリシーのリクエストでは、バージョン 3 を指定する必要があります。条件付きロール バインディングがないポリシーでは、有効な値を指定することも、フィールドを設定しないこともできます。

レスポンスのポリシーでは、指定したポリシー バージョンを使用するか、それより低いポリシー バージョンを使用する場合があります。たとえば、バージョン 3 を指定しても、ポリシーに条件付きロール バインディングがない場合、レスポンスではバージョン 1 が使用されます。

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

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 のドキュメントをご覧ください。

フィールド
version

int32

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

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

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

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

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

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

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

bindings[]

Binding

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

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

audit_configs[]

AuditConfig

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

etag

bytes

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

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

SetIamPolicyRequest

SetIamPolicy メソッドに対するリクエスト メッセージ。

フィールド
resource

string

必須: ポリシーが指定されているリソース。このフィールドに適切な値については、リソース名をご覧ください。

policy

Policy

必須: resource に適用する完全なポリシー。ポリシーのサイズは数 10 KB に制限されています。空のポリシーは有効なポリシーですが、プロジェクトなど特定の Google Cloud サービスでは、これらが拒否されることがあります。

update_mask

FieldMask

省略可: 変更するポリシー フィールドを指定する FieldMask。マスク内のフィールドのみが変更されます。マスクが指定されていない場合は、次のデフォルト マスクが使用されます。

paths: "bindings, etag"

TestIamPermissionsRequest

TestIamPermissions メソッドに対するリクエスト メッセージ。

フィールド
resource

string

必須: ポリシー詳細リクエストの対象となるリソース。このフィールドに適切な値については、リソース名をご覧ください。

permissions[]

string

resource に対して確認する権限のセット。ワイルドカード付きの権限(*storage.* など)は使用できません。詳細については IAM の概要をご覧ください。

TestIamPermissionsResponse

TestIamPermissions メソッドに対するレスポンス メッセージ。

フィールド
permissions[]

string

呼び出し元に許可されている TestPermissionsRequest.permissions のサブセット。