はじめに

プライベートなインスタンス(GCE)がGoogleAPIを実行する場合、限定公開のGoogleアクセスを利用することでAPI実行することが可能です。
その機能の内容、設定と、当該機能はAWSでいうVPCエンドポイントにあたりますが、AWSとは何が違うのか記載してみます。

概要

インターネットには接続させたくないがCloud Storageにデータを保存したい場合や、
Google Cloudで利用する各サービスのAPIを実行したいケースがあるかと思います。
その場合には限定公開のGoogleアクセスという仕組みを利用して、Google API 実行します。
また、対象のVPCにオンプレミスがVPNなどで接続されている場合、そのオンプレミス環境もGoogle CloudのVPC経由で実行が可能になります。

https://cloud.google.com/vpc/docs/private-google-access?hl=ja

概要図

図の記載にある通りGCEがグローバルIPを持つ場合インターネット経由でAPIを実行できます。
青線がグローバルIPを持たない場合ですが、一番強固なもので以下の条件が揃うと、限定公開のGoogleアクセスとしてAPIアクセスが可能となります(次項に記載もありますがデフォルトドメインではCloud DNSは不要)。
1.限定公開のGoogleアクセスをサブネット単位許可する
2.Cloud DNSに限定公開アクセスのゾーンを作成する
3.ルーティングでデフォルトルートでVPC内のものが指定されていること
4.Firewallで下りの対象へのアクセスを許可する

限定公開のGoogleアクセスの種別

限定公開のGoogleアクセスには以下の種類があります。

  • デフォルトドメイン
  • private.googleapis.com
  • restricted.googleapis.com

https://cloud.google.com/vpc/docs/configure-private-google-access?hl=ja

デフォルトドメイン

こちらを使う場合には、サブネットでの限定公開のGoogleアクセスを有効化することで使うことが可能です。
なお、デフォルトドメインのIPアドレス情報は公開されているアドレスになり、そのIPアドレスセットへルーティングを行います。
なお、対象のIPアドレスは外部からもルーティングは可能ですが、VPC内にとどまるため、Google Cloudからだと、Googleの外に出ずに、API実行が可能です。
設定上、一番制限が少ない設定となります。

private.googleapis.com

こちらのドメインを利用するのは、ほぼすべてのAPIを利用することが可能で、
このドメインを利用するために、限定公開の種類で作成したCloud DNSのゾーンが必要となり、それを利用してルーティングします。
こちらのIPアドレスは一般公開されていないものとなり、中くらいの制限の強さとなります。

restricted.googleapis.com

こちらのドメインを利用するのは、VPC Service Controlsに対応したAPIのみ利用することが可能です。
このドメインを利用するために、限定公開の種類で作成したCloud DNSのゾーンが必要となります。
こちらのIPアドレスは一般公開されていないものとなり、強めな制限となります。

設定

今回中くらいの制限の強さのprivate.googleapis.comの設定を順に実行していきます。

サブネットでの限定公開のGoogleアクセス設定

1.サブネット作成時ないし編集にて限定公開のGoogleアクセスをオンにします

Cloud DNSでの限定公開ゾーン作成

1.ゾーン作成にて種類を限定公開で作成する


2.CNAMEでprivateを指すレコードを作成する


3.privateのAレコードを作成する

Firewallで下りのアクセスを許可する

1.せっかく強固な状態なので、対象IPへのHTTP系アクセスだけ許可する(インスタンスを絞ると尚良しです)

これで必要な設定は完了となり、限定公開のGoogleアクセスが可能となります。

AWSのVPCエンドポイントとの似ている点、異なる点

AWSではサービス個別にVPCエンドポイントを設けて、Gateway型、インターフェース型でそれぞれで制限の方法も若干異なりましたが、実際にルーティングを変えるようなイメージは同じです。
Google Cloudではまずサービス単位での縛りではないので、それ以上の制限はサービスアカウントないしIAMで行う必要があります(AWS側でもそういった制限は更に可能です)。
また、VPCと接続されているオンプレミスに当該機能を提供するような部分も、インターフェース型のVPCエンドポイントと同様となります。

所感

IAPを利用したGCEへアクセスし限定公開のGoogleアクセスを利用してAPI実行を行う。
これらで済む場合には、グローバルIPアドレスを付与せずともGCEでの一通りの作業が可能になり、
外部へのアクセスないし、不正な外部からのアクセスを極力防ぎながら、運用が可能となります。
外部からのアクセスという意味ではサービスアカウントないしIAMアカウントがあれば、
このままだとどこからでも対象プロジェクトへのAPI実行は可能な状態なので、もっと絞るための、
VPC Service Controlsについて、次回は記載したいと思います。