VPC Service Controls によるリソースの保護


Compute Engine リソースの保護を強化するには、VPC Service Controls を使用します。

VPC Service Controls では、Compute Engine リソースにセキュリティ境界を定義できます。サービス境界により、定義した境界内のリソースとその関連データに対するエクスポートとインポートが制限されます。

サービス境界を作成するときに、境界で保護するプロジェクトを 1 つ以上選択します。同じ境界内のプロジェクト間のリクエストに影響はありません。関連するリソースが同じサービス境界内にある限り、既存のすべての API が引き続き機能します。IAM のロールとポリシーはサービス境界内でも適用されます。

サービスが境界で保護されている場合、境界内のリソースは、境界外のリソースに対してリクエストを送信できません。境界の内部から外部にリソースをエクスポートすることもできません。保護されたリソースに対する境界外からのリクエストは、特定の条件を満たす場合にのみ許可されます。詳細については、VPC Service Controls のドキュメントの概要をご覧ください。

サービス境界に違反するリクエストを行うと、リクエストは失敗し、次のエラーが返されます。

"code": 403, "message": "Request is prohibited by organization's policy."

セキュリティ上のメリット

VPC Service Controls には、次のようなセキュリティ上のメリットがあります。

  • ファイアウォール ルールの変更など、影響の大きい Compute Engine API オペレーションが承認済みネットワークからのプライベート アクセスまたは許可された IP アドレスのみに制限されます。
  • Compute Engine の永続ディスクのスナップショットとカスタム イメージが境界に制限されます。
  • Compute Engine インスタンスのメタデータは、制限付きのストレージ システムとして機能します。Compute Engine API を使用したインスタンス メタデータへのアクセスは、サービス境界ポリシーによって制限されます。このチャネルを使用することでデータ漏洩のリスクを軽減できます。

また、Compute Engine API に制限付きの仮想 IP(VIP)からアクセスできるようになりました。これにより、境界内のクライアントがこの API にアクセスする必要がある場合に、Cloud DNS とルーティングの構成を簡単に行うことができます。

制限事項

  • 階層型ファイアウォールはサービス境界の影響を受けません。
  • VPC ピアリング オペレーションでは、VPC サービス境界の制限は適用されません。
  • 共有 VPC の projects.ListXpnHosts API メソッドでは、返されるプロジェクトに対してサービス境界の制限は適用されません。

権限

組織の VPC Service Controls 境界の構成を管理できる適切なロールがあることを確認してください。

サービス境界を設定する

VPC Service Controls のドキュメントにあるサービス境界の作成手順で、サービス境界を設定します。

Google Cloud CLI を使用してサービス境界を設定する場合は、--restricted-services フラグで compute.googleapis.com を指定し、Compute Engine API を制限します。

Compute Engine を制限付き境界として既存の境界に追加する

既存のサービス境界があり、Compute Engine をサービス境界に追加する場合は、VPC Service Controls のドキュメントにあるサービス境界の更新手順を行ってください。

VPC Service Controls による VM の作成

サービス境界の設定後、リクエストで影響を受けるリソースが同じサービス境界内に存在する限り、既存の API 呼び出しやツールを変更する必要はありません。たとえば、次のコマンドは、サンプル イメージを使用して VM インスタンスを作成します。この例では、IMAGE_PROJECT がサービス境界の外にある場合(つまり、プロジェクト間にサービス境界ブリッジがない場合)、コマンドは失敗します。

gcloud compute instances create new-instance \
    --image-family IMAGE_FAMILY --image-project IMAGE_PROJECT \
    --zone us-central1-a --machine-type n1-standard-72

インスタンス テンプレートから VM を作成する場合、インスタンス テンプレートで参照されているリソースは、コマンドを実行するサービス境界またはサービス境界ブリッジで接続しているサービス境界に属している必要があります。インスタンス テンプレートがサービス境界外のリソースを参照している場合、インスタンス テンプレート自体が境界内にある場合でもリクエストは失敗します。

境界外の Compute Engine クライアントが、境界内の Cloud KMS 鍵を使用して境界外の Compute Engine ディスクを作成するシナリオの例については、内向きルールと外向きルールの組み合わせによって許可される API リクエストの例をご覧ください。

公開イメージ プロジェクト

Google では、インスタンス用に一連の公開イメージを提供し、維持しています。これらのプロジェクトは、すべてのセキュリティ境界に自動的に含まれます。これらのイメージを使用するために追加の作業は必要ありません。

以下に、すべてのセキュリティ境界に自動的に含まれるプロジェクトのリストを示します。

  • centos-cloud
  • cos-cloud
  • debian-cloud
  • fedora-cloud
  • fedora-coreos-cloud
  • rhel-cloud
  • rhel-sap-cloud
  • rocky-linux-cloud
  • opensuse-cloud
  • suse-cloud
  • suse-byos-cloud
  • suse-sap-cloud
  • ubuntu-os-cloud
  • ubuntu-os-pro-cloud
  • windows-cloud
  • windows-sql-cloud

このリストにないイメージ プロジェクトをセキュリティ境界に直接追加する場合は、使用するすべてのイメージのコピーを個々のプロジェクトに作成してから、プロジェクトをセキュリティ境界に追加します。

VPC Service Controls によるイメージのコピー

両方のプロジェクトが同じサービス境界に属している場合、このプロジェクト間でイメージをコピーできます。この例で、リクエストが機能するには、DST_PROJECTSRC_PROJECT の両方が同じサービス境界に属している必要があります。

gcloud compute images create --project DST_PROJECT IMAGE_NAME \
   --source-image SOURCE_IMAGE --source-image-project SRC_PROJECT \
    --family IMAGE_FAMILY --storage-location LOCATION

イメージ プロジェクトをセキュリティ境界に直接追加する場合は、使用するすべてのイメージのコピーを個々のプロジェクトに作成してから、プロジェクトをセキュリティ境界に追加します。

VPC Service Controls と共有 VPC の使用

共有 VPC を使用する場合、特定のオペレーションに関係するすべてのプロジェクトにサービス境界の制限が適用されます。言い換えると、オペレーションでホスト プロジェクトとサービス プロジェクトの間で分散しているリソースが使用される場合、ホスト プロジェクトとサービス プロジェクトが同じサービス境界内にあることを確認する必要があります。

VPC ネットワーク ピアリング

VPC ネットワーク ピアリングを使用すると、2 つの組織間でピアリング VPC ネットワークを使用できます。サービス境界は組織内のプロジェクトに限定されているため、サービス境界はピアリング VPC ネットワークに影響しません。

階層型ファイアウォール

階層型ファイアウォールは、プロジェクト外で構成されるファイアウォールです(フォルダまたは組織レベルで構成されます)。サービス境界の制限は境界内の一連のプロジェクトに適用されるため、階層型ファイアウォールには適用されません。

マネージド インスタンス グループ

マネージド インスタンス グループを使用すると、VM インスタンスのグループを単一のエンティティとして管理できます。マネージド インスタンス グループ(MIG)は、インスタンス テンプレートを使用して VM を作成します。イメージに関する制限またはプロジェクト間のネットワークとサブネットワークに関する制限がすべて適用されます。つまり、他のプロジェクトのイメージを使用する場合は、プロジェクトが同じ境界に属している必要があります。そうでない場合は、必要なイメージを別のプロジェクトにコピーして、そのプロジェクトをサービス境界に含める必要があります。Google が管理する公開イメージ プロジェクトは、すべてのサービス境界に自動的に追加されます。

共有 VPC でインスタンス グループを使用する場合は、プロジェクトが同じセキュリティ境界内にあることを確認してください。

次のステップ