上り(内向き)ルールと下り(外向き)ルールで IAM ロールを構成する

このページでは、上り(内向き)ルールと下り(外向き)ルールで Identity and Access Management(IAM)ロールを使用して、サービス境界で保護されたリソースへのアクセスを許可する方法について説明します。

VPC Service Controls は、上り(内向き)ルールと下り(外向き)ルールを使用して、サービス境界で保護されたリソースとクライアントに関するアクセスを可能にします。必要に応じて、IAM ロールを使用して上り(内向き)ルールと下り(外向き)ルールを制限できます。ルールで IAM ロールを指定すると、IAM ロールの一部である権限に関連付けられたアクションのみがルールで許可されます。

始める前に

上り(内向き)ルールで IAM ロールを構成する

Console

Google Cloud コンソールを使用してサービス境界の上り(内向き)ポリシーを更新する場合、または境界の作成時に上り(内向き)ポリシーを設定する場合は、IAM ロールを使用するように上り(内向き)ルールを構成できます。

  1. コンソールで境界を作成するとき、または境界を編集するときに、[上り(内向き)ポリシー] を選択します。 Google Cloud

  2. [上り(内向き)ルール] ペインで、既存の上り(内向き)ルールを選択するか、[上り(内向き)ルールを追加] をクリックします。

  3. 上り(内向き)ポリシーの [宛先] セクションで、[オペレーションまたは IAM ロール] リストから [IAM ロールの選択(プレビュー)] を選択します。

  4. [IAM ロールを追加] をクリックします。

  5. [IAM ロールを追加] ペインで、許可する IAM ロールを選択します。

    サポートされているサービスとロールについては、サポートされているプロダクトをご覧ください。

  6. [選択した IAM ロールを追加] をクリックします。

  7. [完了] をクリックします。

他の上り(内向き)ルール属性については、上り(内向き)ルールのリファレンスをご覧ください。

gcloud

JSON ファイルまたは YAML ファイルを使用して、IAM ロールを使用する上り(内向き)ルールを構成できます。次のサンプルでは、YAML 形式を使用します。

- ingressFrom:
    identityType: ANY_IDENTITY | ANY_USER_ACCOUNT | ANY_SERVICE_ACCOUNT
    *OR*
    identities:
    - PRINCIPAL_IDENTIFIER
    sources:
    - resource: RESOURCE
      *OR*
    - accessLevel: ACCESS_LEVEL
  ingressTo:
    operations:
    - serviceName: SERVICE_NAME
      methodSelectors:
      - method: METHOD_NAME
    *OR*
    roles:
    - ROLE_NAME
    resources:
    - projects/PROJECT_NUMBER

ROLE_NAME は、ルールで指定されたサービスのアクセス範囲を定義する IAM ロールに置き換えます。サービスへのアクセスに必要なすべての権限を含む単一のロールまたはロールの組み合わせを指定します。ロールを指定するには、ロール コンポーネントで説明されているロール名の形式を使用します(projects/PROJECT_ID/roles/IDENTIFIER 形式を除く)。

サポートされているサービスとロールについては、サポートされているプロダクトをご覧ください。

他の上り(内向き)ルール属性については、上り(内向き)ルールのリファレンスをご覧ください。

既存の上り(内向き)ルールを更新して IAM ロールを構成した後、サービス境界のルールポリシーを更新する必要があります。

gcloud access-context-manager perimeters update PERIMETER_ID --set-ingress-policies=RULE_POLICY.yaml

次のように置き換えます。

  • PERIMETER_ID: 更新するサービス境界の ID。
  • RULE_POLICY: 変更された上り(内向き)ルールファイルのパス。

詳細については、サービス境界の上り(内向き)ポリシーと下り(外向き)ポリシーの更新をご覧ください。

下り(外向き)ルールで IAM ロールを構成する

Console

Google Cloud コンソールを使用してサービス境界の下り(外向き)ポリシーを更新する場合、または境界の作成時に下り(外向き)ポリシーを設定する場合は、IAM ロールを使用するように下り(外向き)ルールを構成できます。

  1. コンソールで境界を作成するとき、または境界を編集するときに、[下り(外向き)ポリシー] を選択します。 Google Cloud

  2. [下り(外向き)ルール] ペインで、既存の下り(外向き)ルールを選択するか、[下り(外向き)ルールを追加] をクリックします。

  3. 下り(外向き)ポリシーの [宛先] セクションで、[オペレーションまたは IAM ロール] リストから [IAM ロールを選択(プレビュー)] を選択します。

  4. [IAM ロールを追加] をクリックします。

  5. [IAM ロールを追加] ペインで、許可する IAM ロールを選択します。

    サポートされているサービスとロールについては、サポートされているプロダクトをご覧ください。

  6. [選択した IAM ロールを追加] をクリックします。

  7. [完了] をクリックします。

他の下り(外向き)ルール属性については、下り(外向き)ルールのリファレンスをご覧ください。

gcloud

JSON ファイルまたは YAML ファイルを使用して、IAM ロールを使用する下り(外向き)ルールを構成できます。次のサンプルでは、YAML 形式を使用します。

- egressTo:
    operations:
    - serviceName: SERVICE_NAME
      methodSelectors:
      - method: METHOD_NAME
    *OR*
    roles:
    - ROLE_NAME
    resources:
    - projects/PROJECT_NUMBER
  egressFrom:
    identityType: ANY_IDENTITY | ANY_USER_ACCOUNT | ANY_SERVICE_ACCOUNT
    *OR*
    identities:
    - PRINCIPAL_IDENTIFIER
    sources:
    - resource: RESOURCE
      *OR*
    - accessLevel: ACCESS_LEVEL
    sourceRestriction: RESTRICTION_STATUS

ROLE_NAME は、ルールで指定されたサービスのアクセス範囲を定義する IAM ロールに置き換えます。サービスへのアクセスに必要なすべての権限を含む単一のロールまたはロールの組み合わせを指定します。ロールを指定するには、ロール コンポーネントで説明されているロール名の形式を使用します(projects/PROJECT_ID/roles/IDENTIFIER 形式を除く)。

サポートされているサービスとロールについては、サポートされているプロダクトをご覧ください。

他の下り(外向き)ルール属性については、下り(外向き)ルールのリファレンスをご覧ください。

既存の下り(外向き)ルールを更新して IAM ロールを構成した後、サービス境界のルールポリシーを更新する必要があります。

gcloud access-context-manager perimeters update PERIMETER_ID --set-egress-policies=RULE_POLICY.yaml

次のように置き換えます。

  • PERIMETER_ID: 更新するサービス境界の ID。
  • RULE_POLICY: 変更された下り(外向き)ルールファイルのパス。

詳細については、サービス境界の上り(内向き)ポリシーと下り(外向き)ポリシーの更新をご覧ください。

サポート対象プロダクト

上り(内向き)ルールと下り(外向き)ルールで、次の Google Cloud サービスの IAM ロールを使用できます。

プロダクト 制限事項
Artifact Registry
artifactregistry.googleapis.com
  • 既知の制限事項はありません。
BigQuery
bigquery.googleapis.com
  • 既知の制限事項はありません。
BigQuery Data Transfer Service
bigquerydatatransfer.googleapis.com
  • 既知の制限事項はありません。
Bigtable
bigtable.googleapis.com
  • 既知の制限事項はありません。
Binary Authorization
binaryauthorization.googleapis.com
  • 既知の制限事項はありません。
Cloud Composer
composer.googleapis.com
  • 既知の制限事項はありません。
Cloud Key Management Service
cloudkms.googleapis.com
  • 顧客管理の暗号鍵(CMEK)を使用する場合、VPC Service Controls は上り(内向き)ルールと下り(外向き)ルールでの Cloud KMS ロールの使用をサポートしていません。
Cloud Logging
logging.googleapis.com
  • 既知の制限事項はありません。
Cloud Monitoring
monitoring.googleapis.com
  • 既知の制限事項はありません。
Cloud Run
run.googleapis.com
  • 既知の制限事項はありません。
Cloud Run functions
cloudfunctions.googleapis.com
  • 既知の制限事項はありません。
Cloud SQL
sqladmin.googleapis.com
  • 既知の制限事項はありません。
Cloud Storage
storage.googleapis.com
  • VPC Service Controls は、上り(内向き)ルールと下り(外向き)ルールで Cloud Storage のカスタムロールをサポートしていますが、事前定義された Cloud Storage ロールはサポートしていません。上り(内向き)ルールまたは下り(外向き)ルールで事前定義された Cloud Storage ロールを使用すると、VPC Service Controls は INVALID_ARGUMENT エラーを返します。
  • VPC Service Controls で保護されたプロジェクトに対してオブジェクトの挿入または API 書き込みリクエストを実行する場合は、storage.objects.delete 権限と storage.objects.create 権限を許可する上り(内向き)ルールと下り(外向き)ルールを構成する必要があります。
  • Cloud Storage でリクエスタ支払い機能を有効にすると、VPC Service Controls は上り(内向き)ルールと下り(外向き)ルールで Cloud Storage ロールの使用をサポートしません。
Compute Engine
compute.googleapis.com
  • 既知の制限事項はありません。
Dataflow
dataflow.googleapis.com
  • 既知の制限事項はありません。
Dataproc
dataproc.googleapis.com
  • 既知の制限事項はありません。
Google Kubernetes Engine
container.googleapis.com
  • 既知の制限事項はありません。
Identity and Access Management
iam.googleapis.com
  • 既知の制限事項はありません。
Pub/Sub
pubsub.googleapis.com
  • 既知の制限事項はありません。
Resource Manager
cloudresourcemanager.googleapis.com
  • 既知の制限事項はありません。
Secret Manager
secretmanager.googleapis.com
  • 既知の制限事項はありません。
Spanner
spanner.googleapis.com
  • 既知の制限事項はありません。

上り(内向き)ルールと下り(外向き)ルールで使用できるこれらのサービスの事前定義 IAM ロールの一覧については、事前定義ロールをご覧ください。

ただし、これらのサービスには、上り(内向き)ルールと下り(外向き)ルールで使用できる IAM ロールがいくつかありますが、基盤となる権限の一部またはすべてがサポートされていないため、部分的にサポートされているか、サポートされていません。

  • 上り(内向き)ルールまたは下り(外向き)ルールで部分的にサポートされている IAM ロールを使用すると、サポートされていない基盤となる権限に固有のリクエストまたはアクションに対してルールが機能しなくなります。

    部分的にサポートされているロールと、関連するサポートされていない権限の一覧については、部分的にサポートされている IAM ロールをご覧ください。

  • 上り(内向き)ルールまたは下り(外向き)ルールでサポートされていない IAM ロールを使用すると、ルールが無効になります。

    サポートされていないロールの一覧については、サポートされていない IAM ロールをご覧ください。

上り(内向き)ルールと下り(外向き)ルールでカスタムロールを使用する場合は、カスタムロールに、サポートされているサービスの一部であるサポートされている権限のみが含まれていることを確認してください。サポートされているサービスのサポートされていない権限の一覧については、部分的にサポートされている IAM ロールサポートされていない IAM ロールをご覧ください。

プロジェクト レベルで作成したカスタムロールは使用できません。つまり、projects/PROJECT_ID/roles/IDENTIFIER の形式のカスタムロールは使用できません。

一部サポートされている IAM ロール

次の表に、特定のサービスで部分的にサポートされている IAM ロールを示します。

プロダクト 一部サポートされているロール サポートされていない権限
Cloud SQL
  • roles/cloudsql.viewer
  • cloudsql.backupRuns.list
  • cloudaicompanion.*
  • roles/cloudsql.editor
  • cloudsql.backupRuns.list
  • cloudaicompanion.*
Cloud Storage
  • roles/storage.objectUser
  • storage.objects.move
Identity and Access Management
  • roles/iam.serviceAccountTokenCreator
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt
Resource Manager
  • roles/resourcemanager.tagAdmin
  • resourcemanager.tagKeys.get
  • resourcemanager.tagValues.get
  • roles/resourcemanager.tagUser
  • resourcemanager.tagKeys.get
  • resourcemanager.tagValues.get
  • alloydb.*
  • certificatemanager.*
  • clouddeploy.*
  • roles/resourcemanager.tagViewer
  • resourcemanager.tagKeys.get
  • resourcemanager.tagValues.get
  • alloydb.*
  • certificatemanager.*
  • clouddeploy.*
Spanner
  • roles/spanner.databaseReaderWithDataBoost
  • spanner.databases.useDataBoost
一部サポートされているその他のロール
  • alloydb.*
  • backupdr.*
  • bigquerymigration.*
  • certificatemanager.*
  • cloudaicompanion.*
  • cloudasset.*
  • cloudbuild.*
  • clouddeploy.*
  • dataform.*
  • dataplex.*
  • dns.*
  • eventarc.*
  • networkconnectivity.*
  • networkmanagement.*
  • networksecurity.*
  • networkservices.*

サポートされていない IAM ロール

次の表に、特定のサービスでサポートされていない IAM ロールを示します。

プロダクト サポートされていないロール
Identity and Access Management
  • roles/iam.denyReviewer
  • roles/iam.oauthClientViewer
  • roles/iam.operationViewer
  • roles/iam.workforcePoolEditor
  • roles/iam.workforcePoolViewer
  • roles/iam.workloadIdentityPoolViewer
  • roles/iam.workforcePoolEditor
  • roles/iam.workforcePoolViewer

制限事項

  • ロールベースの上り(内向き)または下り(外向き)ルールを使用して、境界境界を越えてプロジェクトの IAM 許可ポリシーを設定するリクエストを許可することはできません。

  • VPC Service Controls の制限により、Google Cloud コンソールでサービスの編集ページを読み込む際に問題が発生した場合、上り(内向き)ルールで IAM ロールを使用しても問題が解決しないことがあります。この制限は、これらのサービスの閲覧専用ページには影響しません。

  • リクエストに異なるプロジェクトの複数のリソースタイプが含まれる場合、IAM ロールを使用する上り(内向き)ルールまたは下り(外向き)ルールが機能しないことがあります。たとえば、別のプロジェクトの Cloud Storage からテキストを読み取る Dataflow テンプレートを起動するときなどです。

  • 境界の上りまたは下りルールでロールを参照した後にカスタムロールを削除すると、境界は編集できなくなります。

次のステップ