別の VPC ネットワークからサービスにアクセスする

このチュートリアルでは、サービス ユーザーが Private Service Connect エンドポイントを作成して、公開されたサービスにアクセスする方法について説明します。エンドポイントにリクエストを送信すると、Private Service Connect はそれらのリクエストを公開サービスに転送します。

このチュートリアルは、クラウド アーキテクト、ネットワーク アーキテクト、ネットワーク管理者、IT 管理者を対象としています。

目標

  • サービス ユーザー リソースのネットワーキングを構成する
  • エンドポイントを作成する
  • エンドポイントへのアクセスをテストする

費用

このドキュメントでは、課金対象である次の Cloud de Confiance by S3NSコンポーネントを使用します。

このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

始める前に

  1. このシリーズの前の 2 つのチュートリアルを完了します。
  2. サービス ユーザー リソースに使用するプロジェクトを作成または選択します。このプロジェクトは CONSUMER_PROJECT と呼ばれます。
    1. Cloud de Confiance コンソールで、プロジェクトの選択ページに移動します。

      プロジェクト セレクタに移動

    2. Cloud de Confiance プロジェクトの選択または作成

      プロジェクトの選択または作成に必要なロール

      • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
      • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
  3. Compute Engine API が有効になっていない場合は、有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法を確認する。

    API の有効化

  4. プロジェクトで次のロール(複数の場合あり)が割り当てられていることを確認します。 Compute Engine > Compute ネットワーク管理者、Compute Engine > Compute インスタンス管理者

    ロールを確認する

    1. Cloud de Confiance コンソールで、[IAM] ページに移動します。

      IAM に移動
    2. プロジェクトを選択します。
    3. [プリンシパル] 列で、自分または自分が所属するグループの行をすべて確認します。所属するグループについては、管理者にお問い合わせください。

    4. 自分のメールアドレスを含む行の [ロール] 列で、ロールのリストに必要なロールが含まれているかどうか確認します。

    ロールを付与する

    1. Cloud de Confiance コンソールで、[IAM] ページに移動します。

      IAM に移動
    2. プロジェクトを選択します。
    3. [ アクセスを許可] をクリックします。
    4. [新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Workforce Identity プール内のユーザーの ID です。詳細については、IAM ポリシーで Workforce プールユーザーを表すをご覧いただくか、管理者にお問い合わせください。

    5. [ロールを選択] をクリックし、ロールを検索します。
    6. 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
    7. [保存] をクリックします。

ネットワークを構成する

以降のセクションでは、エンドポイントをホストするネットワークとサブネットを作成する方法と、エンドポイントのテストに使用するクライアント VM への SSH アクセスを許可するファイアウォール ルールを作成する方法について説明します。

ネットワークとサブネットを作成する

サービス ユーザーのネットワークとサブネットを作成する手順は次のとおりです。

コンソール

  1. Cloud de Confiance コンソールで、[VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  2. [VPC ネットワークを作成] をクリックします。

  3. [名前] に「consumer-network」と入力します。

  4. [サブネット作成モード] で [カスタム] を選択します。

  5. [新しいサブネット] セクションに、次の情報を入力します。

    1. [名前] に「consumer-subnet」と入力します。
    2. [リージョン] で、作成した公開サービスと同じリージョンを選択します。
    3. [IP スタックタイプ] で [IPv4(シングルスタック)] を選択します。
    4. [IPv4 範囲] に「192.168.10.0/24」と入力します。
    5. [完了] をクリックします。
  6. [作成] をクリックします。

gcloud

  1. カスタムモードの VPC ネットワークを作成します。

    gcloud compute networks create consumer-network --subnet-mode=custom
    
  2. consumer-network ネットワークにサブネットを作成します。

    gcloud compute networks subnets create consumer-subnet \
        --network=consumer-network \
        --range=192.168.10.0/24 \
        --region=REGION
    

    REGION は、作成した公開済みサービスと同じリージョンに置き換えます。

ファイアウォール ルールを構成する

0.0.0.0/0 からの SSH トラフィックが allow-ssh ネットワーク タグを持つ VM に到達できるように、fw-allow-ssh というファイアウォール ルールを作成します。

コンソール

  1. Cloud de Confiance コンソールで、[ファイアウォール ポリシー] ページに移動します。

    [ファイアウォール ポリシー] に移動

  2. 受信 SSH 接続を許可するには、[ファイアウォール ルールを作成] をクリックして、次の設定を使用します。

    • [名前] に「fw-allow-ssh」と入力します。
    • [ネットワーク] で consumer-network を選択します。
    • [優先度] に「1000」と入力します。
    • [トラフィックの方向] で [上り(内向き)] をオンにします。
    • [一致したときのアクション] で [許可] をオンにします。
    • [ターゲット] で [指定されたターゲットタグ] を選択します。
    • [ターゲットタグ] に「allow-ssh」と入力します。
    • [ソースフィルタ] で [IPv4 範囲] を選択します。
    • [送信元 IPv4 範囲] に「0.0.0.0/0」と入力します。
    • [プロトコルとポート] で [指定したプロトコルとポート] を選択し、[TCP] チェックボックスをオンにします。[ポート] に「22」と入力します。
  3. [Create] をクリックします。

gcloud

  1. ネットワーク タグ allow-ssh を使用して、VM との SSH 接続を許可する fw-allow-ssh ファイアウォール ルールを作成します。

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=consumer-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=0.0.0.0/0 \
        --target-tags=allow-ssh \
        --rules=tcp:22
    

エンドポイントを作成する

作成した公開サービスを参照するエンドポイントを作成します。

コンソール

  1. Cloud de Confiance コンソールで、[Private Service Connect] ページに移動します。

    [Private Service Connect] に移動

  2. [接続エンドポイント] タブをクリックします。

  3. [エンドポイントを接続] をクリックします。

  4. [ターゲット] で [公開済みのサービス] を選択します。

  5. [ターゲット サービス] に「projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/published-service」と入力します。

    PRODUCER_PROJECT は、公開されたサービスのプロジェクト ID に置き換えます。REGION は、公開されたサービスのリージョンに置き換えます。

  6. [エンドポイント名] に「ep-1」と入力します。

  7. [ネットワーク] で consumer-network を選択します。

  8. [サブネットワーク] で、[consumer-subnet] を選択します。

  9. [IP アドレス] プルダウン メニューをクリックし、[IP アドレスを作成] を選択します。

    1. [名前] に「ep-ip-1」と入力します。
    2. [静的 IP アドレス] で、Let me choose を選択します。
    3. [カスタム IP アドレス] に「192.168.10.5」と入力します。
    4. [予約] をクリックします。
  10. [エンドポイントを追加] をクリックします。

gcloud

  1. エンドポイントに割り当てる内部 IP アドレスを予約します。

    gcloud compute addresses create ep-ip-1 \
        --region=REGION \
        --subnet=consumer-subnet \
        --addresses=192.168.10.5
    

    REGION は、作成した公開済みサービスと同じリージョンに置き換えます。

  2. エンドポイントをサービス プロデューサーのサービス アタッチメントに接続する転送ルールを作成します。

    gcloud compute forwarding-rules create ep-1 \
        --region=REGION \
        --network=consumer-network \
        --address=ep-ip-1 \
        --target-service-attachment=projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/published-service
    

    次のように置き換えます。

    • PRODUCER_PROJECT: サービス プロデューサー プロジェクトのプロジェクト ID。

    • REGION: サービス アタッチメントのリージョン。

エンドポイントへのアクセスをテストする

エンドポイントと公開サービスが機能していることをテストするには、テスト VM を作成し、そこからエンドポイントにリクエストを送信します。

テスト用のクライアント VM を作成する

エンドポイントと同じリージョンにクライアント VM を作成します。

コンソール

  1. Cloud de Confiance コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. [インスタンスを作成] をクリックします。

  3. [名前] に「consumer-test」と入力します。

  4. [リージョン] で、バックエンド VM と同じリージョンを選択します。

  5. [ゾーン] で、そのリージョン内のゾーンを選択します。

  6. [ネットワーキング] をクリックして次のフィールドを構成します。

    1. [ネットワーク タグ] に「allow-ssh」と入力します。
    2. [ネットワーク インターフェース] で、次のように選択します。
      • [ネットワーク] で [consumer-network] を選択します。
      • [サブネット] で、[consumer-subnet] を選択します。
  7. [作成] をクリックします。

gcloud

gcloud compute instances create consumer-test \
    --zone=ZONE \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=consumer-subnet

ZONE は、バックエンド VM と同じリージョンにあるゾーンに置き換えます。

接続をテストする

このテストでは、クライアント VM からエンドポイントに接続します。想定される動作は、トラフィックがロードバランサのバックエンド VM に分散されることです。

  1. クライアント VM インスタンスに接続します。
    gcloud compute ssh consumer-test --zone=ZONE
    
    ZONE は、クライアント VM のゾーンに置き換えます。
  2. curl を使用して IP アドレスに接続するエンドポイントへのウェブ リクエストを作成します。レスポンスが異なるバックエンド VM から返ってくることを確認するために、このリクエストを繰り返します。レスポンスを生成する VM の名前が、各バックエンド VM 上で、/var/www/html/index.html のコンテンツによる HTML レスポンスのテキストとして表示されます。たとえば、想定されるレスポンスは Page served from: vm-1 や Page served from: vm-2 のようになります。
    curl -s http://192.168.10.5
    

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

プロジェクトを削除する

プロデューサー プロジェクト(PRODUCER_PROJECT)とコンシューマー プロジェクト(CONSUMER_PROJECT)の両方を削除します。

    Cloud de Confiance プロジェクトを削除する:

    gcloud projects delete PROJECT_ID

次のステップ