限定公開の Google アクセスの構成

限定公開の Google アクセスを使用すると、内部(プライベート)IP アドレスしか持たない(外部 IP アドレスを持たない)VM インスタンスが、Google API とサービスのパブリック IP アドレスにアクセスできます。限定公開の Google アクセスは、サブネット レベルで有効にします。そうすると、サブネット内でプライベート IP アドレスしか持たないインスタンスが、デフォルト ルート(0.0.0.0/0)を通じて Google API とサービスにトラフィックを送信できるようになります。このとき、デフォルト インターネット ゲートウェイへのネクストホップを使用します。

限定公開の Google アクセスでは、内部 IP アドレスしか持たない VM インスタンスから特定の Google Cloud サービスにアクセスできます。限定公開の Google アクセスや他のプライベート アクセス オプションの詳細については、サービスのプライベート アクセス オプションをご覧ください。

限定公開の Google アクセスで使用できる対象の API とサービスを確認するには、限定公開の Google アクセスの概要でサポート対象のサービスをご覧ください。

仕様

権限

プロジェクト所有者、編集者、そしてネットワーク管理者の役割を持つ IAM メンバーがサブネットを作成または更新し、IP アドレスを割り当てることができます。

役割の詳細については、IAM 役割のドキュメントをご覧ください。

API とサービスの DNS 解決

*.googleapis.comgcr.io など、Google の API やサービスに関連するドメインの DNS 解決は、限定公開の Google アクセスがサブネットで有効になっても変わりません。Google API とサービスの DNS レコードは、常に外部 IP アドレスを指し示します。このとき使用される外部 IP アドレスのプールは変更される可能性がありますが、_spf.google.com とそれが参照する TXT レコードを照会することで調べることができます。

例:

dig -t TXT _spf.google.com

限定公開の Google アクセスは適切なルートと連携して動作することで、内部 IP アドレスしか持たない VM インスタンスが Google API とサービスの外部 IP アドレスにアクセスできるようにします。

ロギング

Stackdriver Logging は、限定公開の Google アクセスが有効になっているサブネット内の VM インスタンスからの API リクエストをすべてキャプチャします。ログエントリは、インスタンスのプライベート IP を使用して API リクエストのソースを特定します。

日次使用状況レポートや月次ロールアップ レポートが Cloud Storage バケットに配信されるよう構成できます。詳細については、使用状況レポートを表示するページをご覧ください。

要件

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

  • 限定公開の Google アクセスでは、API は自動的に有効になりません。Google Cloud Platform Console の [API とサービス] ページから、使用する Google API を有効にする必要があります。

  • 限定公開の Google アクセスでは VPC ネットワークが必要です。自動およびカスタムモードの VPC ネットワークがサポートされています。レガシー ネットワークはサポートされていません。

  • 限定公開の Google アクセスが適用されるのは、内部 IP アドレスしか持たないインスタンスに限られます。限定公開の Google アクセスを有効または無効にしても、外部 IP アドレスを持つインスタンスには影響ありません。

  • 限定公開の Google アクセスの有効化は、サブネット単位で行います。サブネットの作成時に行うか、後からサブネットを編集して行います。限定公開の Google アクセスをサブネットで有効にすると、そのサブネット内の新規と既存の、外部 IP アドレスを持たない VM インスタンスに適用されます。

  • 限定公開の Google アクセスには、Google API とサービスによって使用される、パブリック IP アドレスへのルートが必要です。デフォルト ルートは通常、このパスを提供します。詳細については、ルーティングのセクションをご覧ください。

ルーティング

デフォルト ルートでのルーティング

一般的な VPC ネットワークでは、デフォルト ルートの主な目的は外部 IP アドレスを持つインスタンスへのインターネット アクセスを提供することです。

ただし、限定公開の Google アクセスではデフォルト ルートを使用して、限定公開の Google アクセスが有効になっているサブネット内のインスタンスから Google API とサービスの外部 IP アドレスにトラフィックを送信します。GCP でルーティングが機能する仕組みについては、ルートの概要をご覧ください。

宛先が 0.0.0.0/0 のカスタムルートと default Internet gateway とは異なるネクストホップがある場合、限定公開の Google アクセスにデフォルト ルートは使用できません。代わりに、限定公開の Google アクセスのルーティング要件を満たすため、カスタムルートのセットを作成する必要があります。たとえば、次のような場合にカスタムルートを作成する必要があります。

  • 0.0.0.0/0 宛てのトラフィックを Cloud VPN トンネルや NAT インスタンスなどの別のインスタンスに振り向けるカスタム静的ルートがある場合
  • Cloud Router を使用して、宛先が 0.0.0.0/0 のカスタム動的ルートを受け入れる場合

高度なルーティング

Google API とサービスの外部 IP アドレスにトラフィックを送信するカスタムス静的ルートのセットを作成できます。このセットの各ルートのネクストホップは default Internet gateway である必要がありますが、それぞれの宛先は、Google API とサービスで使用される範囲セットのうち、一意の IP アドレス範囲になります。これらの IP 範囲を確認するには、API とサービスの DNS 解決をご覧ください。

デフォルト ルートの確認

特定のネットワークにデフォルト ルートが存在するかどうかを確認するには、GCP Console か gcloud コマンドライン ツールを使用します。

Console

  1. Google Cloud Platform Console で [ルート] ページに移動します。
    [ルート] ページに移動
  2. ルートのリストをフィルタして、検査する必要があるネットワークのルートのみを表示します。
  3. 宛先が 0.0.0.0/0 で、そのネクストホップがデフォルト インターネット ゲートウェイであるルートを探します。

gcloud

次の gcloud コマンドを使用します。[NETWORK-NAME] は検査するネットワーク名に置き換えます。

gcloud compute routes list --filter="default-internet-gateway [NETWORK-NAME]"

必要なルートの作成

限定公開の Google アクセスのデフォルト ルートを使用でき、それを再作成する必要がある場合、次の宛先とネクストホップを使用して代替のカスタム静的ルートを作成します。

  • 宛先: 0.0.0.0/0
  • ネクストホップ: デフォルト インターネット ゲートウェイ

デフォルト ルートを使用できない場合、限定公開の Google アクセスのルーティング要件を満たすため複数のカスタムス静的ルートを作成できます。各ルートの宛先とネクストホップは次のとおりです。

  • 宛先: Google API とサービスで使用されている IP アドレス範囲のうちの 1 つ。
  • ネクストホップ: デフォルト インターネット ゲートウェイ

ファイアウォール ルール

ネットワークのファイアウォール ルールでは、ルーティング要件を満たすことに加え、VM から Google API と GCP サービスへのアクセスを許可する必要があります。

インスタンスで限定公開の Google アクセスを使用するには、インスタンスから Google API とサービスへの下りトラフィックを許可する必要があります。下りトラフィックを拒否するファイアウォール ルールがある場合、限定公開の Google アクセスを必要としない他のインスタンスに選択的にそのルールを適用できます。あるいは、より優先度の高いルールを作成して Google API とサービスへのトラフィックを許可することで、そのルールをオーバーライドすることもできます。優先度の高いファイアウォール ルールを作成して限定公開の Google アクセスへのトラフィックを許可する場合、次のオプションを考慮します。

  • アドレス範囲 0.0.0.0/0 への下りトラフィックを許可するファイアウォール ルールを作成します。これは、下りトラフィックを任意の宛先に送信できることを示しています。ファイアウォール ルールにターゲットタグを設定して、限定公開の Google アクセスを必要とするインスタンスにのみ、そのルールを適用します。インスタンスではソースタグまたはサービス アカウントを使用します。外部 IP アドレスを持たない特定のターゲットにのみ適用されるルールを作成すると、広範な宛先範囲が絞り込まれます。外部 IP アドレスを持たないインスタンスは、VPC ネットワークの外部にパケットを送信できません。詳細については、インターネット アクセスの要件をご覧ください。
  • 特定の宛先への下りトラフィックを許可する複数のファイアウォール ルールを作成して限定公開の Google アクセスのトラフィックを許可する場合、Google API とサービスで使用される可能性のある IP アドレス範囲がすべて含まれるように、ルールを定期的に見直して更新する必要があります。この IP 範囲を確認するには、API とサービスの DNS 解決のセクションをご覧ください。

構成手順

限定公開の Google アクセスはデフォルトでは有効にされていません。サブネットを作成するときに有効します。また、サブネットを編集することで有効または無効にできます。

限定公開の Google アクセスを有効にする

以下の手順に従って限定公開の Google アクセスを有効にします。

Console

  1. Google Cloud Platform Console で [VPC ネットワーク] ページに移動します。
    [VPC ネットワーク] ページに移動
  2. 限定公開の Google アクセスを有効にするサブネットが含まれるネットワークの名前をクリックします。
  3. 既存のサブネットの場合:
    1. サブネットの名前をクリックします。[サブネットの詳細] ページが表示されます。
    2. [編集] をクリックします。
    3. [限定公開の Google アクセス] セクションで、[オン] を選択します。
    4. [保存] をクリックします。
  4. 新しいサブネットの場合:
    1. [サブネットを追加] をクリックします。
    2. 新しいサブネットの [名前] と [リージョン] を指定します。
    3. サブネットの [IP アドレス範囲] を指定します。この範囲は、現在の VPC ネットワーク内、または VPC ネットワーク ピアリングや VPN を介して接続されているネットワーク内のサブネットと重複することはできません。
    4. このサブネットのセカンダリ範囲を作成する場合、[セカンダリ IP 範囲を作成する] をクリックします。
    5. [限定公開の Google アクセス] セクションで [オン] を選択します。
    6. [追加] をクリックします。

gcloud

既存のサブネットの場合:

  1. サブネットの名前とリージョンを特定します。特定のネットワークのサブネットを一覧表示にするには、次のコマンドを使用します。[NETWORK-NAME] はネットワーク名に置き換えます。

    gcloud compute networks subnets list --filter=[NETWORK-NAME]
    
  2. 次のコマンドを実行して、限定公開の Google アクセスを有効にします。[SUBNET-NAME] はサブネット名に、[REGION] はサブネットのリージョンに置き換えます。

    gcloud compute networks subnets update [SUBNET-NAME] \
    --region [REGION] \
    --enable-private-ip-google-access
    
  3. 次のコマンドを実行して、限定公開の Google アクセスが有効になっていることを確認します。

    gcloud compute networks subnets describe [SUBNET-NAME] \
    --region [REGION] \
    --format="get(privateIpGoogleAccess)"
    

新しいサブネットを作成する場合は --enable-private-ip-google-access パラメータを追加します。次の例では、新しいサブネットを作成します。

gcloud compute networks subnets create [SUBNET-NAME] \
--region [REGION] \
--network [NETWORK] \
--range [IP-RANGE] \
--enable-private-ip-google-access

各項目には次のように値を指定します。

  • [SUBNET-NAME] はサブネットの名前です。
  • [NETWORK] はサブネットを含む VPC ネットワークの名前です。
  • [IP-RANGE] はサブネットのプライマリ IP アドレス範囲です。
  • [REGION] はサブネットのリージョンです。

限定公開の Google アクセスを無効にする

以下の手順に従って、既存のサブネットの限定公開の Google アクセスを無効にします。

Console

  1. Google Cloud Platform Console で [VPC ネットワーク] ページに移動します。
    [VPC ネットワーク] ページに移動
  2. 限定公開の Google アクセスを無効にするサブネットが含まれているネットワークの名前をクリックします。
  3. 既存のサブネットの名前をクリックします。[サブネットの詳細] ページが表示されます。
  4. [編集] をクリックします。
  5. [限定公開の Google アクセス] セクションで、[オフ] を選択します。
  6. [保存] をクリックします。

gcloud

  1. サブネットの名前とリージョンを特定します。特定のネットワークのサブネットを一覧表示にするには、次のコマンドを使用します。[NETWORK-NAME] はネットワーク名に置き換えます。

    gcloud compute networks subnets list --filter=[NETWORK-NAME]
    
  2. 次のコマンドを実行して限定公開の Google アクセスを無効にします。[SUBNET-NAME] はサブネット名に、[REGION] はサブネットのリージョンに置き換えます。

    gcloud compute networks subnets update [SUBNET-NAME] \
    --region [REGION] \
    --no-enable-private-ip-google-access
    
  3. 次のコマンドを実行して、限定公開の Google アクセスが無効になっていることを確認します。

    gcloud compute networks subnets describe [SUBNET-NAME] \
    --region [REGION] \
    --format="get(privateIpGoogleAccess)"
    

インスタンスから外部 IP アドレスを削除する

限定公開の Google アクセスは VM に外部 IP アドレスがない場合にのみ適しているため、サブネットで限定公開の Google アクセスを有効にした後で、実行中のインスタンスを変更しなければならない場合があります。インスタンスから外部 IP アドレスを削除するには、Compute Engine ドキュメントの静的外部 IP アドレスの割り当て解除をご覧ください。

インスタンス IP アドレスの詳細については、Compute Engine ドキュメントの IP アドレスをご覧ください。

次のステップ

このページは役立ちましたか?評価をお願いいたします。