🔒

【図解】Google Cloud 初心者のためのVPCSC

2023/01/30に公開

こんにちは。クラウドエースのアイルトンです。
今年はGoogle Cloudのセキュリティ分野についての解説記事をたくさん(?)出せたらなーと思っています!
今回はVPCSCの解説記事です。

この記事を読めば、以下のようなことがわかると思います!

  • VPCSCとはなにか
  • VPCSCで保護したプロジェクトに、どのようにアクセスすればよいのか

VPCSCってなに?

正式にはVPC Service Controlsといいます。
公式ドキュメントには、このように書いてあります。

VPC Service Controls を使用すると、Cloud Storage や BigQuery などの Google Cloud サービスからデータが漏洩するリスクを軽減できます。VPC Service Controls を使用すると、明示的に指定したサービスのリソースとデータを保護する境界を作成できます。

Google Cloudではリソースへの操作(編集や閲覧等)を行う際に、APIを利用します。
VPCSCとは、このAPIを仮想的な境界を用いて保護することで、境界外へのデータの漏洩を防ぐことを目的としたサービスです。
また、VPCSCを設定することで、IAM誤設定による情報漏洩を防ぐことにも繋がります。
保護の対象となるAPIは、個別に選択可能です。
これにより、選択されたAPIに対する外部からのアクセスを境界で遮断します。

保護をする具体例)

  • GCSバケット内にあるデータをコピーされたくない
  • BQデータセット内にあるデータを閲覧されたくない
  • Spannerデータベース内にあるデータを外部に持ち出されたくない

構成要素

VPCSCを構成する要素は以下の5つです。

構成要素 機能
サービス境界 Google CloudのAPIを保護する
アクセスレベル サービス境界へのアクセスを許可、または制限する
サービス境界の上り(内向き)ポリシー 境界内のAPIへのアクセスを許可、または制限する
サービス境界の下り(外向き)ポリシー 境界内のAPIから境界外へのアクセスを許可、または制限する
境界ブリッジ サービス境界間の通信を許可する

基本的に、サービス境界でAPIを保護し、それ以外の要素を使って特定のAPIアクセスを許可します。

サービス境界

サービス境界で保護すると、境界外から境界内、および、境界内から境界外へのGoogle Cloud APIアクセスはできなくなります。
サービス境界内のGoogle Cloud APIアクセスは可能です。
これにより、サービス境界外へのデータの持ち出しができなくなります。
また、1つのプロジェクトに設定できるサービス境界は1つだけです。

service

アクセスレベル

できること

サービス境界で保護されたAPIのリソースに対し、境界外部からのGoogle Cloud APIアクセスを許可します。
アクセスを制御できるアクセス元は以下の種類があります。

  • IPアドレス
  • サービスアカウント/ユーザーアカウント
  • デバイスポリシー

なお、デバイスポリシーを使用するには、BeyondCorp Enterprise契約が必要となります。

access

特徴

アクセスレベルでは、境界内部から外部へのアクセスを許可することはできません。
また、以下のような細かいアクセスの制御は行うことはできません。

  • 境界内部の特定のAPIのみアクセス可能にすること
  • 境界内部の特定のプロジェクトのみアクセス可能にすること

access

アクセスレベル自体はサービス境界に付随するサービスではないので、複数のサービス境界に対して、同じアクセスレベルを使用してアクセス制御をすることができます。
関わっているすべてのサービス境界に対してアクセスする必要がある管理PCのIPアドレスなどからのアクセスを許可するのに使えそうですね。

access

上り(内向き)ポリシー

上り(内向き)ポリシーのルールを設定することで、サービス境界で保護されたリソースに対して、アクセスすることが可能となります。
アクセスレベルより細かい穴あけが可能です。
たとえば、以下のような細かいアクセス制御が可能です。

  • サービス境界内の特定のAPIのみ許可すること
  • サービス境界内のあるAPIの特定メソッドのみ許可すること
  • サービス境界内の特定のプロジェクトのみ許可すること

上りポリシーには、アクセス元(FROM)として、サービスアカウント/ユーザーアカウントIDまたはアクセスレベルを指定できます。

access

上り(内向き)ポリシーは、アクセスレベルよりも細かいアクセス制御ができますが、複数のサービス境界に同じポリシーを適応できません。
上り(内向き)ポリシーは、サービス境界を構成する要素の一つであるため、サービス境界ごとにポリシーを設定する必要があります。

access

下り(外向き)ポリシー

下り(外向き)ポリシーのルールを設定することで、サービス境界で保護されたリソースからサービス境界外のリソースやサービスに対して、アクセスすることが可能となります。
上り(内向き)ポリシーと同様に、細かい穴あけが可能です。
たとえば、以下のような細かいアクセス制御が可能です。

  • サービス境界内の特定のAPIのみ許可すること
  • サービス境界内のあるAPIの特定メソッドのみ許可すること
  • サービス境界内の特定のプロジェクトのみ許可すること

下りポリシーのアクセス先(To)として、プロジェクトIDやAPIを指定することができます。

access

下り(外向き)ポリシーは、アクセスレベルよりも細かいアクセス制御ができますが、複数のサービス境界に同じポリシーを適応できません。
下り(外向き)ポリシーは、サービス境界を構成する要素の一つであるため、サービス境界ごとにポリシーを設定する必要があります。

access

境界ブリッジ

境界ブリッジを設定することで、別の境界にあるプロジェクトとの通信が可能となります。
境界ブリッジは双方向です。
また、1 つのプロジェクトに他のプロジェクトと接続する複数のブリッジを設定できます。

access

ただし、プロジェクトのアクセスレベルとサービス制限は、プロジェクトが属するサービス境界によって制御されます。
access

あるサービス境界に属するプロジェクトから別の境界に属するプロジェクトに間接的にアクセスすることはできません。
access

サービス境界に属していないプロジェクトは、境界ブリッジで別のプロジェクトに接続できません。
access

VPCSCでサポートされているプロダクトとサービス

VPCSCでサポートされているプロダクトとサービスは公式ドキュメントにまとまっているので参考にしてください。
https://cloud.google.com/vpc-service-controls/docs/supported-products?hl=ja

まとめ

本記事ではVPCSCの基本的な構成について図解しました。
図を描くことによって、理解が深まった気がします。
本記事が、みなさまの理解の手助けにもなっていれば幸いです!

Discussion