VPC Service Controls に関する雑多な事項の整理
[履歴] [最終更新] (2021/08/16 22:23:09)
最近の投稿
注目の記事

概要

VPC Service Controls (VPC-SC) に関する雑多な事項を記載します。

Private Google Access の基本形

Private Google Access は外部 IP を持たない VM のための機能です。
VPC の機能ですが、VPC-SC と関連するため基本事項を記載します。

Uploaded Image

Private Google Access

Firewall Egress (Internet) 外部 IP Private Google Access Google API アクセス (Public IP) インターネットアクセス
Deny 有/無 ON/OFF X X
Allow ON O O
Allow OFF O O
Allow ON O X
Allow OFF X X

Firewall によって、Google API の Public IP への Egress 通信が許可されている必要があります。

設定箇所

Private Google Access は VPC 内の subnet 毎に有効化します。

Uploaded Image

アクセス先 Google API の IP について

外部IP を持たない VM であっても、Google API のパブリック IP にアクセスできます。

They can reach the external IP addresses of Google APIs and services.
Private Google Access

Google API の IP がパブリック IP であったとしても、ネットワーク経路としては Google ネットワーク内で閉じます。

These IP addresses are publicly routable, but the path from a VM in a VPC network to those addresses remains within Google's network
Configuring Private Google Access
Accessing APIs from VMs with external IP addresses

外部IP を持つ VM であっても、同様にネットワーク経路としては Google ネットワーク内で閉じます。

Though the connection is made from the VM's external IP address, the traffic stays within Google Cloud and is not sent through the public internet.
Accessing APIs from VMs with external IP addresses

インターネットアクセスのための条件

Private Google Access はインターネットアクセスと区別されます。

インターネットアクセスのための条件は以下のすべてを満たすことです。参考: Internet access requirements

  • VPC 内の default internet gateway へのルーティングが存在すること。
  • Firewall による Egress 通信が許可されていること。
  • 外部IP または Cloud NAT が利用できること。

gcloud コマンドが通信する Google API の確認

--log-http オプションを付与することで、具体的にどの Google API と通信しているかを確認できます。

インターネットへの egress 通信が Firewall で禁止されている VPC における Private Google Access

以下のような背景のもと、Public IP による Google API へのアクセスが困難である場合があります。

  • セキュリティ要件でインターネットへの Egress 通信を Firewall で禁止している。
  • Google API が利用する Public IP の範囲をすべて Firewall で許可するのは避けたい。

Google API のエンドポイントは、Google が保有する、Public IP でありながらもインターネットで利用されていない 8 つの IP によってアクセスできます。

Firewall Egress (Internet) Firewall Egress (restricted.googleapis.com) 外部 IP Private Google Access Google API アクセス (restricted.googleapis.com) インターネットアクセス
Deny Deny 有/無 ON/OFF X X
Deny Allow ON O X
Deny Allow OFF O X
Deny Allow ON O X
Deny Allow OFF X X
  • restricted.googleapis.com 199.36.153.4/30
    • VPC-SC でサポートする Google API に対してのみ有効です。
  • private.googleapis.com 199.36.153.8/30
    • 上表は restricted.googleapis.com に関するものですが、private.googleapis.com でも同様です。

DNS 設定

gcloud コマンド等の Google API クライアントが restricted.googleapis.com を利用するための DNS 設定を作成します。参考: DNS configuration

Uploaded Image

restricted.googleapis.com の A レコードはインターネット上の DNS でも引けます。ただし、今回 CNAME レコードのための googleapis.com ゾーンを作成することに伴い、インターネット上の googleapis.com ゾーンを利用できなくなるため、A レコードの作成も必要です。

DNS response policy

DNS private zone の代わりに、DNS response policy を利用することもできます。

For general use of VPC Service Controls, we recommend that you use Cloud DNS response policies to configure DNS for your VPC networks. When you use Cloud DNS, you don't need to create a managed private zone to configure DNS.
Configuring DNS

Uploaded Image

A レコード相当のルール

Uploaded Image

オンプレミスや AWS VPC からの Google API 利用

restricted.googleapis.com および private.googleapis.com は、オンプレミスや AWS VPC に存在する、インターネットアクセス経路を持たないサーバからの Google API アクセスのためにも利用できます。

199.36.153.4/30 および 199.36.153.8/30 の経路はインターネットに広報されていないため、オンプレミスや AWS VPC に対して、GCP に向くような経路情報を広報することが可能になります。

GCP VPC の設定となるため、GCP subnet に対する設定である Private Google Access の有効無効は関係しません。

Private Google Access for on-premises hosts

VPC Service Controls と Private Google Access の併用

VPC Service Controls (VPC-SC) に含まれるプロジェクトの VPC は Authorized VPC となります。Authorized VPC は Google API にアクセスした際に、VPC-SC に含まれるプロジェクトについて、VPC-SC で囲われているサービスを操作できます。

補足: VPC-SC に含まれていないプロジェクトに対してはアクセスできません。

username@instance-1:~$ gsutil cp gs://spls/gsp072/baby-names.zip .
AccessDeniedException: 403 Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Uploaded Image

Private Google Access with VPC Service Controls

以下のいずれの経路であってもアクセスできます。

  1. restricted.googleapis.com 199.36.153.4/30
  2. private.googleapis.com 199.36.153.8/30
  3. インターネットに経路情報が広報されている Public IP

実際の運用では VPC からインターネットへのアクセスは Firewall で制限していると考えられ、その場合「3」の経路は使えません。VPC-SC でサポートしていない Google API へのアクセスが要件として不要である場合は、「2」の経路である必要もありません。その場合、結果として「1」の経路を設定することになります。

その他

関連ページ
    概要 こちらのページで基本的な使い方を把握した GCP の Data Loss Prevention (DLP) サービスを用いると、文章や画像の中に含まれる、電話番号や氏名および住所といった、個人を特定し得る情報 Personally Identifiable Information (PII) の検出を行えます。更に追加の設定によって、検出した情報を消したり他の文字列で置き換えたり、ハッシュ
    概要 こちらのページで基本的な使い方を把握した GCP DLP に相当する AWS サービスに Amazon Comprehend が存在します。GCP VPC 内から Public Internet を経由せずに利用する設定の例を記載します。 AWS VPC と GCP VPC の作成 クラウド 項目 値
    概要 GCP API を GCP の外から利用するためには、一般に Service Account を利用します。その際に Service Account の鍵ファイルを利用すると、鍵ファイルの流出によるリスクが発生します。Workload identity federation という機能を用いることで、鍵を用いない認証の仕組みを実現できます。