Google CloudのBigQueryやCloud Storage など、各種サービスにアクセスする際、通常はインターネット経由でアクセスします。
しかし、インターネット経由では、悪意のある攻撃者にデータを盗み取られるリスクがあります。そのような場合に限定公開のGoogleアクセスを使用すると、プライベートネットワーク経由でGoogle Cloudの各種サービスに安全にアクセスできます。
限定公開のGoogleアクセスは、VPCを作成する際にサブネットで設定します。ただし、それだけではプライベート接続を実現できません。
限定公開のGoogleアクセスを利用するには、対象プロジェクトでCloud DNSの設定を行う必要があります。
今回は、この設定方法について詳しく解説します。
セキュリティ要件の厳しいプロジェクトでは、ほぼ確実に限定公開のGoogleアクセスが使用されます。今後、そのようなプロジェクトに関わる方にとって必見の内容です。
ぜひ、最後までご覧いただけると嬉しいです!
限定公開のGoogleアクセスとは
Google Cloudでは、仮想マシン(VM)やオンプレミス環境からGoogleのAPIやサービスにアクセスする方法として、限定公開のGoogle アクセス(Private Google Access)を提供しています。これは、インターネットを経由せずにGoogleのサービスへ安全に接続するための仕組みです。
通常、Google Cloud上のVMインスタンスがGoogleのAPIにアクセスする際には、インターネットを経由するのが一般的ですが、限定公開のGoogle アクセスを利用すると、Google Cloudのプライベートネットワーク内で直接通信できるようになります。これにより、以下のようなメリットが得られます。
- セキュリティの向上:インターネットを経由しないため、外部からの攻撃リスクを低減できる。
- アクセス制御の強化:VPC(Virtual Private Cloud)内での通信となるため、ネットワークのポリシー設定を適用しやすい。
- パフォーマンスの最適化:Google Cloud内部で通信が完結するため、通信遅延が抑えられる。
限定公開のGoogle アクセスは、特定のGoogle Cloudサービス(Cloud Storage、BigQuery、Cloud Functions など)に対して有効であり、VPCのサブネットレベルで設定が可能です。さらに、Cloud NATと組み合わせることで、プライベートIPのみを持つVMからもGoogle APIへの接続を実現できます。
次の章では、限定公開のGoogleアクセスの具体的なメリットやユースケースについて詳しく説明します。
限定公開のGoogle アクセスのユースケースと注意点
限定公開のGoogle アクセスのユースケースと注意点について、それぞれ説明します。
限定公開のGoogleアクセスのユースケース
- 機密性の高いデータの処理
- 金融機関や医療機関など、機密性の高いデータを扱うシステムで利用されます。
- データ漏洩のリスクを低減できるます。
- 内部システムからのアクセス
- 社内システムやオンプレミス環境からGoogle APIやサービスへのアクセスを限定したい場合に有効であります。
- VPNや専用線接続と組み合わせて利用する場合もあります。
- 開発環境での利用
- 開発環境でGoogle APIやサービスを利用する際に、セキュリティを強化したい場合に利用できます。
- 本番環境と同等のセキュリティレベルで開発を進めることができます。
限定公開のGoogleアクセス利用時の注意点
- 適用範囲とサービス間通信
- 限定公開のGoogleアクセスは、VPCネットワーク内の外部IPアドレスを持たないリソース(主にVMインスタンス) に適用される設定です。
- Cloud StorageからBigQueryへのデータロードなど、Googleのサービス間通信は、VPCを経由せず、Googleの高速で安全な内部ネットワークで直接実行されます。
- サービス間の連携は、限定公開Googleアクセスの設定有無にかかわらず、本質的にプライベートな接続となっています。
- DNS設定
- 限定公開のGoogleアクセスを利用する場合、DNS設定が必要になります。
- Google Cloud DNSやオンプレミス環境のDNSサーバーを利用するケースもあります。
- プロキシ設定
- 限定公開のGoogleアクセス環境からインターネット上の特定のリソースにアクセスする必要がある場合、プロキシサーバーの設定が必要になる場合もあります。
- API制限
- Google APIやサービスによっては、限定公開のGoogleアクセス環境からのアクセスが制限されている場合があります。
- 利用するAPIのドキュメントを確認する必要があります。
限定公開のGoogle アクセスのユースケースと注意点のまとめ
限定公開のGoogleアクセスは、インターネットを使わずにGoogleサービスへ安全に接続できる仕組みで、セキュリティの強化とネットワーク構成の簡素化が大きなメリットです。インターネットを介さない通信により、機密データの保護にも適しています。金融・医療機関や社内システム、開発環境など幅広いユースケースがあります。ただし、DNSやプロキシの設定、APIの利用制限には注意が必要です。用途と構成に応じた設計が求められます。
限定公開のGoogle アクセスの設定方法
それでは、実際に限定公開のGoogle アクセスの設定方法について、説明します。
今回は、VPCのサブネットにデプロイしたCompute EngineのVMからCloud Storageにアクセスするとして、設定方法を説明します。VMには外部IPを付与せず、内部IPだけ付与します。VMがインターネット接続するためには、Cloud NATとCloud Routerの設定が必要ですが、今回は、Cloud Storageにのみアクセスするので、その設定方法のみに限定して説明を行います。
Cloud NATとCloud Routerを構築する場合は、以前のブログで説明していますので、ご参照ください。
ちなみに、Cloud DNSはお金がかかるので、作成した後は、すぐ削除してください。
限定公開のGoogle Cloudアクセスの設定方法は、以下5ステップです。
- VPCとサブネットの作成
- Cloud DNSの設定
- VMの構築
- ファイアウォールルールの設定
- 動作テスト
1つずつ詳しく説明していきます。
1. VPCとサブネットの作成
まずは、VPCとサブネットを作成します。今回は、費用を抑えるため、USリージョンを使用します。実際のプロジェクトでは、顧客の要件に応じて、リージョンの指定を行ってください。
Google Cloud コンソールで、プロジェクトを開きVPCを開きます。コンソール上部の「VPC ネットワークを作成」を選択します。

VPCに関する下記項目を入力します。今回は、下記のように設定しました。
- 名前:vpc-us-central
- 説明(任意):us-centralのVPC
上記以外は、すべて初期設定です。

次に、サブネットに関する設定を入力します。今回は下記設定を行いました。任意で設定してください。
- 名前:subnet-us-central
- 説明(範囲):us-centralのサブネット
- IPv4 範囲:192.168.0.0/24
上記以外は、初期設定です。

次にオプションの設定を行います。必ず「プライベートGoogle アクセス」の設定をオンにしてください。この設定が、限定公開のGoogle アクセスの設定です。企業の場合、フローログもオンにすることが一般的ですが、今回は、限定公開のGoogle アクセスの説明になりますので、オフのまま進めます。

それ以外の設定は、初期設定のまますすめます。

最後に、「作成」を選択します。

正常にVPCが作成されると「VPC ネットワーク」の一覧に表示されます。

以上で、VPCとサブネットの作成は終わりになります。
2. Cloud DNSの設定
次に、限定公開のGoogle アクセス用に、Cloud DNSを設定します。
今回は、VPC Service Controls対応のGoogle APIに限定せず、一般的なGoogle APIの設定を行います。また、今回は、Cloud Storageしか使用しませんが、一般的なGoogle APIの設定を行う方法も併せて説明します。Cloud DNSの設定を行う場合、下記Google Cloudのドキュメントの「ネットワークの構成」を参照して設定を行います。
まずは、Cloud DNSを開きます。私のように、APIを有効にする画面が表示された場合、「有効にする」を選択してください。

設定する項目については、先程ののURLの「ネットワークの構成」の表にある「private.googleapis.com」の欄を参照します。VPC Service Controlsに対応していないGoogle APIを使用する場合、ドメイン名は、「private.googleapis.com」に対して「199.36.153.8/30」のIPアドレスを紐づけします。「199.36.153.8/30」は、「199.36.153.8」「199.36.153.9」「199.36.153.10」「199.36.153.11」の4つのIPアドレスになります。
実際に、Cloud DNSの設定を行います。
コンソール上部の「ゾーンを作成」を選択します。

下記設定を行います。ゾーン名は、「.(ピリオド)」が使用できないため、ピリオドをハイフンにして設定するのが一般的です。
- ゾーンのタイプ:プライベート
- ゾーン名:googleapis-com
- DNS 名:googleapis.com
- 説明(任意):空欄
- オプション:デフォルト(限定公開)

次にネットワークを選択します。「1. VPCとサブネットの作成」で選択したVPCを選択します。選択後、「作成」を選択します。
- ネットワーク:vpc-us-central

正常に、ゾーンが作成されると、レコードセットの一覧が表示されます。ちなみに、DNS 名の最後には、「.(ピリオド)」が自動的に追記されます。DNS名の最後にピリオド(.
)が追加される理由は、DNSの 「FQDN(完全修飾ドメイン名)」 の表記ルールに関連しているためです。こちらについては、今後、別のブログで詳しく説明しようと思いますので、DNS名の最後には「.(ピリオド)」が追加されると思っていてください。
次に、レコードを作成します。「標準を追加します」を選択します。

まずは、Aレコードの登録を行います。Aレコードは、ドメイン名を対応するIPアドレスにマッピングする、DNSにおける基本的なレコードの一つです。これにより、ユーザーのリクエストが適切なサーバーへ正しくルーティングされます。
DNS名には、privateを入力します。IPv4アドレスに以下4つのアドレスを入力します。それ以外は、初期設定のままで構いません。入力後、「作成」を選択します。
- DNS名:private(.googleapis.com.)
- IPv4 アドレス1:199.36.153.8
- IPv4 アドレス2:199.36.153.9
- IPv4 アドレス3:199.36.153.10
- IPv4 アドレス4:199.36.153.11

正常にレコードが入力されると、一覧に表示されます。
続いて、CNAMEのレコードを追加するので、先程同様、「標準を入力します」を選択します。

CNAME(Canonical Name)レコードは、あるドメイン名を別のドメイン名にエイリアスとして設定するDNSレコードです。主にサブドメインを別のホスト名に転送する際に使用され、例えば logging.googleaips.com
を private.googleaips.com
に紐付けることができます。
DNS名にはワイルドカードを表す「*(アスタリスク)」を入力します。リソース レコードのタイプは「CNAME」を選択し、正規名 1に、private.googleaips.com
を入力します。それ以外の設定は、初期設定のままです。ちなみに、ワイルドカード(*
)は、特定のサブドメインが存在しない場合に指定したレコードへ解決させるDNSの仕組みで、例えば *.googleapis.com
を設定すると logging.googleapis.com
や monitoring.googleapis.com
など未定義のサブドメインにも適用されます。
最後に「作成」を選択します。
- DNS名:*(アスタリスク)
- リソース レコードのタイプ:CNAME
- 正規名 1:
private.googleaips.com
.
※下記画面の最後に.(ピリオド)はありませんが、自動的に追加されます。

正常に登録されると、レコード一覧に表示されます。その後、左上の戻るアイコンを選択します。

次に、Cloud Storage APIのためのゾーンを登録します。「ゾーンを作成」を選択します。

下記設定を行います。
- ゾーンのタイプ:プライベート
- ゾーン名:storage-cloud-google-com
- DNS 名:sotrae.cloud.google.com
- 説明(任意):空欄
- オプション:デフォルト(限定公開)

次にネットワークを選択します。先ほどと同様に、「vpc-us-central」を選択します。最後に、「作成」を選択します。
- ネットワーク:vpc-us-central

次に、レコードを登録します。Cloud Storageの場合、ワイルドカード(*)のドメインがないため、CNAMEのレコードは必要ありません。Aレコードだけ登録します。このように、限定公開のGoogle アクセスでCloud DNSの設定を行う場合、ワイルドカードのあるAPIは、CNAMEとAレコードを登録し、ワイルドカードのないAPIは、Aレコードのみ登録します。
「標準を入力します」を選択します。

下記を入力し、最後に「作成」を選択します。
- DNS名:空欄(初期設定)
- リソース レコードのタイプ:A
- IPv4 アドレス1:199.36.153.8
- IPv4 アドレス2:199.36.153.9
- IPv4 アドレス3:199.36.153.10
- IPv4 アドレス4:199.36.153.11

正常にレコードが入力されると、一覧に表示されます。左上の戻るボタン(画像に表示なし)を選択します。

Cloud DNSの一覧に、登録したゾーンが表示されます。

このように、限定公開のGoogle アクセスを使用して、各種Google APIに接続する場合、Cloud DNSでゾーンとレコードを登録することで、インターネットを経由せず、アクセスすることができます。主に、パブリックIPを持たないリソースがGoogle Cloudのサービスにアクセスする場合に、使用されます。
3. VMの構築
次に、VMの構築を行います。VMも料金が極力発生しないように、最小スペックで作成します。VMインスタンスを開きます。その後、「インスタンスを作成」を選択します。

マシンの構成を設定します。下記設定を行います。リージョンは、サブネットを作成したリージョンと同じにしてください。
- 名前(任意):初期設定
- リージョン:us-central1(サブネットと同じリージョン)
- マシンのシリーズ:E2(低コスト)

プリセットは、下記を選択します。料金を抑えるためこの設定を使用しています。
- プリセット:e2-micro

次にOSとストレージを設定します。「変更」を選択します。

ブートディクスの種類を「標準永続ディスク」に変更し、「選択」を選択します。
- オペレーシング システム:Debian
- バージョン:Debian GNU/Linux 12 (bookworm)
- ブートディスクの種類:標準永続ディスク
- サイズ:10GB

その他の設定は、初期設定のまますすめます。

次に「ネットワーキング」の設定を行います。まずは、初期設定のまま進めます。

ネットワークインターフェースの設定では、ネットワークとサブネットワークを、一番最初に作成してVPCをサブネットを選択します。外部 IPv4 アドレスは。「なし」を選択します。最後に「完了」を選択します。
- ネットワーク:vpc-us-central
- サブネットワーク:subnet-us-central IPv4
- プライマリ内部 IPv4 アドレス:エフェメラル(自動)
- 外部 IPv4 アドレス:なし

次にオブザーバビリティを設定します。初期設定のまま進めます。

次にセキュリティを設定します。初期設定のまま進めます。


最後に「詳細」を設定します。初期設定のまま進めます。最後に「作成」を選択します。


正常にVMが作成されると、一覧に表示されます。

以上で、VMの構築は終わりになります。今回は、料金が極力発生しないように、最小スペックで構築しました。
4. ファイアウォールルールの設定
次に、ファイアウォール ルールの設定を行います。ファイアウォール ルールは、限定公開のGoogle アクセス用のルールとIAP用のルールの2つを作成します。
まずは、限定公開のGoogle アクセス用ファイアウォールルールを作成します。VPC ネットワークを開き、一番最初に作成したVPCを選択します。

ファイアウォールタブを選択し、「ファイアウォール ルールを追加」を選択します。

下記の通り設定します。
- 名前:任意
- 説明(任意):任意
- ネットワーク:vpc-us-central
- 優先度:初期設定
- トラフィックの方向:下り(外向き)
- 一致したときのアクション:許可

下記の通り設定します。
- ターゲット:ネットワーク上のすべてのインスタンス
- 送信先フィルタ:IPv4 範囲
- 送信先 IPv4 範囲:199.36.153.8/30
- ソースフィルタ:IPv4 範囲
- 送信元 IPv4 範囲:192.168.0.0./24

下記の通り設定し、最後に「作成」を選択します。
- プロトコルとポート:指定したプロトコルとポート
- TCP:オン
- ポート:443

正常に作成されると、一覧に表示されます。

次に、IAP用のファイアウォールルールを作成します。「ファイアウォール ルールを追加」を選択し、下記設定を行います。ちなみに、ファイアウォールでIAP用の設定が必要な理由は、IAPを経由する正規のトラフィックのみを許可し、それ以外の不正なアクセスからバックエンドリソースを保護するためです。
- 名前:任意
- 説明(任意):任意
- ネットワーク:vpc-us-central
- トラフィックの方法:上り(内向き)
- 一致したときのアクション:許可

下記の通り設定します。
- ターゲット:ネットワーク上のすべてのインスタンス
- 送信先フィルタ:IPv4 範囲
- 送信先 IPv4 範囲:35.235.240.0/20
- 2 番目のソースフィルタ:なし
- 送信先フィルタ:IPv4 範囲
- 送信元 IPv4 範囲:192.168.0.0./24

下記の通り設定し、最後に「作成」を選択します。(今回はSSHを使用しますので、22番ポートだけ許可します。)
- プロトコルとポート:指定したプロトコルとポート
- TCP:オン
- ポート:22,(3389)
※リモートデスクトップを使用する場合、3389も追加します。

正常に作成されると、一覧に表示されます。

5. 動作テスト
最後に動作テストを行います。テスト内容としては、通常のインターネット経由でGoogle APIに接続した場合のIPアドレスと、限定公開のGoogleアクセスが設定されたサブネットからGoogle APIに接続した場合のIPアドレスを比較し、それぞれが異なるIPアドレスにルーティングされることを確認します。これにより、Google Cloudのプライベート接続を通じてGoogle APIにアクセスしていることを検証します。
通常、クライアントPCから、nslookコマンドを使用して、Cloud Storage APIのFQDNを指定すると、下記画像のようにグローバルIPアドレス(172.217.25.174)が表示されます。nslookup
コマンドは、ドメイン名とIPアドレスの相互変換を行うためのDNS問い合わせツールです。

しかし、サブネット内のVMからnslookupコマンドを使用して、Cloud Storage APIのFQDNを指定すると、限定公開のGoogle アクセスで設定したIPアドレスが表示されます。
なお、このサブネットに配置された VM はインターネットに接続できないため、Cloud Router と Cloud NAT を構成した後、下図のようにファイアウォールルールを設定します。これは、nslookup
コマンドをインストールするために、一時的にインターネットへの HTTPS 通信を許可する設定です。具体的には、外向きの通信を許可し、送信先を 0.0.0.0/0
、許可するポートを TCP:443
に設定します。



その後、下記コマンドを使用してnslookupコマンドをインストールしてください。
sudo apt-get update
sudo apt-get install dnsutils
nslookup
コマンドを実行し、VPCにデプロイしたVMでCloud Storage の FQDN を指定すると、下記画像のように Cloud DNSで設定したIP アドレスが表示されます。

このように、限定公開の Google アクセスを利用する際には、Cloud DNS とファイアウォールルールの設定が必要です。これらを適切に構成することで、外部 IP を持たない VM でも、インターネットを経由せずに Google Cloud の各種サービスへプライベートネットワーク経由でアクセスできるようになります。
まとめ
今回は、下記3点について説明しました。
- 限定公開の Google アクセスとは
- 限定公開のGoogle アクセスのユースケースと注意点
- 限定公開のGoogle アクセスの設定方法
限定公開のGoogle アクセスは、セキュリティ要件の厳しいプロジェクトでは、まず、採用されるサービスです。ただし、初めての人は、何を設定すべきか分からないと思うので、当ブログを参照して、みなさんも、限定公開のGoogle アクセスを使ってみてください。
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!