プライベート ネットワーク アクセスを構成する

このページでは、プライベート ネットワーク アクセスを設定し、 Google Cloud ネットワーク内でトラフィックをルーティングする方法について説明します。

プライベート ネットワーク アクセスを設定するには、次の 3 つのプロジェクトを構成します。

  • ターゲット仮想マシン インスタンス(VM)またはターゲット内部ロードバランサで使用される Virtual Private Cloud(VPC)ネットワークを含むプロジェクト。
  • 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 ネットワークのプロジェクトを構成する手順は次のとおりです。

  1. VPC ネットワークを作成するか、使用するリージョンに IPv4 のみまたはデュアル スタックのサブネットがある既存の VPC ネットワークを選択します。レガシー ネットワークはサポートされていません。

  2. 必要な上り(内向き)許可ファイアウォール ルールを作成します。

    • ターゲットが VM または内部パススルー ネットワーク ロードバランサの場合、ファイアウォール ルールで、35.199.192.0/19 範囲からターゲット VM インスタンスで実行されているソフトウェアで使用されるポートへの TCP トラフィックを許可する必要があります。

    • ターゲットが内部アプリケーション ロードバランサまたは内部プロキシ ネットワーク ロードバランサの場合、ファイアウォール ルールで 35.199.192.0/19 範囲からロードバランサで使用される IP アドレスとポートへの TCP トラフィックを許可する必要があります。

    35.199.192.0/19 範囲の詳細については、Cloud DNS と Service Directory のパスをご覧ください。

  3. エンドポイントを呼び出す Google Cloud プロダクトのサービス エージェントに、Identity and Access Management(IAM)Private Service Connect 承認済みサービスロール(roles/servicedirectory.pscAuthorizedService)を付与します。

    ロールと権限の詳細については、Service Directory の権限とロールをご覧ください。

Service Directory プロジェクトを構成する

Service Directory プロジェクトを構成する手順は次のとおりです。

  1. VPC ネットワークで、VM を作成するか、内部ロードバランサを作成します。

  2. エンドポイントを呼び出すGoogle Cloud プロダクトのサービス エージェントに IAM Service Directory 閲覧者ロール(roles/servicedirectory.viewer)を付与します。

  3. Service Directory の名前空間とサービスを作成します。次に、次のセクションの手順に沿って、このサービスのエンドポイントを作成します。

プライベート ネットワーク アクセス権を持つエンドポイントを作成する

プライベート ネットワーク アクセスが構成されたエンドポイントを作成する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[Service Directory 名前空間] ページに移動します。Service Directory の名前空間に移動
  2. Namespace をクリックします。
  3. サービスをクリックします。
  4. [エンドポイントを追加] をクリックします。
  5. [エンドポイント名] にエンドポイントの名前を入力します。
  6. [IP アドレス] に、IPv4 アドレス(192.0.2.0 など)を入力します。
  7. [ポート] に、44380 などのポート番号を入力します。
  8. プライベート ネットワーク アクセスを有効にするには、[関連付けられている VPC ネットワーク] で必要なオプションを選択します。
    • 利用可能なネットワークのリストから選択するには、[リストから選択] をクリックして、ネットワークを選択します。
    • プロジェクトとネットワークを指定するには、[プロジェクト名とネットワーク名で指定する] をクリックし、プロジェクト番号とネットワーク名を入力します。
  9. [作成] をクリックします。

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: プロジェクトの ID
  • REGION: Namespace を含む Google Cloud リージョン
  • NAMESPACE_NAME: Namespace に付けた名前(例: my-namespace
  • SERVICE_ID: サービスの ID
  • IP_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 プロダクト プロジェクトを構成する手順は次のとおりです。

  1. Google Cloud プロダクト API を有効にします。

  2. 作成した 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 ネットワークに存在します。

プロジェクトの Google サービス構成がネットワーク プロジェクト VM に下り(外向き)することを許可します。
図 1. プロジェクトの Google サービス構成が VM に下り(外向き)できるようにする(クリックして拡大)。

ネットワークとターゲット ネットワークを設定する

  1. プロジェクトを作成します(例: myproject)。
  2. VPC ネットワーク(vpc-1 など)を作成します

    VPC ネットワークの作成時に、[サブネット作成モード] で [自動] を選択します。

  3. ファイアウォール ルール(firewall-1 など)を作成します

    ファイアウォール ルールを作成するときに、次の値を入力または選択します。

    • [ネットワーク] で vpc-1 を選択します。
    • [送信元 IPv4 範囲] に「35.199.192.0/19」と入力します。
    • [プロトコルとポート] で [TCP] を選択し、「443」または「80」と入力します。
  4. us-central1 リージョンに、vm-1 などの VM を作成します。

    VM の作成時に、次の値を入力または選択します。

    • [ネットワーキング>ネットワーク インターフェース] で、vpc-1 を選択します。
    • [ファイアウォール] で [HTTP トラフィックを許可する] をオンにします。

    HTTPS を使用する場合は、[HTTPS トラフィックを許可する] を選択します。また、公開鍵基盤(PKI)Transport Layer Security(TLS)証明書をインストールしてください。

  5. us-central1 リージョンに、namespace-1 などの Namespace を作成します。

  6. 名前空間に、Service Directory サービス(sd-1 など)を登録します。

  7. sd-1 にエンドポイントを作成します。エンドポイント アドレスには、ポート 443vm-1 の内部 IP アドレスを使用します。詳細については、プライベート ネットワーク アクセスを使用してエンドポイントを作成するをご覧ください。

  8. エンドポイントを呼び出すGoogle Cloud プロダクトのサービス エージェントに、次の IAM ロールを付与します。

    • Service Directory 閲覧者のロール(roles/servicedirectory.viewer
    • Private Service Connect 承認済みサービス ロール(roles/servicedirectory.pscAuthorizedService
  9. 省略可: VM を追加する場合は、vm-2 などの別の VM を設定し、endpoint-2 などのエンドポイントを追加できます。

Google Cloud プロダクトを設定する

  1. 「Cloud Scheduler、1 分ごとに電話して」などの Google Cloud プロダクト構成を設定します。
  2. HTTP リクエストを設定します。
  3. リクエストがプライベート ネットワーキング(sd-1 など)経由で送信されるように指定します。
  4. 省略可: Certificate Authority Service の設定を構成します

Google Cloud プロダクトは、sd-1 を使用して HTTP リクエストを呼び出せるようになりました。

共有 VPC ネットワーク、VM、Service Directory が異なるプロジェクトにある場合に HTTP エンドポイントを呼び出す

このユースケースでは、自然言語処理用の Google Cloudサービスである Dialogflow CX を設定して、VM の HTTP エンドポイントを呼び出します。エンドポイントを呼び出すときは、トラフィックが公共のインターネットを経由しないようにしてください。

このユースケースでは、次のアーティファクトを別のプロジェクトに作成します。

  • 共有 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 の境界が適用された限定公開ネットワーク アクセスを使用してトラフィックを送信する方法を示しています。

VPC Service Controls の境界が適用されたプライベート ネットワーク アクセスを使用してトラフィックを送信する。
図 2. VPC Service Controls の境界が適用された限定公開ネットワーク アクセスを使用してトラフィックを送信します(クリックして拡大)。

ネットワーク プロジェクトを構成する

  1. プロジェクトを作成します(例: my-vpc-project)。
  2. VPC ネットワーク(vpc-1 など)を作成します

    VPC ネットワークの作成時に、[サブネット作成モード] で [自動] を選択します。

  3. ファイアウォール ルール(firewall-1 など)を作成します

    ルールを作成するときに、次の値を入力または選択します。

    • [ネットワーク] で vpc-1 を選択します。
    • [送信元 IPv4 範囲] に「35.199.192.0/19」と入力します。
    • [プロトコルとポート] で [TCP] を選択し、「443」または「80」と入力します。
  4. us-central1 リージョンに、vm-1 などの VM を作成します。

    VM の作成時に、次の値を入力または選択します。

    • [ネットワーキング>ネットワーク インターフェース] で、vpc-1 を選択します。
    • [ファイアウォール] で [HTTP トラフィックを許可する] をオンにします。

    HTTPS を使用する場合は、[HTTPS トラフィックを許可する] を選択します。また、公開鍵基盤(PKI)Transport Layer Security(TLS)証明書をインストールしてください。

VPC Service Controls を使用している場合、VPC Service Controls 境界により、Service Directory は Google Cloud サービス プロジェクトと Service Directory プロジェクトの両方に接続できます。

Service Directory プロジェクトを構成する

  1. プロジェクトを作成します(例: my-sd-project)。

  2. VPC ネットワーク プロジェクトと Service Directory プロジェクトは異なるプロジェクトであるため、追加の IAM 権限が必要です。

    ネットワーク プロジェクトから、Service Directory エンドポイントを作成する IAM プリンシパルに Service Directory ネットワーク アタッチャー ロール(roles/servicedirectory.networkAttacher)を付与します。

  3. VPC ネットワーク内の VM を指す Service Directory エンドポイントを作成します。

    1. us-central1 リージョンに、namespace-1 などの Namespace を作成します。
    2. 名前空間に、Service Directory サービス(sd-1 など)を登録します。
    3. sd-1 にエンドポイントを作成します。エンドポイント アドレスには、ポート 443vm-1 の内部 IP アドレスを使用します。詳細については、プライベート ネットワーク アクセスを使用してエンドポイントを作成するをご覧ください。
  4. エンドポイントを呼び出すGoogle Cloud プロダクトのサービス エージェントに、次の IAM ロールを付与します。

    • Service Directory プロジェクトの Service Directory 閲覧者ロール(roles/servicedirectory.viewer
    • ネットワーク プロジェクトの Private Service Connect 承認済みサービス ロール(roles/servicedirectory.pscAuthorizedService

VPC Service Controls を使用している場合、VPC Service Controls 境界により、Service Directory は Google Cloud サービス プロジェクトと Service Directory プロジェクトの両方に接続できます。

Google Cloud サービス プロジェクトを構成する

  1. 使用している Google Cloud サービスの API を有効にします。
  2. 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 を使用したプライベート ネットワーク アクセスをご覧ください。

次のステップ