Private Service Connect のセキュリティ

このページでは、Private Service Connect セキュリティの概要について説明します。

Private Service Connect には、Private Service Connect リソースへのアクセスを管理するためのコントロールがいくつか用意されています。これにより、Private Service Connect リソースをデプロイできるユーザー、コンシューマーとプロデューサー間での続を確立できるかどうか、これらの接続へのアクセスを許可するネットワーク トラフィックを制御することができます。

これらのコントロールは、次の要素を使用して実装されます。

  • Identity and Access Management(IAM)権限により、エンドポイント、バックエンド、サービスなどの Private Service Connect リソースのデプロイを許可する IAM プリンシパルが決まります。IAM プリンシパルとは、リソースにアクセスできる Google アカウント、サービス アカウント、Google グループ、Google Workspace アカウント、または Cloud Identity ドメインです。
  • Private Service Connect の承認リストと拒否リストおよび組織のポリシーにより、個々のコンシューマーとプロデューサーの間で Private Service Connect 接続を確立できるかどうかが決まります。
  • VPC ファイアウォール ルールにより、特定の TCP または UDP トラフィックに Private Service Connect 接続へのアクセスを許可するかどうかが決まります。

図 1 は、Private Service Connect 接続のコンシューマー側とプロデューサー側でこれらのコントロールがどのように相互作用するかを示しています。

図 1. IAM 権限、組織のポリシー、承認リストと拒否リスト、VPC ファイアウォール ルールが連携して、Private Service Connect 接続のコンシューマー側とプロデューサー側を保護します。

IAM

各 Private Service Connect リソースは、1 つ以上の IAM 権限によって管理されます。この権限により、管理者はどの IAM プリンシパルが Private Service Connect リソースをデプロイできるかを制御できます。

IAM は、どの IAM プリンシパルが Private Service Connect 接続に接続できるのか、または使用できるのかを管理しません。サービスとの接続を確立できるエンドポイントまたはバックエンドを制御するには、組織のポリシーまたはコンシューマーの承認リストを使用します。Private Service Connect リソースにトラフィックを送信できるクライアントを制御するには、VPC ファイアウォールまたはファイアウォール ポリシーを使用します。

IAM 権限の詳細については、IAM 権限をご覧ください。

エンドポイントの作成に必要な権限については、エンドポイントを作成するをご覧ください。

サービス アタッチメントの作成に必要な権限については、明示的な承認があるサービスを公開するをご覧ください。

接続ステータス

Private Service Connect エンドポイント、バックエンド、サービス アタッチメントには、接続の状態を示す接続ステータスがあります。 接続の両側を形成するコンシューマー リソースとプロデューサー リソースは常に同じステータスになります。 接続ステータスは、エンドポイントの詳細を表示するバックエンドの説明を取得する、または公開サービスの詳細を表示することで確認できます。

次の表に、ステータスの説明を示します。

接続ステータス 説明
承認 Private Service Connect 接続が確立されています。2 つの VPC ネットワークが接続し、接続が正常に機能しています。
保留中

Private Service Connect 接続が確立されていないため、ネットワーク トラフィックが 2 つのネットワーク間を移動できません。接続がこのステータスになる理由は次のとおりです。

  • サービス アタッチメントは明示的な承認を必要としますが、コンシューマーがコンシューマーの承認リストに含まれていません。
  • 接続数がサービス アタッチメントの接続上限を超えています。

これらの理由でブロックされた接続は、根本的な問題が解決されるまで無期限に保留状態のままになります。

拒否

Private Service Connect 接続が確立されていません。ネットワーク トラフィックを 2 つのネットワーク間で移動することはできません。接続がこのステータスになる理由は次のとおりです。

要確認 接続のプロデューサー側に問題があります。一部のトラフィックは 2 つのネットワーク間を流れますが、一部の接続は機能しない可能性があります。たとえば、プロデューサーの NAT サブネットが使い果たされ、新しい接続に IP アドレスを割り振ることができない場合があります。
終了

サービス アタッチメントが削除され、Private Service Connect 接続が閉じています。ネットワーク トラフィックを 2 つのネットワーク間で移動することはできません。

閉じた接続は終端状態です。接続を復元するには、サービス アタッチメントだけでなく、エンドポイントまたはバックエンドも再作成する必要があります。

サービス アタッチメントの構成

次の機能を使用して、サービス アタッチメントに接続できるコンシューマーを制御できます。

接続の設定

各サービスのアタッチメントには、接続リクエストを自動的に受け入れるかどうかを指定する接続設定があります。オプションは次の 3 つです。

  • すべての接続を自動的に受け入れる。サービス アタッチメントは、任意のコンシューマからのすべてのインバウンド接続リクエストを自動的に受け入れます。自動承認は、受信接続をブロックする組織のポリシーでオーバーライドできます。
  • 選択したネットワークの接続を受け入れる。サービス アタッチメントは、コンシューマ VPC ネットワークがサービス アタッチメントのコンシューマ承認リストに含まれている場合にのみ、インバウンド接続リクエストを受け入れます。
  • 選択したプロジェクトの接続を受け入れるサービス アタッチメントは、ユーザー プロジェクトがサービス アタッチメントのコンシューマ承認リストに含まれている場合にのみ、インバウンド接続リクエストを受け入れます。

選択したプロジェクトやネットワークの接続を受け入れることをおすすめします。他の手段でコンシューマー アクセスを制御し、サービスに対する無制限のアクセスを有効にする場合は、すべての接続を自動的に受け入れるのが適切です。

承認リストと拒否リスト

コンシューマーの承認リストと拒否リストは、サービス アタッチメントのセキュリティ機能です。承認リストと拒否リストを使用すると、サービス プロデューサーはサービスに対する Private Service Connect 接続を確立できるコンシューマーを指定できます。コンシューマーの承認リストは接続を受け入れるかどうかを指定し、拒否リストは接続が拒否するかどうかを指定します。どちらのリストでも、接続リソースの VPC ネットワークまたはプロジェクトごとにコンシューマーを指定できます。プロジェクトまたはネットワークを承認リストと拒否リストの両方に追加すると、そのプロジェクトまたはネットワークからの接続リクエストは拒否されます。フォルダでコンシューマを指定することはできません。

コンシューマーの承認リストと拒否リストでは、プロジェクトまたは VPC ネットワークを指定できますが、両方を同時に指定することはできません。接続を中断することなく、一方のタイプから他方のタイプにリストを変更できますが、変更は 1 回の更新で行う必要があります。そうしないと、一部の接続が一時的に保留状態になる可能性があります。

コンシューマーの承認リストまたは拒否リストを更新すると、接続の調整が有効に設定されているかどうかによって既存の接続への影響が異なります。詳しくは、接続の調整をご覧ください。

コンシューマーの承認リストまたは拒否リストを持つ新しいサービス アタッチメントの作成方法については、明示的なプロジェクト承認を使用してサービスを公開するをご覧ください。

コンシューマーの承認リストまたは拒否リストを更新する方法については、公開サービスへのアクセス リクエストを管理するをご覧ください。

接続制限

コンシューマーの承認リストには、接続上限があります。これらの上限には、サービス アタッチメントが指定されたコンシューマー プロジェクトまたは VPC ネットワークから受け入れることができる接続の合計数を設定します。プロデューサーはこれらの上限を使用して、個々のコンシューマーがプロデューサー VPC ネットワーク内の IP アドレスまたはリソース割り当てを使い切らないようにします。受け入れられた各 Private Service Connect 接続は、コンシューマー プロジェクトまたは VPC ネットワークの構成済み上限から差し引かれます。上限は、コンシューマーの承認リストを作成または更新するときに設定されます。サービス アタッチメントの詳細を取得する際に、サービス アタッチメントの接続を確認できます。

たとえば、サービス アタッチメントに project-1project-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 を使用して、VPC ネットワークまたは組織に接続できるプロジェクトを幅広く制御できます。

このページで説明する組織のポリシーにより、新しい Private Service Connect 接続をブロックまたは拒否できますが、既存の接続には影響しません。

組織のポリシーは、階層評価に従ってそのリソースを参照する子孫に適用されます。たとえば、Google Cloud 組織へのアクセスを制限する組織のポリシーは、組織の子フォルダ、プロジェクト、リソースにも適用されます。同様に、許可された値として組織をリストすると、その組織の子へのアクセスも許可されます。

組織のポリシーの詳細については、組織のポリシーをご覧ください。

コンシューマー側の組織のポリシー

リスト型制約を使用して、エンドポイントとバックエンドのデプロイを制御できます。エンドポイントまたはバックエンドがコンシューマーの組織のポリシーによってブロックされている場合、リソースの作成は失敗します。

  • restrictPrivateServiceConnectProducer リスト型制約を使用して、プロデューサー組織に基づいてエンドポイントとバックエンドが接続できるサービス アタッチメントを制御します。
  • disablePrivateServiceConnectCreationForConsumers リスト型制約を使用して、エンドポイントの接続タイプに基づいてエンドポイントのデプロイを制御します。Google API に接続するエンドポイントのデプロイをブロックできます。または、公開サービスに接続するエンドポイントのデプロイをブロックすることもできます。

エンドポイントまたはバックエンドがプロデューサー組織に接続できないようにする

許可された値を指定して restrictPrivateServiceConnectProducer リスト型制約を使用する組織のポリシーでは、サービス アタッチメントがポリシーで許可されている値のいずれかに関連付けられていない限り、エンドポイントとバックエンドがサービス アタッチメントに接続できないようにブロックされます。このタイプのポリシーは、サービス アタッチメントのコンシューマー承認リストで許可されている場合でも、接続をブロックします。

たとえば、次の組織ポリシーは、Org-A という名前の組織に適用されています。

name: organizations/Org-A/policies/compute.restrictPrivateServiceConnectProducer
spec:
  rules:
    – values:
        allowedValues:
        - under:organizations/ORG_A_NUMBER
        - under:organizations/433637338589

図 2 は、この組織のポリシーの結果を示しています。ポリシーでは、Org-AORG_A_NUMBER)と Google-org433637338589)の値が許可されています。Org-A で作成されたエンドポイントとバックエンドは、Org-A 内のサービス アタッチメントと通信できますが、Org-B のサービス アタッチメントとは通信できません。

図 2.組織のポリシーにより、エンドポイント psc-1 はサービス アタッチメント sa-1 に接続でき、psc-3Org-B のサービス アタッチメントに接続できなくなります。Org-A のエンドポイントとバックエンドは、Google が所有するサービス アタッチメントに接続できます。

compute.restrictPrivateServiceConnectProducer 制約を使用すると、次のタイプのリソースのインスタンスに対してエンドポイントを作成できます。

  • 組織
  • フォルダ
  • プロジェクト

compute.restrictPrivateServiceConnectProducer 制約を使用する組織のポリシーを作成する方法については、エンドポイントとバックエンドが未承認のサービス アタッチメントに接続できないようにするをご覧ください。

接続タイプ別にエンドポイントの作成をブロックする

disablePrivateServiceConnectCreationForConsumers リスト型制約を使用すると、エンドポイントが Google API に接続するのか、公開サービス(サービス アタッチメント)に接続するのかに応じて、エンドポイントの作成をブロックできます。

disablePrivateServiceConnectCreationForConsumers 制約を使用する組織のポリシーを作成する方法については、コンシューマーによる接続タイプごとのエンドポイントのデプロイをブロックするをご覧ください。

プロデューサー側の組織のポリシー

compute.restrictPrivateServiceConnectConsumer リスト型制約付きの組織のポリシーを使用すると、プロデューサー組織またはプロジェクト内で Private Service Connect サービス アタッチメントに接続できるエンドポイントとバックエンドを制御できます。エンドポイントまたはバックエンドがプロデューサーの組織ポリシーによって拒否された場合、リソースは正常に作成されますが、接続は拒否された状態になります。

この方法でのアクセスの制御は、承認リストと拒否リストの使用と似ています。ただし、組織のポリシーは個々のサービス アタッチメントではなく、プロジェクトや組織内のすべてのサービス アタッチメントに適用されます。

組織のポリシーと承認リストは併用できます。組織のポリシーはマネージド サービスへのアクセスを幅広く適用し、承認リストは個々のサービス アタッチメントへのアクセスを制御します。

compute.restrictPrivateServiceConnectConsumer 制約を使用する組織のポリシーは、エンドポイントまたはバックエンドがポリシーで許可されている値のいずれかに関連付けられない限り、エンドポイントとバックエンドからの接続を拒否します。このタイプのポリシーは、許可リストで許可されている場合でも、接続を拒否します。

たとえば、次の組織ポリシーは、Org-A という名前の組織に適用されます。

name: organizations/Org-A/policies/compute.restrictPrivateServiceConnectConsumer
spec:
  rules:
    - values:
        allowedValues:
        - under:organizations/ORG_A_NUMBER

図 3 は、この組織のポリシーの結果を示しています。ポリシーには Org-AORG_A_NUMBER)に許可された値があります。Org-A の他の VPC ネットワーク内のエンドポイントは、Org-A 内のサービス アタッチメントに接続できます。接続を試みる Org-B のエンドポイントは拒否されます。

図 3.組織のポリシーでは、psc-1sa-1 に接続できますが、psc-2 の接続はブロックされます。

組織のポリシーは、階層評価に従ってそのリソースを参照する子孫に適用されます。たとえば、Google Cloud 組織へのアクセスを制限する組織のポリシーは、組織の子フォルダ、プロジェクト、リソースにも適用されます。同様に、許可された値として組織をリストすると、その組織の子へのアクセスも許可されます。

restrictPrivateServiceConnectConsumer 制約を使用すると、次のタイプのリソースのインスタンスに対してエンドポイントを作成できます。

  • 組織
  • フォルダ
  • プロジェクト

サービス プロデューサーで組織のポリシーを使用する方法については、プロデューサーの組織のポリシーをご覧ください。

コンシューマーの承認リストと組織のポリシー間のやり取り

コンシューマーの承認リストと組織のポリシーの両方で、2 つの Private Service Connect リソース間の接続を確立できるかどうかを制御します。承認リストまたは組織のポリシーで接続が拒否される場合、接続はブロックされます。

たとえば、restrictPrivateServiceConnectConsumer 制約のあるポリシーは、プロデューサーの組織外からの接続をブロックするように構成できます。サービス アタッチメントがすべての接続を自動的に受け入れるように構成されていても、組織のポリシーによってプロデューサー組織外からの接続は引き続きブロックされます。階層化されたセキュリティを提供するには、承認リストと組織のポリシーの両方を併用することをおすすめします。

ファイアウォール

VPC ファイアウォール ルールとファイアウォール ポリシーを使用して、ネットワーク レベルで Private Service Connect リソースへのアクセスを制御できます。

VPC ファイアウォール ルールの一般的な詳細については、VPC ファイアウォール ルールをご覧ください。

VPC ファイアウォール ルールを使用してコンシューマー VPC ネットワーク内のエンドポイントまたはバックエンドへのアクセスを制限する方法については、ファイアウォール ルールを使用してエンドポイントまたはバックエンドへのアクセスを制限するをご覧ください。