このページでは、プライベート ネットワーク アクセスを設定し、ネットワーク内でトラフィックをルーティングする方法について説明します。 Google Cloud
プライベート ネットワーク アクセスを設定するには、次の 3 つのプロジェクトを構成します。
- Virtual Private Cloud(VPC)と、ターゲットとなる仮想マシン インスタンス(VM)を含むプロジェクト。
- Service Directory サービス プロジェクトとして機能するプロジェクト。
- プライベート ネットワーク アクセスを呼び出す構成を持つ Google Cloud プロダクトのプロジェクト。プライベート ネットワーク アクセスを使用してエンドポイントを呼び出せる Google Cloud プロダクトの例として、Dialogflow CX があります。
プロジェクトのアートファクトは、同じプロジェクト内にある場合も、異なるプロジェクト内にある場合もあります。
始める前に
プライベート ネットワーク アクセスを構成する前に、次の手順を完了します。
プロジェクトごとに、Google Cloud コンソールの [API とサービス] ページで [API とサービスを有効にする] をクリックし、Service Directory API など、使用する API を有効にします。
VPC ネットワークをオンプレミス ホストにリンクするには、Cloud VPN トンネルまたは Cloud Interconnect 接続を作成します。
Google Cloud プロジェクトが、
servicedirectory.googleapis.com
のネットワーク プロジェクトと Service Directory プロジェクトの両方の VPC Service Controls 境界内にあることを確認します。VPC Service Controls の詳細を確認する。
VPC ネットワークのプロジェクトを構成する
VPC ネットワークのプロジェクトを構成する手順は次のとおりです。
VPC ネットワークを作成します。既存の VPC ネットワークを使用する場合は、自動モードまたはカスタムモードでサブネットをサポートしていることを確認してください。レガシー ネットワークはサポートされていません。
VPC ネットワークのターゲットが Compute Engine VM または内部ロードバランサのバックエンドの場合は、VPC ネットワーク ファイアウォール ルールを構成します。ターゲットがリッスンしているポートで
35.199.192.0/19
からの TCP 上り(内向き)を許可するファイアウォール ルールを作成します。ポート443
と80
が一般的ですが、任意のポートを使用できます。デフォルトでは、VPC ネットワーク ファイアウォール ルールにより、Compute Engine VM への上り(内向き)接続がブロックされます。35.199.192.0/19
の詳細については、Cloud DNS と Service Directory のパスの詳細をご覧ください。エンドポイントを呼び出す Google Cloud プロダクトのサービス エージェントに、Identity and Access Management(IAM)Private Service Connect 承認済みサービスロール(
roles/servicedirectory.pscAuthorizedService
)を付与します。ロールと権限の詳細については、Service Directory の権限とロールをご覧ください。
Service Directory プロジェクトを構成する
Service Directory プロジェクトを構成する手順は次のとおりです。
エンドポイントを呼び出すGoogle Cloud プロダクトのサービス エージェントに、IAM Service Directory 閲覧者ロール(
roles/servicedirectory.viewer
)を付与します。Service Directory の名前空間とサービスを作成します。次に、次のセクションの手順に沿って、このサービスのエンドポイントを作成します。
プライベート ネットワーク アクセスを持つエンドポイントを作成する
プライベート ネットワーク アクセスが構成されたエンドポイントを作成する手順は次のとおりです。
コンソール
- Google Cloud コンソールで、[Service Directory Namespace] ページに移動します。Service Directory の名前空間に移動
- Namespace をクリックします。
- サービスをクリックします。
- [エンドポイントを追加] をクリックします。
- [エンドポイント名] にエンドポイントの名前を入力します。
- [IP アドレス] に IPv4 アドレス(
192.0.2.0
など)を入力します。 - [ポート] にポート番号(
443
や80
など)を入力します。 - 限定公開ネットワーク アクセスを有効にするには、[関連付けられた VPC ネットワーク] で必要なオプションを選択します。
- 利用可能なネットワークのリストから選択するには、[リストから選択] をクリックして、ネットワークを選択します。
- プロジェクトとネットワークを指定するには、[プロジェクト名とネットワーク名で指定する] をクリックし、プロジェクト番号とネットワーク名を入力します。
- [作成] をクリックします。
gcloud
プロジェクト ID とネットワーク パスを指定して gcloud service-directory endpoints create
コマンドを使用します。
gcloud service-directory endpoints create ENDPOINT_NAME \ --project=PROJECT_ID \ --location=REGION \ --namespace=NAMESPACE_NAME \ --service=SERVICE_ID \ --address=IP_ADDRESS \ --port=PORT_NUMBER \ --network=NETWORK_PATH
次のように置き換えます。
ENDPOINT_NAME
: サービスで作成するエンドポイントの名前(例:my-endpoint
)PROJECT_ID
: プロジェクトの IDREGION
: Namespace を含むリージョン。 Google CloudNAMESPACE_NAME
: Namespace に付けた名前(例:my-namespace
)SERVICE_ID
: サービスの IDIP_ADDRESS
: エンドポイントの IP アドレス(192.0.2.0
など)PORT_NUMBER
: エンドポイントが実行されているポート。通常は443
または80
です。NETWORK_PATH
: ネットワークの URL(projects/PROJECT_NUMBER/locations/global/networks/NETWORK_NAME
など)
Google Cloud プロダクト プロジェクトを構成する
Google Cloud プロダクト プロジェクトを構成する手順は次のとおりです。
Google Cloud product API を有効にします。
作成した Service Directory サービスを呼び出すようにプロダクトを構成します。 Google Cloud 必要な手順は、具体的なGoogle Cloud プロダクトによって異なります。
ユースケース
このセクションでは、プライベート ネットワーク アクセスを構成するユースケースの例を示します。
VPC ネットワーク、VM、Service Directory が同じプロジェクトにある場合に HTTP エンドポイントを呼び出す
このユースケースでは、 Google Cloud 自然言語処理プロダクトである Dialogflow CX を設定して、VM で HTTP エンドポイントを呼び出します。エンドポイントを呼び出すときに、トラフィックが公共のインターネットを経由しないようにします。
このユースケースでは、同じプロジェクトに次のアーティファクトを作成します。
- VPC ネットワーク
- VM
- Service Directory サービス
- Dialogflow CX
図 1 は、プロジェクトの Google サービス構成が VM に下り(外向き)を許可する方法を示しています。VM はプロジェクトの VPC ネットワークにあります。
ネットワークとターゲット ネットワークを設定する
myproject
などのプロジェクトを作成します。vpc-1
などの VPC ネットワークを作成します。VPC ネットワークを作成するときに、[サブネット作成モード] で [自動] を選択します。
firewall-1
などのファイアウォール ルールを作成する。ファイアウォール ルールを作成するときに、次の値を入力または選択します。
- [ネットワーク] で
vpc-1
を選択します。 - [送信元 IPv4 範囲] に「
35.199.192.0/19
」と入力します。 - [プロトコルとポート] で [TCP] を選択し、「
443
」または「80
」と入力します。
- [ネットワーク] で
us-central1
リージョンにvm-1
などのVM を作成します。VM の作成中に、次の値を入力または選択します。
- [Networking] > [Network Interfaces] で、
vpc-1
を選択します。 - [ファイアウォール] で [HTTP トラフィックを許可する] を選択します。
HTTPS を使用する場合は、[HTTPS トラフィックを許可する] を選択します。また、公開鍵基盤(PKI)Transport Layer Security(TLS)証明書をインストールしていることを確認してください。
- [Networking] > [Network Interfaces] で、
us-central1
リージョンに Namespace(namespace-1
など)を作成します。名前空間に Service Directory サービス(
sd-1
など)を登録します。sd-1
にエンドポイントを作成します。エンドポイント アドレスには、ポート443
のvm-1
の内部 IP アドレスを使用します。詳細については、プライベート ネットワーク アクセスを持つエンドポイントを作成するをご覧ください。エンドポイントを呼び出すGoogle Cloud プロダクトのサービス エージェントに、次の IAM ロールを付与します。
- Service Directory 閲覧者のロール(
roles/servicedirectory.viewer
) - Private Service Connect の承認済みサービスのロール(
roles/servicedirectory.pscAuthorizedService
)
- Service Directory 閲覧者のロール(
省略可: VM をさらに追加する場合は、別の VM(
vm-2
など)を設定し、そのエンドポイント(endpoint-2
など)を追加します。
Google Cloud 商品を設定
- Google Cloud プロダクト構成(「Cloud Scheduler、1 分ごとに呼び出し」など)を構成します。
- HTTP リクエストを設定します。
- リクエストがプライベート ネットワーキング(
sd-1
など)経由で送信されるように指定します。 - 省略可: Certificate Authority Service の設定を構成します。
Google Cloud プロダクトは、sd-1
を使用して HTTP リクエストを呼び出せるようになりました。
共有 VPC ネットワーク、VM、Service Directory が異なるプロジェクトにある場合に HTTP エンドポイントを呼び出す
このユースケースでは、自然言語処理サービスである Dialogflow CX を設定して、VM で HTTP エンドポイントを呼び出します。 Google Cloudエンドポイントを呼び出すときに、トラフィックが公共のインターネットを経由しないようにします。
このユースケースでは、異なるプロジェクトに次のアーティファクトを作成します。
- 共有 VPC ネットワーク
- VM
- Service Directory サービス
- Dialogflow CX
プロジェクトを作成する前に、次の点に注意してください。
- API 呼び出しが VPC Service Controls の境界を尊重していることを確認します。
- Google Cloud サービス プロジェクトの構成で、VPC ネットワーク プロジェクトに存在する VM への下り(外向き)トラフィックが許可されていることを確認します。
- プロデューサー プロジェクトは、 Google Cloud サービス プロジェクトと同じではない場合があります。
- 両方のプロジェクトの VPC Service Controls 境界が使用されていることを確認します。
- Service Directory プロジェクトとネットワーク プロジェクトは接続する必要はありませんが、両方が同じ VPC Service Controls の一部である必要があります。
- ネットワークとサービスでは、ファイアウォールと IAM はデフォルトで無効になっています。
図 2 は、VPC Service Controls 境界が適用されたプライベート ネットワーク アクセスを使用してトラフィックを送信する方法を示しています。
ネットワーク プロジェクトを構成する
my-vpc-project
などのプロジェクトを作成します。vpc-1
などの VPC ネットワークを作成します。VPC ネットワークを作成するときに、[サブネット作成モード] で [自動] を選択します。
firewall-1
などのファイアウォール ルールを作成する。ルールを作成するときに、次の値を入力または選択します。
- [ネットワーク] で
vpc-1
を選択します。 - [送信元 IPv4 範囲] に「
35.199.192.0/19
」と入力します。 - [プロトコルとポート] で [TCP] を選択し、「
443
」または「80
」と入力します。
- [ネットワーク] で
us-central1
リージョンにvm-1
などのVM を作成します。VM の作成中に、次の値を入力または選択します。
- [Networking] > [Network Interfaces] で、
vpc-1
を選択します。 - [ファイアウォール] で [HTTP トラフィックを許可する] を選択します。
HTTPS を使用する場合は、[HTTPS トラフィックを許可する] を選択します。また、公開鍵基盤(PKI)Transport Layer Security(TLS)証明書をインストールしていることを確認してください。
- [Networking] > [Network Interfaces] で、
VPC Service Controls を使用している場合、VPC Service Controls 境界により、Service Directory はサービス プロジェクトと Service Directory プロジェクトの両方に接続できます。 Google Cloud
Service Directory プロジェクトを構成する
my-sd-project
などのプロジェクトを作成します。VPC ネットワーク プロジェクトと Service Directory プロジェクトは異なるプロジェクトであるため、追加の IAM 権限が必要です。
ネットワーク プロジェクトから、Service Directory エンドポイントを作成する IAM プリンシパルに Service Directory ネットワーク アタッチメント ロール(
roles/servicedirectory.networkAttacher
)を付与します。VPC ネットワーク内の VM を指す Service Directory エンドポイントを作成します。
us-central1
リージョンに Namespace(namespace-1
など)を作成します。- 名前空間に Service Directory サービス(
sd-1
など)を登録します。 sd-1
にエンドポイントを作成します。エンドポイント アドレスには、ポート443
のvm-1
の内部 IP アドレスを使用します。詳細については、プライベート ネットワーク アクセスを持つエンドポイントを作成するをご覧ください。
エンドポイントを呼び出すGoogle Cloud プロダクトのサービス エージェントに、次の IAM ロールを付与します。
- Service Directory プロジェクトの Service Directory 閲覧者のロール(
roles/servicedirectory.viewer
) - ネットワーク プロジェクトの Private Service Connect の承認済みサービスロール(
roles/servicedirectory.pscAuthorizedService
)
- Service Directory プロジェクトの Service Directory 閲覧者のロール(
VPC Service Controls を使用している場合、VPC Service Controls 境界により、Service Directory はサービス プロジェクトと Service Directory プロジェクトの両方に接続できます。 Google Cloud
Google Cloud サービス プロジェクトを構成する
- 使用している Google Cloud サービスの API を有効にします。
- Google Cloud サービス
PUSH
を構成するには、Service Directory プロジェクトの Service Directory サービスを使用します。
VPC Service Controls を使用している場合、VPC Service Controls 境界により、Service Directory はネットワーク プロジェクトと Service Directory プロジェクトの両方に接続できます。
Dialogflow で Service Directory のプライベート ネットワーク アクセスを使用する
Dialogflow で Service Directory プライベート ネットワーク アクセスを使用する方法については、Service Directory を使用したプライベート ネットワーク アクセスをご覧ください。
次のステップ
- Service Directory の概要については、Service Directory の概要をご覧ください。
- Private Service Connect の詳細については、 Private Service Connect をご覧ください。
- Service Directory の使用時に発生する可能性のある一般的な問題の解決策については、トラブルシューティングをご覧ください。