公開サービスの概要
このドキュメントでは、Private Service Connect を使用して、サービス ユーザーがサービスを利用できるようにする方法の概要について説明します。
サービス プロデューサーとして Private Service Connect を利用し、VPC ネットワークの内部 IP アドレスを使用してサービスを公開できます。サービス ユーザーは、VPC ネットワークの内部 IP アドレスを使用して、公開サービスにアクセスできます。
コンシューマがサービスを利用できるようにするには、1 つ以上の専用サブネットを作成します。次に、これらのサブネットを参照するサービス アタッチメントを作成します。サービス アタッチメントに異なる接続設定を行うことができます。
サービス コンシューマの種類
Private Service Connect サービスに接続できるコンシューマには次の 2 種類があります。
エンドポイントは転送ルールに基づいています。

エンドポイントを使用すると、サービス ユーザーは、コンシューマーの VPC ネットワークからサービス プロデューサーの VPC ネットワーク内のサービスにトラフィックを送信できます(クリックして拡大)。
バックエンドはロードバランサに基づいています。

グローバル外部アプリケーション ロードバランサを使用するバックエンドでは、インターネットにアクセスできるサービス ユーザーは、サービス プロデューサーの VPC ネットワーク内のサービスにトラフィックを送信できます(クリックして拡大)。
NAT サブネット
Private Service Connect サービス アタッチメントは、1 つ以上の NAT サブネット(Private Service Connect サブネットとも呼ばれます)で構成されます。コンシューマ VPC ネットワークからのパケットは送信元 NAT(SNAT)を使用して変換され、元の送信元 IP アドレスが、プロデューサーの VPC ネットワーク内にある NAT サブネットからの送信元 IP アドレスに変換されます。
サービス アタッチメントには複数の NAT サブネットを設定できます。トラフィックを中断することなく、いつでも NAT サブネットをサービス アタッチメントに追加できます。
1 つのサービス アタッチメントに複数の NAT サブネットを構成できますが、1 つの NAT サブネットを複数のサービス アタッチメントで使用することはできません。
Private Service Connect NAT サブネットは、仮想マシン(VM)インスタンスや転送ルールなどのリソースに使用できません。サブネットは、受信ユーザー接続の SNAT に IP アドレスを提供する目的でのみ使用されます。
NAT サブネットのサイズ設定
サブネットのサイズによって、サービスに接続できるコンシューマーの数が決まります。NAT サブネット内のすべての IP アドレスが使用されると、追加の Private Service Connect 接続は失敗します。次の点を考慮してください。
サービス アタッチメントに接続されているエンドポイントまたはバックエンドごとに、NAT サブネット内の 1 個の IP アドレスが使用されます。
TCP 接続または UDP 接続の数、クライアントの数、コンシューマー VPC ネットワークの数は、NAT サブネット内の IP アドレスの使用には影響しません。
コンシューマーが接続の伝播を使用している場合、接続が伝播される VPC スポークとエンドポイントごとに追加の IP アドレスが使用されます。
伝播接続の上限を構成することで、作成される伝播接続の数を制御できます。
エンドポイントとバックエンドに必要な IP アドレスの数を見積もる場合は、Private Service Connect のマルチポイント アクセスを使用するマルチテナント サービスまたはコンシューマーを考慮してください。
NAT サブネットのモニタリング
NAT サブネットの IP アドレスを使用できずに Private Service Connect 接続が失敗することがないようにするため、次のことをおすすめします。
private_service_connect/producer/used_nat_ip_addresses
サービス アタッチメントの指標をモニタリングします。使用する NAT IP アドレスの数が、サービス アタッチメントの NAT サブネットの容量を超えないようにします。- サービス アタッチメント接続の接続ステータスをモニタリングします。接続のステータスが「要確認」の場合、アタッチメントの NAT サブネットで使用可能な IP アドレスがない可能性があります。
- マルチテナント サービスの場合、接続上限を使用して、単一のコンシューマーがサービス アタッチメントの NAT サブネットの容量を使い果たさないようにすることができます。
トラフィックを中断することなく、いつでも NAT サブネットをサービス アタッチメントに追加できます。
NAT の仕様
公開するサービスを設計するときに、Private Service Connect NAT の次の特性を考慮してください。
UDP マッピングの無通信タイムアウトは 30 秒です。この値を構成することはできません。
TCP 確立済み接続の無通信タイムアウトは 20 分です。この値を構成することはできません。
クライアント接続のタイムアウトに関する問題を回避するには、次のいずれかを行います。
すべての接続を 20 分未満にします。
一部のトラフィックが 20 分に 1 回以上送信されるようにします。アプリケーションでハートビートやキープアライブを使用することも、TCP キープアライブを使用することもできます。たとえば、リージョン内部アプリケーション ロードバランサまたはリージョン内部プロキシ ネットワーク ロードバランサのターゲット プロキシでキープアライブを構成できます。
TCP 一時的な接続の無通信タイムアウトは 30 秒です。この値を構成することはできません。
5 タプル(NAT サブネットの送信元 IP アドレスと送信元ポート、宛先プロトコル、IP アドレス、宛先ポート)が再利用されるまでに 2 分ほどかかることがあります。
Private Service Connect の SNAT は、IP フラグメントをサポートしていません。
最大接続数
単一のプロデューサー VM は、単一の Private Service Connect コンシューマー(エンドポイントまたはバックエンド)から最大 64,512 個の TCP 接続と 64,512 個の UDP 接続を同時に受け入れることができます。単一の Private Service Connect エンドポイントがすべてのプロデューサー バックエンドで受け付けることができる TCP 接続と UDP 接続の合計数に制限はありません。クライアント VM は、Private Service Connect エンドポイントへの TCP 接続または UDP 接続を開始するときに、65,536 個の送信元ポートすべてを使用できます。すべてのネットワーク アドレス変換は、プロデューサー ホストでローカルに行われます。これには、一元的に割り当てられた NAT ポートプールは必要ありません。
サービス アタッチメント
サービス プロデューサーは、サービス アタッチメントを介してサービスを公開します。
- サービスを公開するために、サービス プロデューサーはターゲット サービスを参照するサービス アタッチメントを作成します。ターゲット サービスは次のいずれかになります。
- ロードバランサの転送ルール
- Secure Web Proxy インスタンス
このサービス アタッチメントの URI の形式は projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
のようになります。
サービス アタッチメントを単一のターゲット サービスに関連付けることができます。特定のターゲット サービスに複数のサービス アタッチメントを関連付けることはできません。
接続の設定
各サービスのアタッチメントには、接続リクエストを自動的に受け入れるかどうかを指定する接続設定があります。オプションは次の 3 つです。
- すべての接続を自動的に受け入れる。サービス アタッチメントは、任意のコンシューマからのすべてのインバウンド接続リクエストを自動的に受け入れます。自動承認は、受信接続をブロックする組織のポリシーでオーバーライドできます。
- 選択したネットワークの接続を受け入れる。サービス アタッチメントは、コンシューマ VPC ネットワークがサービス アタッチメントのコンシューマ承認リストに含まれている場合にのみ、インバウンド接続リクエストを受け入れます。
- 選択したプロジェクトの接続を受け入れるサービス アタッチメントは、ユーザー プロジェクトがサービス アタッチメントのコンシューマ承認リストに含まれている場合にのみ、インバウンド接続リクエストを受け入れます。
選択したプロジェクトやネットワークの接続を受け入れることをおすすめします。他の手段でコンシューマー アクセスを制御し、サービスに対して制限の緩すぎるアクセスを有効にする場合は、すべての接続を自動的に受け入れるのが適切です。
接続ステータス
サービス アタッチメントの接続ステータスは接続の状態を表します。詳細については、接続ステータスをご覧ください。
コンシューマーの承認リストと拒否リスト
コンシューマーの承認リストと拒否リストは、サービス アタッチメントのセキュリティ機能です。承認リストと拒否リストを使用すると、サービス プロデューサーはサービスに対する Private Service Connect 接続を確立できるコンシューマーを指定できます。コンシューマーの承認リストは接続を受け入れるかどうかを指定し、拒否リストは接続が拒否するかどうかを指定します。どちらのリストでも、接続リソースの VPC ネットワークまたはプロジェクトごとにコンシューマーを指定できます。プロジェクトまたはネットワークを承認リストと拒否リストの両方に追加すると、そのプロジェクトまたはネットワークからの接続リクエストは拒否されます。フォルダでコンシューマを指定することはできません。
コンシューマーの承認リストと拒否リストでは、プロジェクトまたは VPC ネットワークを指定できますが、両方を同時に指定することはできません。接続を中断することなく、一方のタイプから他方のタイプにリストを変更できますが、変更は 1 回の更新で行う必要があります。そうしないと、一部の接続が一時的に保留状態になる可能性があります。
コンシューマー リストは、エンドポイントが公開サービスに接続できるかどうかを制御しますが、そのエンドポイントにリクエストを送信できるユーザーは制御しません。たとえば、コンシューマーに 2 つのサービス プロジェクトが接続された共有 VPC ネットワークがあるとします。公開サービスのコンシューマーの承認リストに service-project1
があり、コンシューマーの拒否リストに service-project2
がある場合、次のように処理されます。
-
service-project1
のコンシューマーは、公開サービスに接続するエンドポイントを作成できます。 -
service-project2
のコンシューマーは、公開サービスに接続するエンドポイントを作成できません。 -
service-project2
のクライアントは、トラフィックをブロックするファイアウォール ルールまたはポリシーがない場合、service-project1
のエンドポイントにリクエストを送信できます。
コンシューマーの承認リストと組織のポリシー間のやり取り方法については、コンシューマー承認リストと組織のポリシー間のやり取りをご覧ください。
コンシューマーの承認リストの上限
コンシューマーの承認リストには、接続上限があります。これらの上限により、サービス アタッチメントが指定されたコンシューマー プロジェクトまたは VPC ネットワークから受け入れることができる Private Service Connect エンドポイント接続の合計数が設定されます。
プロデューサーは接続上限を使用して、個別のコンシューマーがプロデューサー VPC ネットワーク内の IP アドレスまたはリソースの割り当てを使い切らないようにします。受け入れられた各 Private Service Connect 接続は、コンシューマー プロジェクトまたは VPC ネットワークの構成済み上限から差し引かれます。上限は、コンシューマーの承認リストを作成または更新するときに設定されます。サービス アタッチメントの詳細を取得する際に、サービス アタッチメントの接続を確認できます。
たとえば、サービス アタッチメントに project-1
と project-2
を含むコンシューマー承認リストがあり、両方が 1 つの接続に制限されているとします。プロジェクト project-1
は 2 つの接続、project-2
は 1 つの接続、project-3
は 1 つの接続をリクエストします。project-1
には 1 つの接続という制限があるため、最初の接続は受け入れられますが、2 番目の接続は保留中のままになります。project-2
からの接続は受け入れられますが、project-3
からの接続は保留中のままになります。project-1
の上限を引き上げると、project-1
から 2 番目の接続を受け入れることが可能になります。project-3
がコンシューマーの承認リストに追加されると、その接続は保留中から承認済みに移行します。
接続調整
接続の調整により、サービス アタッチメントの許可リストまたは拒否リストの更新が既存の Private Service Connect 接続に影響を与えるかどうかが決まります。接続の調整が有効になっている場合、許可リストまたは拒否リストを更新すると、既存の接続が終了する場合があります。以前に拒否された接続が受け入れられる可能性もあります。接続の調整が無効になっている場合、許可リストまたは拒否リストの更新は新しい接続と保留中の接続にのみ影響します。
たとえば、Project-A
からの複数の接続が承諾されているサービス アタッチメントがあるとします。Project-A
は、サービス アタッチメントの許可リストにあります。許可リストから Project-A
を削除してサービス アタッチメントを更新しました。
接続の調整が有効になっている場合、Project-A
からの既存の接続はすべて PENDING
に変わり、これにより、2 つの VPC ネットワーク間のネットワーク接続が切断され、ネットワーク トラフィックが直ちに停止します。
接続の調整が無効になっている場合、Project-A
からの既存の接続は影響を受けません。ネットワーク トラフィックは引き続き既存の Private Service Connect 接続間を通過します。ただし、新しい Private Service Connect 接続は許可されません。
新しいサービス アタッチメントの接続調整を構成する方法については、明示的な承認でサービスを公開するをご覧ください。
既存のサービス アタッチメントの接続調整を構成する方法については、接続調整を構成するをご覧ください。
DNS 構成
公開サービスに接続するエンドポイントの DNS 構成については、サービスの DNS 構成をご覧ください。
IP バージョンの変換
公開サービス(サービス アタッチメント)に接続する Private Service Connect エンドポイントの場合、コンシューマー転送ルールの IP アドレスの IP バージョンによって、エンドポイントの IP バージョンと、エンドポイントから送信されるトラフィックが決定されます。IP アドレスは、IPv4 のみ、IPv6 のみ(プレビュー)、またはデュアルスタック サブネットから取得できます。エンドポイントの IP バージョンには IPv4 または IPv6 のいずれかを設定できます。両方を指定することはできません。
公開サービスの場合、サービス アタッチメントの IP バージョンは、関連付けられた転送ルールまたは Secure Web Proxy インスタンスの IP アドレスによって決まります。この IP アドレスには、サービス アタッチメントの NAT サブネットのスタックタイプとの互換性が必要です。NAT サブネットは、IPv4 のみまたはデュアルスタックのサブネットにできます。NAT サブネットがデュアルスタック サブネットの場合、IPv4 アドレス範囲または IPv6 アドレス範囲のいずれかが使用されます。両方が使用されることはありません。Private Service Connect では、NAT サブネットに IPv6 専用サブネット(プレビュー)を使用できません。
Private Service Connect は、IPv4 エンドポイントと IPv6 サービス アタッチメントの接続をサポートしていません。この場合は、エンドポイントの作成が失敗し、次のエラー メッセージが表示されます。
Private Service Connect forwarding rule with an IPv4 address
cannot target an IPv6 service attachment.
サポートされている構成では、次の組み合わせが可能です。
- IPv4 エンドポイントから IPv4 サービスへのアタッチメント
- IPv6 エンドポイントから IPv6 サービスへのアタッチメント
-
IPv6 エンドポイントから IPv4 サービスへのアタッチメント
この構成では、Private Service Connect が 2 つの IP バージョン間で自動的に変換を行います。
Private Service Connect バックエンドとサービス アタッチメント間の接続では、コンシューマーとプロデューサーの転送ルールの両方で IPv4 を使用する必要があります。
機能と互換性
次の表で、 は機能がサポートされていることを示し、 は機能がサポートされていないことを示します。
エンドポイントのサポート
このセクションでは、エンドポイントを使用して公開サービスにアクセスするときに、コンシューマーとプロデューサーが使用できる構成オプションについて説明します。
コンシューマーの構成
次の表は、ターゲット プロデューサー タイプに基づいて、公開サービスにアクセスするエンドポイントでサポートされる構成オプションと機能をまとめたものです。
ターゲット プロデューサー | コンシューマーの構成(エンドポイント) | ||||||
---|---|---|---|---|---|---|---|
コンシューマーのグローバル アクセス | ハイブリッド アクセス | DNS の自動構成 (IPv4 のみ) |
VPC ネットワーク ピアリング アクセス | Network Connectivity Center 接続の伝播(IPv4 のみ) | IPv4 エンドポイントでサポートされているターゲット サービス | IPv6 エンドポイントでサポートされているターゲット サービス | |
クロスリージョン内部アプリケーション ロードバランサ(プレビュー) |
|
|
|||||
内部パススルー ネットワーク ロードバランサ | ロードバランサでグローバル アクセスが有効になっている場合のみ(既知の問題) |
|
|
||||
内部プロトコル転送(ターゲット インスタンス) | プロデューサー転送ルールでグローバル アクセスが有効になっている場合のみ(既知の問題) |
|
|
||||
ポート マッピング サービス | プロデューサー転送ルールでグローバル アクセスが有効になっている場合のみ |
|
|
||||
リージョン内部アプリケーション ロードバランサ | サービス アタッチメントの作成前にロードバランサでグローバル アクセスが有効になっている場合のみ |
|
|
||||
リージョン内部プロキシ ネットワーク ロードバランサ | サービス アタッチメントの作成前にロードバランサでグローバル アクセスが有効になっている場合のみ |
|
|
||||
安全なウェブプロキシ |
|
|
プロデューサーの構成
この表は、エンドポイントがアクセスする公開サービスでサポートされる構成オプションと機能をまとめたものです。
プロデューサーの種類 | プロデューサーの構成(公開サービス) | |||
---|---|---|---|---|
サポートされるプロデューサー バックエンド | PROXY プロトコル(TCP トラフィックのみ) | セッション アフィニティ モード | IP バージョン | |
クロスリージョン内部アプリケーション ロードバランサ(プレビュー) |
|
該当なし |
|
|
内部パススルー ネットワーク ロードバランサ |
|
なし(5 タプル) CLIENT_IP_PORT_PROTO |
|
|
内部プロトコル転送(ターゲット インスタンス) |
|
該当なし |
|
|
ポート マッピング サービス |
|
該当なし |
|
|
リージョン内部アプリケーション ロードバランサ |
|
該当なし |
|
|
リージョン内部プロキシ ネットワーク ロードバランサ |
|
該当なし |
|
|
安全なウェブプロキシ |
|
該当なし |
|
サポートされるポート構成は、ロードバランサによって異なります。ロードバランサには、単一のポートをサポートするものと、ポートの範囲をサポートするものと、すべてのポートをサポートするものがあります。詳細については、ポートの仕様をご覧ください。
共有 VPC
サービス プロジェクト管理者は、共有 VPC ネットワーク内のリソースに接続する共有 VPC サービス プロジェクトでサービス アタッチメントを作成できます。
構成は、通常のサービス アタッチメントの場合とほぼ同じですが、次の点が異なります。
- プロデューサー ロードバランサの転送ルールは、共有 VPC ネットワークの IP アドレスに関連付けられています。転送ルールのサブネットは、サービス プロジェクトと共有されている必要があります。
- サービス アタッチメントは、共有 VPC ネットワークの Private Service Connect サブネットを使用します。このサブネットは、サービス プロジェクトと共有されている必要があります。
ロギング
バックエンド VM を含むサブネットで VPC Flow Logs を有効にできます。このログには、Private Service Connect のサブネット内のバックエンド VM と IP アドレスの間のフローが記録されます。
VPC Service Controls
VPC Service Controls と Private Service Connect には互換性があります。Private Service Connect エンドポイントがデプロイされている VPC ネットワークが VPC Service Controls の境界内にある場合、エンドポイントも同じ境界の一部になります。エンドポイントを介してアクセスされる VPC Service Controls でサポートされているサービスには、その VPC Service Controls の境界のポリシーが適用されます。
エンドポイントを作成すると、コンシューマ プロジェクトとプロデューサー プロジェクトの間でコントロール プレーンの API 呼び出しが行われ、Private Service Connect 接続を確立します。同じ VPC Service Controls の境界内にないコンシューマ プロジェクトとプロデューサー プロジェクトの間に Private Service Connect 接続を確立する場合、下り(外向き)ポリシーによる明示的な承認は必要ありません。エンドポイントを介した VPC Service Controls 対応サービスとの通信は、VPC Service Controls の境界で保護されます。
コンシューマーの接続情報の表示
デフォルトでは、Private Service Connect は、コンシューマーの送信元 IP アドレスをサービス プロデューサーの VPC ネットワーク内に存在する Private Service Connect サブネットのアドレスに変換します。コンシューマーの元の送信元 IP アドレスを確認する場合は、サービスを公開するときに PROXY プロトコルを有効にします。 Private Service Connect は、PROXY プロトコル バージョン 2 をサポートしています。
すべてのサービスが PROXY プロトコルをサポートしているわけではありません。詳細については、機能と互換性をご覧ください。
PROXY プロトコルが有効になっている場合は、PROXY プロトコル ヘッダーからコンシューマーの送信元 IP アドレスと PSC 接続 ID(pscConnectionId
)を取得できます。
PROXY プロトコル ヘッダーの形式は、コンシューマー エンドポイントの IP バージョンによって異なります。サービス アタッチメントのロードバランサに IPv6 アドレスがある場合、コンシューマーは IPv4 アドレスと IPv6 アドレスの両方で接続できます。受信するトラフィックの IP バージョンの PROXY プロトコル ヘッダーを受信して読み取るようにアプリケーションを構成します。
サービス アタッチメントで PROXY プロトコルを有効にすると、その変更は新しい接続にのみ適用されます。既存の接続に PROXY プロトコル ヘッダーは含まれません。
PROXY プロキシを有効にする場合は、バックエンド ウェブサーバー ソフトウェアのドキュメントで、クライアント接続 TCP ペイロードで受信する PROXY プロトコル ヘッダーの解析と処理についてご確認ください。サービス アタッチメントで PROXY プロトコルが有効になっていても、バックエンド ウェブサーバーが PROXY プロトコル ヘッダーを処理するように構成されていない場合は、ウェブ リクエストの形式が正しくない可能性があります。リクエストの形式が正しくない場合、サーバーはそのリクエストを解釈できません。
Private Service Connect 接続 ID(pscConnectionId
)は、Type-Length-Value(TLV)形式で PROXY プロトコル ヘッダーにエンコードされます。
フィールド | フィールドの長さ | フィールド値 |
---|---|---|
タイプ | 1 バイト | 0xE0 (PP2_TYPE_GCP) |
長さ | 2 バイト | 0x8 (8 バイト) |
値 | 8 バイト | ネットワーク順の 8 バイトの pscConnectionId |
コンシューマー転送ルール、またはプロデューサー サービス アタッチメントから、8 バイトの pscConnectionId
値を表示できます。
pscConnectionId
値は、ある時点でのすべてのアクティブな接続に対してグローバルに一意です。ただし、時間がたつと、pscConnectionId
は次のようなシナリオで再利用される可能性があります。
特定の VPC ネットワーク内で、エンドポイント(転送ルール)を削除し、同じ IP アドレスを使用して新しいエンドポイントを作成した場合、同じ
pscConnectionId
値が使用されることがあります。エンドポイント(転送ルール)を含む VPC ネットワークを削除すると、7 日間の待機期間後に、これらのエンドポイントに使用されていた
pscConnectionId
値が、別の VPC ネットワークにある別のエンドポイントに使用されることがあります。
pscConnectionId
値は、デバッグやパケットの送信元のトレースに使用できます。
16 バイトの Private Service Connect サービス アタッチメント ID(pscServiceAttachmentId
)は、プロデューサー サービス アタッチメントから取得できます。pscServiceAttachmentId
値は、Private Service Connect サービス アタッチメントを識別するグローバルに一意の ID です。pscServiceAttachmentId
値は公開設定とデバッグに使用できます。この値は PROXY プロトコル ヘッダーには含まれません。
割り当て
プロデューサー VPC ネットワークにアクセスできる Private Service Connect エンドポイントと伝播接続の合計数は、PSC ILB consumer forwarding rules per producer VPC network
割り当てによって制御されます。
関連付けられたサービス アタッチメントが削除された場合や、接続を拒否するように構成された場合でも、エンドポイントは削除されるまでこの割り当てに影響します。接続の伝播が Network Connectivity Center ハブで無効になっている場合や、伝播された接続のスポークが削除された場合でも、関連付けられたエンドポイントが削除されるまで、伝播接続はこの割り当てに影響します。
オンプレミス アクセス
Private Service Connect サービスは、エンドポイントを使用して利用可能になります。これらのエンドポイントには、サポート対象で接続中のオンプレミス ホストからアクセスできます。詳細については、オンプレミス ホストからエンドポイントにアクセスするをご覧ください。
制限事項
公開サービスには次の制限があります。
- 複数のプロトコル(プロトコルが
L3_DEFAULT
に設定されている)で構成されたロードバランサはサポートされていません。 - Packet Mirroring では、Private Service Connect の公開サービス トラフィックのパケットはミラーリングできません。
- Google Cloud CLI または API を使用して、内部プロトコル転送に使用される転送ルールを指すサービス アタッチメントを作成する必要があります。
問題と回避策については、既知の問題をご覧ください。