外部 IP アドレスを持つ VM から API にアクセスする
このページに記載されているネットワーク要件が満たされている場合、ネットワーク インターフェースに割り振られた外部 IP アドレスを持つ仮想マシン(VM)インスタンスは Google API とサービスに接続できます。接続は VM の外部 IP アドレスから行われますが、トラフィックは Google Cloud 内にとどまり、公共のインターネットを介して送信されません。
ネットワーク要件
外部 IP アドレスを持つ VM から Google API とサービスにアクセスするには、次の要件を満たす必要があります。
- Google Cloud コンソールの [API とサービス] ページで、使用する Google API を有効にする必要があります。
IPv6 を使用して Google API とサービスに接続する場合は、次の両方の要件を満たす必要があります。
VM に外部
/96
IPv6 アドレス範囲を構成します。VM で実行されているソフトウェアは、送信元がこれらの IPv6 アドレスのいずれかに一致するパケットを送信する必要があります。
- 選択した構成によっては、DNS エントリ、ルート、ファイアウォール ルールの更新が必要になる場合があります。詳細については、構成オプションの概要をご覧ください。
構成オプションの概要
次の表は、限定公開の Google アクセスのさまざまな構成方法をまとめたものです。詳細な構成情報については、ネットワークの構成をご覧ください。
ドメイン オプション | DNS 構成 | ルーティング構成 | ファイアウォール構成 |
---|---|---|---|
デフォルト ドメイン | 特別な DNS 構成は必要ありません。 | VPC ネットワークが、Google API とサービスで使用する IP アドレス範囲へのトラフィックをルーティングできるようにしてください。 |
Google API とサービスで使用する IP アドレス範囲への下り(外向き)がファイアウォール ルールで許可されるようにしてください。 デフォルトの下り(外向き)許可のファイアウォール ルールでは、このトラフィックをブロックする優先度の高いルールがない限り、このトラフィックが許可されます。 |
private.googleapis.com
|
次の IP アドレスにリクエストを送信するように、限定公開 DNS ゾーン内に DNS レコードを構成してください。 IPv4 トラフィックの場合:
IPv6 トラフィックの場合:
|
VPC ネットワークに次の IP 範囲へのルートがあるようにしてください。 IPv4 トラフィックの場合:
IPv6 トラフィックの場合:
|
次の IP 範囲への下り(外向き)がファイアウォール ルールで許可されるようにしてください。 IPv4 トラフィックの場合:
IPv6 トラフィックの場合:
|
restricted.googleapis.com
|
次の IP アドレスにリクエストを送信するように DNS レコードを構成してください。 IPv4 トラフィックの場合:
IPv6 トラフィックの場合:
|
VPC ネットワークに次の IP 範囲へのルートがあるようにしてください。 IPv4 トラフィックの場合:
IPv6 トラフィックの場合:
|
次の IP 範囲への下り(外向き)がファイアウォール ルールで許可されるようにしてください。 IPv4 トラフィックの場合:
IPv6 トラフィックの場合:
|
ネットワークの構成
このセクションでは、VPC ネットワーク内の VM が Google API とサービスにアクセスするために必要な基本的なネットワーク要件について説明します。
ドメイン オプション
Google API とサービスへのアクセスに使用するドメインを選択します。
private.googleapis.com
と restricted.googleapis.com
の仮想 IP アドレス(VIP)は、TCP を使用する HTTP ベースのプロトコル(HTTP、HTTPS、HTTP/2)のみをサポートします。MQTT や ICMP などの他のプロトコルはサポートされていません。
ドメインと IP アドレス範囲 | サポート対象のサービス | 使用例 |
---|---|---|
デフォルト ドメイン。
さまざまな IP アドレス範囲 - デフォルト ドメインの IP アドレスを参照することにより、デフォルト ドメインで使用される可能性のあるアドレスを含む IP 範囲のセットを決定できます。 |
VPC Service Controls でサポートされているかどうかにかかわらず、ほとんどの Google API とサービスへの API アクセスを有効にします。これには、Google マップ、Google 広告、Google Cloud への API アクセスが含まれます。また、Google Workspace のウェブ アプリケーション(Gmail や Google ドキュメントなど)とその他のウェブ アプリケーションも含まれます。 |
デフォルト ドメインは、 |
|
VPC Service Controls でサポートされているかどうかにかかわらず、ほとんどの Google API とサービスへの API アクセスを有効にします。Google マップ、Google 広告、Google Cloud、さらに以下のリストを含む他のほとんどの Google API への API アクセスが含まれます。Gmail や Google ドキュメントなどの Google Workspace ウェブ アプリケーションはサポートされていません。インタラクティブなウェブサイトはサポートされていません。 一致するドメイン名:
|
次の状況では
|
|
VPC Service Controls でサポートされている Google API およびサービスへの API アクセスを有効にします。 VPC Service Controls をサポートしない Google API とサービスへのアクセスをブロックします。Google Workspace API、または Gmail や Google ドキュメントなどの Google Workspace ウェブ アプリケーションはサポートされていません。 |
VPC Service Controls でサポートされている Google API とサービスにアクセスする必要がある場合にのみ
|
restricted.googleapis.com
を使用します。これにより、データ引き出しのリスクがさらに軽減されます。restricted.googleapis.com
を使用すると、VPC Service Controls でサポートされていない Google API とサービスへのアクセスは拒否されます。詳細については、VPC Service Controls に関するドキュメントのプライベート接続の設定をご覧ください。private.googleapis.com
と restricted.googleapis.com
の IPv6 サポート
次の IPv6 アドレス範囲を使用して、IPv6 クライアントから Google API とサービスにトラフィックを転送できます。
private.googleapis.com
:2600:2d00:0002:2000::/64
restricted.googleapis.com
:2600:2d00:0002:1000::/64
private.googleapis.com
または restricted.googleapis.com
ドメインを使用していて、IPv6 アドレスを使用するクライアントがある場合は、IPv6 アドレスの構成を検討してください。IPv4 アドレスも構成されている IPv6 クライアントは、IPv4 アドレスを使用して Google API とサービスにアクセスできます。すべてのサービスが IPv6 クライアントからのトラフィックを受信するわけではありません。
DNS 構成
Google API とサービスへの接続では、private.googleapis.com
VIP または restricted.googleapis.com
VIP に関連付けられた IP アドレスにパケットを送信できます。VIP を使用するには、VPC ネットワーク内の VM がパブリック IP アドレスではなく VIP アドレスを使用してサービスにアクセスできるように DNS を構成する必要があります。
以降のセクションでは、DNS ゾーンを使用して、選択した VIP に関連付けられている IP アドレスにパケットを送信する方法について説明します。該当するすべてのシナリオの指示に従ってください。
*.googleapis.com
ドメイン名を持つサービスを使用する場合は、googleapis.com
の DNS を構成するをご覧ください。他のドメイン名を持つサービスを使用する場合は、他のドメインの DNS を構成するをご覧ください。
たとえば、Google Kubernetes Engine(GKE)を使用する場合は、
*.gcr.io
と*.pkg.dev
も構成する必要があります。Cloud Run を使用する場合は、*.run.app
も構成する必要があります。Cloud Storage バケットを使用し、リクエストを Cloud Storage のカスタム ドメイン名に送信する場合は、Cloud Storage のカスタム ドメイン名の DNS を構成するをご覧ください。
VIP の DNS レコードを構成する場合は、次の手順で説明する IP アドレスのみを使用してください。private.googleapis.com
VIP と restricted.googleapis.com
VIP のアドレスを混在させないでください。パケットの宛先によって提供するサービスが異なるため、断続的な障害が発生する可能性があります。
googleapis.com
の DNS を構成する
googleapis.com
の DNS ゾーンとレコードを作成します。
googleapis.com
の限定公開 DNS ゾーンを作成します。その場合は、Cloud DNS 限定公開ゾーンの作成を検討してください。googleapis.com
ゾーンで、使用するドメインに応じてprivate.googleapis.com
またはrestricted.googleapis.com
に以下のプライベート DNS レコードを作成します。private.googleapis.com
:IP アドレス
199.36.153.8
、199.36.153.9
、199.36.153.10
、199.36.153.11
を指すprivate.googleapis.com
にA
レコードを作成します。IPv6 アドレスを使用して API に接続するには、
2600:2d00:0002:2000::
を指すprivate.googleapis.com
にAAAA
レコードも構成します。
restricted.googleapis.com
:IP アドレス
199.36.153.4
、199.36.153.5
、199.36.153.6
、199.36.153.7
を指すrestricted.googleapis.com
にA
レコードを作成します。IPv6 アドレスを使用して API に接続するには、
2600:2d00:0002:1000::
を指すrestricted.googleapis.com
にAAAA
レコードも作成します。
Cloud DNS でプライベート DNS レコードを作成するには、レコードを追加するをご覧ください。
googleapis.com
ゾーンで、構成したドメイン(private.googleapis.com
またはrestricted.googleapis.com
)を指す*.googleapis.com
にCNAME
レコードを作成します。
他のドメインの DNS を構成する
一部の Google API とサービスは、*.gcr.io
、*.gstatic.com
、*.pkg.dev
、pki.goog
、*.run.app
などの追加ドメイン名を使用して提供されます。追加のドメインのサービスに private.googleapis.com
または restricted.googleapis.com
を使用してアクセスできるかどうかを判断するため、ドメイン オプションのドメインと IP アドレス範囲の表を参照します。それぞれの追加ドメインについて、次の作業を行います。
DOMAIN
の DNS ゾーンを作成します(例:gcr.io
)。Cloud DNS を使用している場合は、このゾーンがgoogleapis.com
限定公開ゾーンと同じプロジェクトにあることを確認してください。この DNS ゾーンで、使用するドメインに応じて
private.googleapis.com
またはrestricted.googleapis.com
に以下のプライベート DNS レコードを作成します。private.googleapis.com
:IP アドレス
199.36.153.8
、199.36.153.9
、199.36.153.10
、199.36.153.11
を指すDOMAIN
にA
レコードを作成します。IPv6 アドレスを使用して API に接続するには、
2600:2d00:0002:2000::
を指すDOMAIN
にAAAA
レコードも作成します。
restricted.googleapis.com
:IP アドレス
199.36.153.4
、199.36.153.5
、199.36.153.6
、199.36.153.7
を指すDOMAIN
にA
レコードを作成します。IPv6 アドレスを使用して API に接続するには、
2600:2d00:0002:1000::
を指すrestricted.googleapis.com
にAAAA
レコードも作成します。
DOMAIN
ゾーンで、DOMAIN
を指す*.DOMAIN
にCNAME
レコードを作成します。たとえば、gcr.io
を指す*.gcr.io
にCNAME
レコードを作成します。
Cloud Storage カスタム ドメイン名の DNS を構成する
Cloud Storage バケットを使用していて、リクエストを Cloud Storage のカスタム ドメイン名に送信する場合、Cloud Storage バケットへのアクセスを許可するには、カスタム Cloud Storage ドメイン名の DNS レコードが private.googleapis.com
または restricted.googleapis.com
の IP アドレスを指し示すように構成するだけでは不十分です。
Cloud Storage のカスタム ドメイン名にリクエストを送信する場合は、HTTP リクエストの Host ヘッダーと TLS SNI を storage.googleapis.com
に明示的に設定する必要もあります。private.googleapis.com
と restricted.googleapis.com
の IP アドレスは、HTTP リクエストの Host ヘッダーと TLS SNI のカスタム Cloud Storage ホスト名をサポートしていません。
ルーティング オプション
VPC ネットワークには、ネクストホップがデフォルトのインターネット ゲートウェイである適切なルートが必要です。Google Cloud は、他の VM インスタンスまたはカスタム ネクストホップを介した Google API とサービスへのトラフィックのルーティングをサポートしていません。デフォルトのインターネット ゲートウェイと呼ばれてはいますが、VPC ネットワーク内の VM から Google API とサービスに送信されるパケットは、Google のネットワーク内に残ります。
デフォルト ドメインを選択した場合、VM インスタンスは Google の外部 IP アドレスのサブセットを使用して Google API とサービスに接続します。この IP アドレスは一般公開され、ルーティング可能ですが、VPC ネットワーク内の VM からこれらのアドレスへのパスが Google のネットワーク内に残ります。
Google は、
private.googleapis.com
ドメインまたはrestricted.googleapis.com
ドメインで使用されているいずれの IP アドレス範囲のインターネット上のルートも公開していません。したがって、こうしたドメインにアクセスできるのは、VPC ネットワーク内の VM または VPC ネットワークに接続されているオンプレミス システムの場合のみです。
ネクストホップがデフォルトのインターネット ゲートウェイであるデフォルト ルートが VPC ネットワークに含まれている場合、そのルートを使用すると、カスタムルートを作成しなくても、Google API とサービスにアクセスできます。詳細については、デフォルト ルートでのルーティングをご覧ください。
デフォルト ルート(宛先 0.0.0.0/0
または ::0/0
)を、ネクストホップがデフォルトのインターネット ゲートウェイではないカスタムルートに置き換えた場合は、代わりにカスタム ルーティングを使用して、Google API とサービスのルーティング要件を満たすことができます。
VPC ネットワークに IPv6 のデフォルト ルートがない場合、Google API とサービスへの IPv6 接続は確立されません。IPv6 接続を許可するには、IPv6 デフォルト ルートを追加します。
デフォルト ルートでのルーティング
各 VPC ネットワークには、作成時に IPv4 のデフォルト ルート(0.0.0.0/0
)が含まれます。サブネットで外部 IPv6 アドレスを有効にすると、システムによって生成された IPv6 デフォルト ルート(::/0
)がその VPC ネットワークに追加されます。
デフォルトのルートは、次の宛先の IP アドレスへのパスを提供します。
デフォルト ドメイン。
private.googleapis.com
:199.36.153.8/30
と2600:2d00:0002:2000::/64
。restricted.googleapis.com
:199.36.153.4/30
と2600:2d00:0002:1000::/64
。
特定のネットワークのデフォルト ルートの構成を確認する方法は次のとおりです。
コンソール
Google Cloud Console で、[ルート] ページに移動します。
ルートのリストをフィルタして、検査する必要があるネットワークのルートのみを表示します。
宛先が
0.0.0.0/0
(IPv4 トラフィックの場合)か、::/0
(IPv6 トラフィックの場合)で、ネクストホップがデフォルトのインターネット ゲートウェイであるルートを探します。
gcloud
次の gcloud
コマンドを使用して、NETWORK_NAME
を調べるネットワークの名前に置き換えます。
gcloud compute routes list \ --filter="default-internet-gateway NETWORK_NAME"
置換用のデフォルト IPv4 ルートを作成する必要がある場合は、静的ルートの追加をご覧ください。
置換用のデフォルトの IPv6 ルートを作成する必要がある場合は、IPv6 のデフォルト ルートの追加をご覧ください。
カスタム ルーティング
デフォルト ルートの代わりに、宛先がより狭く、デフォルトのインターネット ゲートウェイ ネクストホップを使用するカスタム静的ルートを使用することもできます。必要なルートの数と宛先 IP アドレスは、選択したドメインによって異なります。
- デフォルト ドメイン: Google API とサービスの IP アドレス範囲のルートが必要です。
private.googleapis.com
:199.36.153.8/30
と2600:2d00:0002:2000::/64
restricted.googleapis.com
:199.36.153.4/30
と2600:2d00:0002:1000::/64
また、34.126.0.0/18
と 2001:4860:8040::/42
のルートを追加することもおすすめします。詳細については、構成オプションの概要をご覧ください。
特定のネットワークで Google API とサービスのカスタムルートの構成を確認する方法は次のとおりです。
コンソール
Google Cloud Console で、[ルート] ページに移動します。
[表をフィルタリング] テキスト フィールドで、次の条件を指定してルートのリストをフィルタリングします。
NETWORK_NAME
は実際の VPC ネットワークの名前に置き換えてください。- ネットワーク:
NETWORK_NAME
- ネクストホップのタイプ:
default internet gateway
- ネットワーク:
各ルートの [宛先 IP の範囲] 列を確認します。デフォルト ドメインを選択した場合は、複数のカスタム静的ルート(デフォルト ドメインで使用される各 IP アドレス範囲ごとに 1 つ)がないか確認します。
private.googleapis.com
またはrestricted.googleapis.com
を選択した場合は、そのドメインの IP 範囲を探します。
gcloud
次の gcloud
コマンドを使用して、NETWORK_NAME
を調べるネットワークの名前に置き換えます。
gcloud compute routes list \ --filter="default-internet-gateway NETWORK_NAME"
--format
フラグでコマンドをカスタマイズしない限り、ルートはテーブル形式で一覧表示されます。DEST_RANGE
列で各ルートの宛先を探します。デフォルト ドメインを選択した場合は、複数のカスタム静的ルート(デフォルト ドメインで使用される各 IP アドレス範囲ごとに 1 つ)がないか確認します。private.googleapis.com
または restricted.googleapis.com
を選択した場合は、そのドメインの IP 範囲を探します。
ルートを作成する必要がある場合は、静的ルートの追加をご覧ください。
ファイアウォール構成
VPC ネットワークのファイアウォール構成では、VM から Google API とサービスによって使用される IP アドレスへのアクセスを許可する必要があります。暗黙の allow egress
ルールは、この要件を満たしています。
一部のファイアウォール構成では、特定の下り(外向き)許可ルールを作成する必要があります。たとえば、すべての宛先(IPv4 の場合は 0.0.0.0
、IPv6 の場合は ::/0
)をブロックする下り(外向き)拒否ルールを作成したとします。この場合、Google API とサービス用に、選択したドメインが使用する各 IP アドレス範囲の下り(外向き)拒否ルールよりも優先順位が高い下り(外向き)許可のファイアウォール ルールを 1 つ作成する必要があります。
- デフォルト ドメイン: Google API とサービスのすべての IP アドレス範囲。
private.googleapis.com
:199.36.153.8/30
と2600:2d00:0002:2000::/64
restricted.googleapis.com
:199.36.153.4/30
と2600:2d00:0002:1000::/64
また、下り(外向き)許可のファイアウォール ルールに 34.126.0.0/18
と 2001:4860:8040::/42
を含めることもおすすめします。詳細については、構成オプションの概要をご覧ください。
ファイアウォール ルールを作成するには、ファイアウォール ルールの作成をご覧ください。各下り(外向き)許可ルールのターゲットを定義するときに、ファイアウォール ルールが適用される VM を制限できます。
デフォルト ドメインの IP アドレス
このセクションでは、Google API とサービスで使用されるデフォルト ドメインの IP 範囲(*.googleapis.com
、*.gcr.io
など)のリストを作成する方法について説明します。これらの範囲は動的に割り振られ、頻繁に変更されます。このため、個々のサービスまたは API に特定の IP 範囲を定義することはできません。正確なリストを保持するには、スクリプトを毎日実行するように自動化を設定します。IP アドレス範囲のリストを維持する別の方法として、private.googleapis.com VIP または Private Service Connect の使用も検討してください。
Google では、インターネット上でユーザーが使用できる IP 範囲の完全なリストを goog.json で公開しています。
また、お客様の Google Cloud リソースで使用可能なグローバルとリージョンの外部 IP アドレス範囲のリストを cloud.json に公開しています。
Google API とサービスのデフォルトのドメインで使用される IP アドレスは、goog.json
の範囲から cloud.json
のすべての範囲を除いて計算された範囲のリスト内に収まります。このリストは頻繁に更新されます。
次の Python スクリプトを使用すると、Google API とサービスのデフォルト ドメインで使用される IP アドレス範囲のリストを作成できます。
このスクリプトの実行については、実行方法をご覧ください。