GCP を利用したセキュリティ要件対応 : VPC Service Controls を試してみた (その 1 : 概念の確認)

TLDR

  • 「BigQuery IP 制限」でこの記事にたどり着いた方、この記事はあなたのための記事です :)
  • VPC Service Controls を利用することで、 BigQuery や GCS に対する IP 制限だけでなく、データエクスポートの制限なども含めた統合的なセキュリティを、簡単に実装できます
  • この記事は Part 3 あるうちの Part 1 です (Part 2, Part 3)

オンプレミスとの混在環境や、すでにあるオンプレを前提としたセキュリティポリシー、あるいはコンプライアンスなどに対応する際には様々なセキュリティ要件が存在すると思います。

そのような対応に Google Cloud Platform (GCP) 上で利用できる機能の一つが VPC Service Controls (以下、VPC SC)です。VPC SC は 2019 年 1 月 21 日現在、GCP の組織 を利用していれば、誰でも利用することができます。VPC Service Controls を利用することで、以下のようなことが可能となっています。

  • GCP のマネージドサービスである BigQueryGoogle Cloud Storage (以下GCS) にアクセスできる GCP のプロジェクト、ソース IP 、などをIAMに加えて更に制限する
  • BigQuery や GCS 上でのデータコピーや持ち出しを特定のプロジェクト内だけに制限する
  • GCP のマネージド・サービスに対する API アクセスをオンプレミスかなどの環境から Cloud Interconnect を通じて行う
ユースケース 1 : IAMに加えてソース IP などを利用して制限
ユースケース 2: BigQuery や GCS の読み出し、書き出し先を機密領域内にのみ許可し、他のプロジェクトのGCS や BigQuery には許可しない
ユースケース 3: オンプレミスなどの環境からInterconnect を通じて Google のマネージドサービスにアクセスする

IAM に加え、これらの制限を用いることで、以下のようなメリットがあります。

  • 認証情報が盗まれた際にも不正利用を防ぐ
  • マルウェアに感染したクライアントや内部犯によるデータの持ち出しを防ぐ
  • IAM ポリシーの設定ミスによるデータの公開を防ぐ

この第一回の記事では、まずはどのようなことができて、どのようなコンポーネントが存在するかを解説したいと思います。記事の題名は VPC Service Controls となっていますが、厳密には以下では 2 つのサービスを取り扱います。

  1. VPC Service Controls
  2. Access Context Manager

ではさっそくそれぞれどのような概念とコンポーネントがあるのかを見ていきましょう。

VPC Service Controls のコンポーネント

VPC Service Controls は仮想的なセキュリティの境界線を用いて GCP に保管されたデータを厳重に守るためのサービスです。

サービス境界線

仮想的な境界線です。 作成時にはGCP のプロジェクト、保護するGCPサービスを指定します。サービス境界線に含めることで、このプロジェクト内にある VPC やGCPのマネージドサービス(対応しているサービスの一覧はこちらで確認できます)が、VPC Service Controls により保護をされるようになり、同一境界線内部にあるリソースからしかアクセスができなくなります。

サービス境界線のイメージ

例えば、上記の図では機密情報が含まれる GCP プロジェクトを用意し、そこのデータを操作するための Compute Engine インスタンスや作業領域となる GCS を別のプロジェクトとして用意し、それらをサービス境界線にいれています。この場合、サービス境界線内のリソースからは保護したサービスを操作できますが、サービス境界線外のプロジェクトやインターネットからの操作は、 all deny となります。

また、API の呼び出し元を単に評価するだけではなく、 BigQuery からデータをエクスポートする際にエクスポート先の BigQuery データセットや GCS のバケットが所属するGCPプロジェクトも評価を行い、サービス境界線外であった場合にはきちんとエラーが返るようになっています。

ただし、GCP ではない環境から操作を行いたい、という場合もあるでしょう。(例: オフィスから接続しているラップトップ )その場合には、 Access Context Manager で作成した アクセスレベル をサービス境界線に加えることで、サービス境界線外(例:インターネット)からのアクセスを許可することができます。 Access Context Manager のドキュメントを参考に内容を見てみましょう。

Access Context Manager のコンポーネント

Access Context Manager は GCP のリソースへのアクセスを制御する際に利用できる IAM に加えて更に粒度の細かい制御を提供するサービスです。

Access Context Manager は Google の提唱する企業セキュリティモデルである BeyondCorp を実現するコンポーネントの一部で、 ゼロトラストネットワーク(どのネットワークも信用せずセキュアに社内情報にアクセスさせるモデル)を実現するための重要な要素です。Access Context Manager を利用することで、複雑なルールを指定したアクセス要件を簡単に設定することができます。

アクセスポリシー

アクセスポリシーは、組織全体で共有されるアクセスレベルの箱です。アクセスレベルなどのエンティティを格納するために利用されます。デフォルトで作成されるため、特に気にする必要はありませんが、複数のポリシーを作成することも可能です。

アクセスレベル

アクセスレベルは以下のようなアクセス元の要件を設定することが可能です。AND や OR などの条件を追加して複雑な要件を構成することもできます。

  • デバイス、OS
  • IPアドレス
  • ユーザーや Service Account

例えば、アクセスレベルとして以下のようなシンプルなものを作成してみました。以下の例では、 simple_access_resctriction_source_ip ではソースIPでアクセスを制限、simple_access_restriction_member では Google アカウントでアクセスを制限する例を示しています。

Access Context Manager 上で設定したアクセスレベルの例。さらに AND 条件などを駆使すれば複雑なルールも構成が可能。

Access Context Manager と VPC Service Control の関係

ここまでで紹介したアクセスレベルを、 VPC Service Controls や、 Cloud IAM Condition といった機能で利用することができます。(正確には、 VPC Service Controls は Access Context Manager の API を利用して、作られた機能というように紹介されています。)

Access Context Manager で作成したアクセスレベルを VPC Service Controls で利用することで、VPC Service Control のサービス境界線内以外でも、ソース IP を指定して BigQuery などのマネージド・サービスにアクセスを許可することができます。

例えば、以下の例では、 VPC Service Controls で作成したサービス境界に、上記で作成した simple_access_restriction_soure_ip アクセスレベルを設定することで、サービス境界外であるインターネットの 203.0.113.100/32 からのアクセスを可能にしています。

アクセスレベルをサービス境界に設定した例, サービス境界内からでなくともアクセスレベルの条件に一致すれば、 BigQuery などのサービスにアクセスが可能になる。
構成した構成のイメージ図

ここまでの関係を図でまとめると、以下のようになります。

VPC Service Control と Access Context Manager で扱う概念の関係。英語は RESTで利用するリソース名。
  • アクセスポリシーはサービス境界線、 アクセスレベルなどを格納するための箱
  • サービス境界線は保護するプロジェクトと保護するサービスを指定し、保護したものを default deny 、境界線内部は allow とする
  • Access Context Manager でアクセスレベルを構成できる。ソース IP を始めとした様々な要件に対応可能
  • サービス境界線にアクセスレベルを指定することで、そのアクセスレベルにマッチした境界線外からのアクセスを許可することができる

上記のような概念を抑えて、再度サービスを振り返ると、以下のようになります。

  • Access Context Manager は高度なアクセスの要件(アクセスレベル)を設定できる。アクセス要件には ソース IP アドレス、 ユーザ認証情報などが利用できる。
  • VPC Service Controls はサービス境界線を利用して BigQuery などの GCP のマネージド・サービスをサービス境界線外から保護できる。サービス境界線外からアクセスをする場合には、Access Context Manager で管理しているアクセスレベルをサービス境界線にアタッチすることで、IPアドレスを始めとした条件を評価して許可できる。 IAM に加えて評価をされるため、より強固にデータを保護することができる。
  • VPC Service Control は単なる IP 制限だけでなく、GCP プロジェクト内でのデータのエクスポートやコピーといったユースケースまでをカバーするセキュリティのモデルを実現している。

第一回ということで、 VPC Service Control を中心とした GCP 上での高度なセキュリティの概念を掴んでみました。

次回はこの2つのサービスを利用して、サービス境界線内部のリソースからの BigQuery へのアクセスを試してみたいと思います。第二回へのリンクはこちら。

Disclaimer: この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。