Google Cloud サービスでの VPC Service Controls の一般的な問題のトラブルシューティング

このページでは、VPC Service Controls の境界内で Google Cloud サービスの使用時に発生する可能性のある問題の解決策について説明します。

Cloud Build に関する問題

VPC Service Controls の境界内で Cloud Build リソースを使用する場合、いくつかの制限事項があります。詳細については、Cloud Build での VPC Service Controls の使用に関する制限事項をご覧ください。

Cloud Build サービス アカウントが保護されたリソースへのアクセスをブロックされる

Cloud Build は、Cloud Build サービス アカウントを使用してビルドを実行します。デフォルトでは、Cloud Build でビルドを実行すると、ビルドはプロジェクト外部のテナント プロジェクトで実行されます。

プロジェクトが境界内にある場合でも、ビルド出力を生成する Cloud Build のワーカー VM は VPC Service Controls の境界外にあります。したがって、ビルドが境界内のリソースにアクセスできるようにするには、アクセスレベルまたは上り(内向き)ルールに追加して、Cloud Build サービス アカウントに VPC Service Controls の境界へのアクセス権を付与する必要があります。

詳細については、Cloud Build サービス アカウントに VPC Service Controls の境界へのアクセスを許可するをご覧ください。

Cloud Storage に関する問題

存在しない Logging Cloud Storage バケットをターゲットにすると拒否される

指定されたロギング バケットが存在しない場合、VPC Service Controls は RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER 違反を理由にアクセスを拒否します。

アクセス拒否のログは、VPC Service Controls の一意の識別子(vpcServiceControlUniqueIdentifier)を使用して確認できます。RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER 違反の理由があるログの例を以下に示します。

"serviceName": "storage.googleapis.com",
"methodName": "google.storage.buckets.update",
"resourceName": "projects/325183452875",
"metadata": {
  "violationReason": "RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER",
  ...
  "egressViolations": [
    {
      "sourceType": "Resource",
      "targetResource": "projects/0/buckets/this-bucket-does-not-exist",
      "source": "projects/325183452875/buckets/bucket-in-same-project",
      "servicePerimeter": "accessPolicies/875573620132/servicePerimeters/prod_perimeter"
    }]}

egressViolations オブジェクトの targetResource フィールドにターゲットが projects/0/buckets と表示されている場合、projects/0 は存在せず、サービス境界の外部とみなされるため、常に拒否がトリガーされます。

Google 所有の公開 Cloud Storage バケットへのアクセスが拒否される

サービス境界に異なる組織のプロジェクトを含めることはできません。境界に含めることができるのは、その親組織のプロジェクトのみです。別の組織に存在する VPC Service Controls 境界内のプロジェクトから Cloud Storage バケットにアクセスする場合、一定の制限があります。

典型的な例は、Google 所有の Cloud Storage バケットにアクセスする場合です。プロジェクトとターゲット バケットを含む Google 所有のプロジェクトは同じ境界内にないため、VPC Service Controls は RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER 違反を理由にリクエストを拒否します。

この問題を解決するには、上り(内向き)ルールと下り(外向き)ルールを作成します。

境界内から一般公開されているアクセス可能な Cloud Storage バケットへのアクセス

サービス境界から一般公開されているアクセス可能な Cloud Storage バケットにアクセスしようとすると、VPC Service Controls は下り(外向き)違反をスローし、リクエストをブロックする可能性があります。

オブジェクトに常時アクセスできるようにするには、影響を受けるサービス境界に下り(外向き)ルールを適用する必要があります。

Security Command Center に関する問題

このセクションでは、VPC Service Controls の境界内にある Security Command Center リソースの使用時に発生する可能性のある問題について説明します。

Security Command Center により Pub/Sub への通知の送信がブロックされる

VPC Service Controls 境界内の Pub/Sub トピックに Security Command Center の通知をパブリッシュしようとすると、RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER 違反で失敗します。

Security Command Center は組織レベルで有効にすることをおすすめします。VPC Service Controls は、親組織を子プロジェクトの境界の一部とみなしません。この操作を行うには、境界に Security Command Center へのアクセス権を付与する必要があります。

回避策として、次のいずれかを行います。

  • サービス境界内にないプロジェクトで Pub/Sub トピックを使用する。
  • 通知の設定が完了するまで、サービス境界から Pub/Sub API を削除する。

Pub/Sub トピックに送信される Security Command Center 通知を有効にする方法については、Pub/Sub の検出通知の有効化をご覧ください。

Security Command Center により境界内の Compute Engine リソースのスキャンがブロックされる

Security Command Center は、プロダクトごと、プロジェクトごとのサービス アカウント(P4SA)の service-{project_number}@gcp-sa-computescanning.iam.gserviceaccount.com を使用して、プロジェクト内の Compute Engine リソースをスキャンします。Security Command Center が境界内のリソースにアクセスできるようにするには、アクセスレベルまたは上り(内向き)ルールに P4SA を追加する必要があります。そうしないと、NO_MATCHING_ACCESS_LEVEL エラーが表示される場合があります。

Security Command Center によりサービス境界内のリソースのスキャンがブロックされる

Security Health Analytics は、P4SA(プロダクトごと、プロジェクトごとのサービス アカウント)service-org-ORGANIZATION_ID@security-center-api.iam.gserviceaccount.com を使用してプロジェクト内のリソースをスキャンします。Security Command Center が境界内のリソースにアクセスできるようにするには、アクセスレベルまたは上り(内向き)ルールに P4SA アカウントを追加する必要があります。そうしないと、NO_MATCHING_ACCESS_LEVEL エラーが表示されます。

Google Kubernetes Engine に関する問題

このセクションでは、VPC Service Controls の境界内にある Google Kubernetes Engine リソースの使用時に発生する可能性のある問題について説明します。

アクセス可能なサービスと制限付きサービスが有効になっている境界でオートスケーラーが機能しない

autoscaling.googleapis.com は VPC Service Controls と統合されていないため、制限付きサービスやアクセス可能なサービスに追加できません。アクセス可能なサービスで autoscaling.googleapis.com API を許可することはできません。そのため、アクセス可能なサービスが有効になっている境界内に存在するクラスタのオートスケーラーが動作しない可能性があります。

アクセス可能なサービスは使用しないことをおすすめします。制限付き仮想 IP(VIP)を使用する場合は、autoscaling.googleapis.com を例外にして、自動スケーリングが有効になっているクラスタのある境界のプライベート VIP に移動します。

BigQuery に関する問題

このセクションでは、VPC Service Controls の境界内にある BigQuery リソースの使用時に発生する可能性のある問題について説明します。

VPC Service Controls の境界の制限が BigQuery クエリ結果のエクスポートに適用されない

保護されているデータの BigQuery から Google ドライブ、Google スプレッドシート、または Looker Studio へエクスポートを制限しようとすると、期待される動作から逸脱することがあります。BigQuery UI からクエリを実行すると、結果がマシンのローカルメモリ(ブラウザ キャッシュなど)に保存されます。結果が VPC Service Controls の外部にあるため、結果を CSV ファイルまたは Google ドライブに保存できます。

このシナリオでは、サービス境界外のローカルマシンから結果がエクスポートされるため、VPC Service Controls は意図したとおりに動作しますが、BigQuery データの全体的な制限が回避されます。

この問題を解決するには、bigquery.tables.export 権限を削除して、ユーザーの IAM 権限を制限します。この操作を行うと、すべてのエクスポート オプションが無効になります。

GKE Enterprise に関する問題

このセクションでは、VPC Service Controls の境界内にある GKE Enterprise リソースの使用時に発生する可能性のある問題について説明します。

Anthos Service Mesh での VPC Service Controls の使用に関連するエラーのトラブルシューティングについては、マネージド Anthos Service Mesh の VPC Service Controls に関する問題のトラブルシューティングをご覧ください。

GKE Enterprise Config Controller の設定によって下り(外向き)違反が生成される

境界外のプロジェクトで google.containers.registry.read メソッドを使用して containerregistry.googleapis.com に到達できる下り(外向き)構成がない場合、GKE Enterprise Config Controller の設定プロセスが失敗します。

このエラーを解決するには、次の下り(外向き)ルールを作成します。

From:
  Identities:ANY_IDENTITY
To:
  Projects =
    NNNNNNNNNNNN
  Service =
  Service name: containerregistry.googleapis.com
  Service methods:
    containers.registry.read

違反した境界にルールを追加すると、下り(外向き)違反は表示されなくなります。

Container Registry に関する問題

このセクションでは、VPC Service Controls の境界内にある Container Registry リソースの使用時に発生する可能性のある問題について説明します。

上り(内向き)ルールまたは下り(外向き)ルールで許可されたにもかかわらず、Container Registry API リクエストが VPC Service Controls によってブロックされる

identity_type フィールドが ANY_USER_ACCOUNT または ANY_SERVICE_ACCOUNT に設定された上り(内向き)ルールを使用して Container Registry へのアクセスを許可している場合、アクセスは VPC Service Controls によってブロックされます。

この問題を解決するには、上り(内向き)ルールまたは下り(外向き)ルールの identity_type フィールドを ANY_IDENTITY に更新します。

Artifact Registry が所有する Docker イメージを境界内のプロジェクトにコピーする際のサービス エージェントからの下り(外向き)エラー

VPC Service Controls の境界内にあるプロジェクトに Artifact Registry 所有のイメージをコピーしようとすると、サービス エージェント cloud-cicd-artifact-registry-copier@system.gserviceaccount.com のログに下り(外向き)エラーが記録されることがあります。この下り(外向き)エラーは通常、境界ポリシーがドライラン モードの場合に発生します。

この問題を解決するには、VPC Service Controls のエラーログに記載されているプロジェクトの storage.googleapis.com サービスに対してサービス エージェント cloud-cicd-artifact-registry-copier@system.gserviceaccount.com のアクセスを許可する下り(外向き)ルールを作成します。

Vertex AI に関する問題

このセクションでは、VPC Service Controls の境界内にある Vertex AI リソースの使用時に発生する可能性のある問題について説明します。

上り(内向き)ルールまたは下り(外向き)ルールで許可されたにもかかわらず、ユーザー管理の Notebooks API リクエストが VPC Service Controls によってブロックされる

上り(内向き)ポリシーを使用してユーザー管理のノートブック API へのアクセスを許可しており、identity_typeANY_USER_ACCOUNT または ANY_SERVICE_ACCOUNT に設定した場合、VPC Service Controls は API へのアクセスをブロックします。

この問題を解決するには、上り(内向き)ルールまたは下り(外向き)ルールの identity_type フィールドを ANY_IDENTITY に更新します。

Spanner の問題

Spanner データベースのバックアップが、プロダクトごと、プロジェクトごとのサービス アカウント(P4SA)service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.comNO_MATCHING_ACCESS_LEVEL 違反によってブロックされます。

この問題を解決するには、前述のサービス エージェントを含む上り(内向き)ルールを追加するか、アクセスレベルに追加します。

次のステップ