このチュートリアルでは、サービス ユーザーが Private Service Connect エンドポイントを作成して、公開されたサービスにアクセスする方法について説明します。エンドポイントにリクエストを送信すると、Private Service Connect はそれらのリクエストを公開サービスに転送します。
このチュートリアルは、クラウド アーキテクト、ネットワーク アーキテクト、ネットワーク管理者、IT 管理者を対象としています。
目標
- サービス ユーザー リソースのネットワーキングを構成する
- エンドポイントを作成する
- エンドポイントへのアクセスをテストする
費用
このドキュメントでは、課金対象である次の Cloud de Confiance by S3NSコンポーネントを使用します。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
- このシリーズの前の 2 つのチュートリアルを完了します。
- ロードバランス サービスを作成する。
- 他の VPC ネットワークからサービスにアクセスできるようにする。このチュートリアルを完了するには、 サービス アタッチメント ID が必要です。
- サービス ユーザー リソースに使用するプロジェクトを作成または選択します。このプロジェクトは
CONSUMER_PROJECTと呼ばれます。 -
Cloud de Confiance コンソールで、プロジェクトの選択ページに移動します。
-
Cloud de Confiance プロジェクトの選択または作成
プロジェクトの選択または作成に必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、
resourcemanager.projects.create権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
Compute Engine API が有効になっていない場合は、有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法を確認する。-
プロジェクトで次のロール(複数の場合あり)が割り当てられていることを確認します。 Compute Engine > Compute ネットワーク管理者、Compute Engine > Compute インスタンス管理者
ロールを確認する
-
Cloud de Confiance コンソールで、[IAM] ページに移動します。
IAM に移動 - プロジェクトを選択します。
-
[プリンシパル] 列で、自分または自分が所属するグループの行をすべて確認します。所属するグループについては、管理者にお問い合わせください。
- 自分のメールアドレスを含む行の [ロール] 列で、ロールのリストに必要なロールが含まれているかどうか確認します。
ロールを付与する
-
Cloud de Confiance コンソールで、[IAM] ページに移動します。
IAM に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Workforce Identity プール内のユーザーの ID です。詳細については、IAM ポリシーで Workforce プールユーザーを表すをご覧いただくか、管理者にお問い合わせください。
- [ロールを選択] をクリックし、ロールを検索します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
-
ネットワークを構成する
以降のセクションでは、エンドポイントをホストするネットワークとサブネットを作成する方法と、エンドポイントのテストに使用するクライアント VM への SSH アクセスを許可するファイアウォール ルールを作成する方法について説明します。
ネットワークとサブネットを作成する
サービス ユーザーのネットワークとサブネットを作成する手順は次のとおりです。
コンソール
Cloud de Confiance コンソールで、[VPC ネットワーク] ページに移動します。
[VPC ネットワークを作成] をクリックします。
[名前] に「
consumer-network」と入力します。[サブネット作成モード] で [カスタム] を選択します。
[新しいサブネット] セクションに、次の情報を入力します。
- [名前] に「
consumer-subnet」と入力します。 - [リージョン] で、作成した公開サービスと同じリージョンを選択します。
- [IP スタックタイプ] で [IPv4(シングルスタック)] を選択します。
- [IPv4 範囲] に「
192.168.10.0/24」と入力します。 - [完了] をクリックします。
- [名前] に「
[作成] をクリックします。
gcloud
カスタムモードの VPC ネットワークを作成します。
gcloud compute networks create consumer-network --subnet-mode=custom
consumer-networkネットワークにサブネットを作成します。gcloud compute networks subnets create consumer-subnet \ --network=consumer-network \ --range=192.168.10.0/24 \ --region=REGIONREGIONは、作成した公開済みサービスと同じリージョンに置き換えます。
ファイアウォール ルールを構成する
0.0.0.0/0 からの SSH トラフィックが allow-ssh ネットワーク タグを持つ VM に到達できるように、fw-allow-ssh というファイアウォール ルールを作成します。
コンソール
Cloud de Confiance コンソールで、[ファイアウォール ポリシー] ページに移動します。
受信 SSH 接続を許可するには、[ファイアウォール ルールを作成] をクリックして、次の設定を使用します。
- [名前] に「
fw-allow-ssh」と入力します。 - [ネットワーク] で
consumer-networkを選択します。 - [優先度] に「
1000」と入力します。 - [トラフィックの方向] で [上り(内向き)] をオンにします。
- [一致したときのアクション] で [許可] をオンにします。
- [ターゲット] で [指定されたターゲットタグ] を選択します。
- [ターゲットタグ] に「
allow-ssh」と入力します。 - [ソースフィルタ] で [IPv4 範囲] を選択します。
- [送信元 IPv4 範囲] に「
0.0.0.0/0」と入力します。 - [プロトコルとポート] で [指定したプロトコルとポート] を選択し、[TCP] チェックボックスをオンにします。[ポート] に「
22」と入力します。
- [名前] に「
[Create] をクリックします。
gcloud
ネットワーク タグ
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
エンドポイントを作成する
作成した公開サービスを参照するエンドポイントを作成します。
コンソール
Cloud de Confiance コンソールで、[Private Service Connect] ページに移動します。
[接続エンドポイント] タブをクリックします。
[エンドポイントを接続] をクリックします。
[ターゲット] で [公開済みのサービス] を選択します。
[ターゲット サービス] に「
projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/published-service」と入力します。PRODUCER_PROJECTは、公開されたサービスのプロジェクト ID に置き換えます。REGIONは、公開されたサービスのリージョンに置き換えます。[エンドポイント名] に「
ep-1」と入力します。[ネットワーク] で
consumer-networkを選択します。[サブネットワーク] で、[
consumer-subnet] を選択します。[IP アドレス] プルダウン メニューをクリックし、[IP アドレスを作成] を選択します。
- [名前] に「
ep-ip-1」と入力します。 - [静的 IP アドレス] で、Let me choose を選択します。
- [カスタム IP アドレス] に「
192.168.10.5」と入力します。 - [予約] をクリックします。
- [名前] に「
[エンドポイントを追加] をクリックします。
gcloud
エンドポイントに割り当てる内部 IP アドレスを予約します。
gcloud compute addresses create ep-ip-1 \ --region=REGION \ --subnet=consumer-subnet \ --addresses=192.168.10.5REGIONは、作成した公開済みサービスと同じリージョンに置き換えます。エンドポイントをサービス プロデューサーのサービス アタッチメントに接続する転送ルールを作成します。
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 を作成します。
コンソール
Cloud de Confiance コンソールで、[VM インスタンス] ページに移動します。
[インスタンスを作成] をクリックします。
[名前] に「
consumer-test」と入力します。[リージョン] で、バックエンド VM と同じリージョンを選択します。
[ゾーン] で、そのリージョン内のゾーンを選択します。
[ネットワーキング] をクリックして次のフィールドを構成します。
- [ネットワーク タグ] に「
allow-ssh」と入力します。 - [ネットワーク インターフェース] で、次のように選択します。
- [ネットワーク] で [
consumer-network] を選択します。 - [サブネット] で、[
consumer-subnet] を選択します。
- [ネットワーク] で [
- [ネットワーク タグ] に「
[作成] をクリックします。
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 に分散されることです。
- クライアント VM インスタンスに接続します。
gcloud compute ssh consumer-test --zone=ZONE
ZONEは、クライアント VM のゾーンに置き換えます。 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
次のステップ
- Private Service Connect の公開サービスの詳細を確認する
- エンドポイントを介した公開サービスへのアクセスについて確認する
- Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud アーキテクチャ センターをご覧ください。