プライベート ネットワーク アクセスを設定して、Google Cloud ネットワーク内でトラフィックが実行されるようにするには、VPC ネットワーク、Service Directory プロジェクト、自分が所有している Google Cloud サービス プロジェクトを所有するプロジェクトを構成する必要があります。 。これら 3 つのプロジェクトは、同一であることも別々のプロジェクトとすることもできます。
- [Network project] は VPC ネットワークのプロジェクトです。
- Service Directory プロジェクトは Service Directory サービスのプロジェクトです。このプロジェクトは、ネットワーク プロジェクトの共有 VPC ネットワーク内のサービス プロジェクトである可能性があります。
- Google Cloud サービス プロジェクトは、プライベート ネットワーク アクセスを呼び出す構成を持つプロジェクトです。たとえば、Google Cloud サービス構成などです。
始める前に
この手順は、以下の手順が完了していることを前提としています。
- Google Cloud Console の [API とサービス] ページから、アクセス可能な API を有効にする。Service Directory API を含みます。
- VPC ネットワーク内の VM インスタンスにはプライベート IP アドレスが必要です。
- オンプレミス ホストの場合、既存の Cloud VPN トンネルまたは Cloud Interconnect 接続が VPC ネットワークに接続されている必要があります。
ネットワーク プロジェクトの構成
ネットワーク プロジェクトを構成するには、次の手順に従います。
- 作成または既存の VPC ネットワークを使用します。自動およびカスタムモードの VPC ネットワークがサポートされています。レガシー ネットワークはサポートされていません。
宛先のターゲットが Compute Engine VM または内部ロードバランサのバックエンドの場合は、プライベート ネットワーク アクセスのために VPC ファイアウォールを経由する必要があります。ターゲットは、適切なポート(ポート
443
または80
)で35.199.192.0/19
からの TCP Ingress を許可する必要があります。Identity and Access Management(IAM)Service Directory ネットワークに Google Cloud サービス プロジェクトへのアクセス権を付与します。Google Cloud プロジェクトは
servicedirectory.googleapis.com
の Google Cloud サービスおよび Service Directory プロジェクトの VPC Service Controls の境界内にある必要があります。VPC Service Controls の詳細については、VPC Service Controls の概要をご覧ください。
Service Directory プロジェクトの構成
次の手順に従って、Service Directory プロジェクトを構成します。
- VPC ネットワーク内に仮想マシン(VM)または内部ロードバランサを作成します。
- VPC ネットワーク内に作成した VM または内部ロードバランサを指す Service Directory サービスを作成します。
- IAM サービス ディレクトリのネットワークに、Google Cloud サービス アカウントへのアクセスを許可します。役割と権限の詳細については、Service Directory の権限と役割をご覧ください。
プライベート ネットワーク アクセスを持つエンドポイントの作成
プライベート ネットワーク アクセスが構成されているエンドポイントを作成するには、次の手順に従います。
Console
- Google Cloud Console の [サービス ディレクトリ] 名前空間ページに移動します。
[Service Directory 名前空間] ページに移動 - 名前空間をクリックします。
- サービスをクリックします。
- [more_vert] をクリックし、[エンドポイントを追加] をクリックします。
- [エンドポイント名] を入力します。
- IPv4 IP アドレス(例:
192.0.2.0/24
)を入力します。 - [ポート] に番号(
443
、80
など)を入力します。 - プライベート ネットワーク アクセスを有効にするには、[リストから選択] をクリックして、[関連付けられている VPC ネットワーク] で使用可能なネットワークのリストから選択します。
- [プロジェクトとネットワーク名を指定する] を選択して、特定のプロジェクト ID とネットワーク名を指定することもできます。
- [作成] をクリックします。
gcloud
プロジェクト ID とネットワーク パスを指定して、gcloud beta service-directory endpoints create
コマンドを実行します。
gcloud beta 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
: 名前空間を含む Google Cloud リージョンNAMESPACE_NAME
: 名前空間に指定した名前(my-namespace
など)SERVICE_ID
: サービスの IDIP_ADDRESS
: エンドポイントの IP アドレス(192.0.2.0/24
など)PORT_NUMBER
: エンドポイントが実行されているポート(通常は443
または80
)NETWORK_PATH
: ネットワークへの URL(projects/PROJECT_NUMBER/locations/global/networks/NETWORK_NAME
など)。
Google Cloud サービス プロジェクトの構成
- Google Cloud Service API を有効にします。
- ネットワーク プロジェクトで作成した Service Directory サービスを使用して Google Cloud サービスを構成します。
- VPC Service Controls を使用している場合は、VPC Service Controls の境界でサービス ディレクトリがネットワーク プロジェクトとサービス ディレクトリ プロジェクトにアクセスできるようにしてください。
ユースケース
このセクションでは、プライベート ネットワーク アクセスを構成するユースケースの例を示します。
VPC ネットワーク、VM、Service Directory が同じプロジェクトにある場合に HTTP エンドポイントを呼び出す
Google Cloud プロダクトを設定して、VM 上で HTTP エンドポイントを呼び出すことができます。このトラフィックは、公共のインターネットを介して転送されるべきではありません。
この設定では、同じプロジェクトに VPC ネットワーク、VM、Service Directory サービス、Google Cloud サービスを含むプロジェクトがあります。
プライベート ネットワーク アクセスを使用して Google Cloud プロダクトを設定する手順は次のとおりです。
ネットワークとターゲット ネットワークを設定する
my-project
などのプロジェクトを作成します。VPC-1
(projects/project-number/locations/global/networks/my-network)などの VPC ネットワークを作成します。VPC-1
へのサブネットまたは Ingress または VM へのプロキシ アクセスを許可します。35.199.192.0/19
からの上りを許可する。VPC-1
のus-central1
リージョンにVM-1
を作成します。- ポート
P
のサービスを実行するようにサービスを設定します。 - HTTPS を使用する場合は、公開鍵インフラストラクチャ(PKI)トランスポート レイヤ セキュリティ(TLS)証明書がインストールされていることを確認してください。
REGION-1
に Service Directory サービスSD-1
を作成します。SD-1
に、内部 IP アドレスVM-1
=10.10.10.10
、P
=443
、network
=projects/project-number/global/networks/my-network
を指定してエンドポイントを作成します。詳しい手順については、プライベート ネットワーク アクセスが設定されたエンドポイントの作成をご覧ください。Google Cloud サービス アカウントに次の IAM 役割を付与します。
servicedirectory.viewer
servicedirectory.pscAuthorizedService
必要に応じて、
VM-2
を設定してEndpoint-2
を追加します。
Google Cloud プロダクトを設定する
- 「Cloud Scheduler、毎分呼び出し」など、Google Cloud プロダクト構成
CONFIG-1
を構成します。 - HTTP リクエストを設定します。
SD-1
経由など、プライベート ネットワーク経由でリクエストを指定します。- (省略可)認証局の設定を構成する。
これで、Google Cloud プロダクトは SD-1
を使用して HTTP リクエストを呼び出すことができます。
VPC ネットワーク、VM、サービス ディレクトリが別のプロジェクトにある場合の HTTP エンドポイントの呼び出し
この構成例では、イベント、タスク、Pub/Sub などの Google Cloud サービスを設定して、VM 上で HTTP エンドポイントを呼び出します。この例では、サービス ディレクトリ プロジェクト、ネットワーク プロジェクト、Google Cloud サービス プロジェクトが異なります。このトラフィックは、公共のインターネットを介して転送されるべきではありません。必要に応じて、この API 呼び出しが VPC Service Controls の境界を尊重する必要があります。
この場合、Google Cloud サービス プロジェクトの構成により、ネットワーク プロジェクトの VPC ネットワークにある Google Cloud サービス プロジェクト VM への下りが有効になります。
Google Cloud サービス プロジェクトはプロデューサー プロジェクトと異なる場合があります。両方のプロジェクトの VPC Service Controls の境界が使用されます。
ネットワーク プロジェクトを作成する
次の IAM 権限があることを確認します。
- メッセージ サービスの
servicedirectory.services.resolve
- ネットワークの
servicedirectory.networks.access
次の点にご注意ください。
- Service Directory プロジェクトとネットワーク プロジェクトは接続する必要はありませんが、同じ VPC Service Controls に含まれている必要があります。
- ファイアウォールと IAM はネットワークとサービスでデフォルトで無効になっています。
ネットワーク プロジェクトを作成する手順は次のとおりです。
VPC-1
(projects/project-number/locations/global/networks/my-network)などの VPC ネットワークを作成します。VPC ネットワーク ファイアウォールを有効にします。
VPC Service Controls を使用している場合、VPC Service Controls の境界を使用して、サービス ディレクトリを Google Cloud サービス プロジェクトとサービス ディレクトリ プロジェクトに接続できます。
Service Directory プロジェクトを構成する
- VPC ネットワーク内に VM または内部ロードバランサを作成する。
- VPC ネットワーク内の VM または内部ロードバランサを指す Service Directory サービスを作成します。
- IAM サービス ディレクトリの
service read
に Google Cloud サービス プロジェクト メッセージング サービスへのアクセス権を付与します。 - VPC Service Controls を使用している場合、VPC Service Controls の境界を使用して、サービス ディレクトリを Google Cloud サービス プロジェクトとサービス ディレクトリ プロジェクトに接続できます。
Google Cloud サービス プロジェクトを構成する
- 使用しているメッセージング サービスの API を有効にします。
- Service Directory プロジェクトの Service Directory サービスを使用して、メッセージング サービス
PUSH
を構成します。 - VPC Service Controls を使用している場合、VPC Service Controls の境界を使用して、サービス ディレクトリをネットワーク プロジェクトとサービス ディレクトリ プロジェクトに接続できます。
次のステップ
- Service Directory エンドポイントを構成します。
- Service Directory の概要については、Service Directory の概要をご覧ください。
- プライベート サービス接続の詳細については、プライベート サービス接続をご覧ください。
- Service Directory の使用時に発生する可能性のある一般的な問題の解決策については、トラブルシューティングをご覧ください。