Private Service Connect を使用したサービスの公開

サービス プロデューサーとして Private Service Connect を利用し、VPC ネットワークの内部 IP アドレスを使用してサービスを公開できます。サービス コンシューマは、VPC ネットワークの内部 IP アドレスを使用して、公開サービスにアクセスできます。

サービスを公開するには、次の操作を行います。

  • サービス プロデューサー VPC ネットワークに、内部 TCP / UDP ロードバランサを使用するサービスをホストします。

  • 内部 TCP / UDP ロードバランサと同じリージョンにサービス アタッチメントを作成します。

    共有 VPC を使用する場合は、ホスト プロジェクトで Private Service Connect サブネットを作成し、サービス プロジェクトにサービス アタッチメントを作成できます。

サービスに接続するため、サービス コンシューマが同じリージョンのサービスにアクセスするように Private Service Connect エンドポイントを構成します。

Private Service Connect を使用して Google API とサービスに接続することもできます。

ロール

次の IAM ロールは、このガイドのタスクを行うために必要な権限を備えています。

始める前に

Private Service Connect を使用してサービスを公開するには、内部 TCP / UDP ロードバランサのバックエンドにサービスをホストする必要があります。

サービスをすべてのプロジェクトからアクセスできるようにするか、サービスにアクセスできるプロジェクトを制御するかを決定します。

制限事項

  • それぞれの内部 TCP / UDP ロードバランサは、1 つのサービス アタッチメントでのみ参照できます。同じロードバランサを使用する複数のサービス アタッチメントを構成することはできません。

  • 内部 TCP / UDP ロードバランサのすべての機能がサポートされているわけではありません。ロードバランサで以下のいずれかの機能が使用されている場合、Private Service Connect を使用してサービスを公開することはできません。

    また、サービス アタッチメントが内部プロトコル転送の転送ルールを参照することもできません。

  • Private Service Connect 用に作成するサブネットには次の制約があります。

    • 複数サービスのアタッチメント構成で同じサブネットを使用することができない。

    • Private Service Connect サブネットの IP アドレスをリソースに割り当てることができない。

  • 問題と回避策については、既知の問題をご覧ください。

Private Service Connect 用のサブネットを作成する

Private Service Connect で使用する専用サブネットを 1 つ以上作成する必要があります。Google Cloud Console を使用してサービスを公開する場合、その作業中にサブネットを作成できます。

Private Service Connect サブネットについては、Private Service Connect サブネットをご覧ください。

Console

  1. [VPC ネットワーク] ページに移動します。
    [VPC ネットワーク] に移動
  2. VPC ネットワークの名前をクリックして、[VPC ネットワークの詳細] ページを表示します。
  3. [サブネットを追加] をクリックします。表示されたパネルで、次の操作を行います。
    1. 名前を入力します。
    2. リージョンを選択します。
    3. [目的] セクションで [Private Service Connect] を選択します。
    4. IP アドレス範囲を入力します。
    5. [追加] をクリックします。

gcloud

gcloud compute networks subnets create SUBNET_NAME \
    --network=NETWORK_NAME --region=REGION \
    --range=SUBNET_RANGE --purpose=PRIVATE_SERVICE_CONNECT

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

  • SUBNET_NAME: サブネットに割り当てる名前。

  • NETWORK_NAME: 新しいサブネットの VPC の名前。

  • REGION: 新しいサブネットのリージョン。これは、公開するサービスと同じリージョンにする必要があります。

  • SUBNET_RANGE: サブネットに使用する IP アドレス範囲。例: 10.10.10.0/24

API

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks

{
  "ipCidrRange": "SUBNET_RANGE",
  "name": "SUBNET_NAME",
  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
  "purpose": "PRIVATE_SERVICE_CONNECT",
}

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

  • PROJECT_ID: サブネットのプロジェクト。

  • SUBNET_NAME: サブネットに割り当てる名前。

  • NETWORK_NAME: 新しいサブネットの VPC ネットワークの名前。

  • REGION: 新しいサブネットのリージョン。これは、公開するサービスと同じリージョンにする必要があります。

  • SUBNET_RANGE: サブネットに使用する IP アドレス範囲。例: 10.10.10.0/24

プロジェクトの自動承認を使用してサービスを公開する

以下の手順でサービスを公開し、任意のコンシューマがこのサービスに接続できるように自動的に設定します。コンシューマ接続を明示的に承認する場合は、明示的なプロジェクト承認を使用してサービスを公開するをご覧ください。

サービスを公開するときに、サービス アタッチメントを作成します。サービス コンシューマは、サービス アタッチメントの詳細情報を使用してサービスに接続します。

Console

  1. Google Cloud Console で、[Private Service Connect] ページに移動します。

    [Private Service Connect] に移動

  2. [公開サービス] タブをクリックします。

  3. [サービスを公開] をクリックします。

  4. 公開するサービスに関連付けられた内部ロードバランサを選択します。

    選択した内部ロードバランサの詳細情報が [ネットワーク] フィールドと [リージョン] フィールドに挿入されます。

  5. プロンプトが表示されたら、公開するサービスに関連付けられた転送ルールを選択します。

  6. [サービス名] に、サービス アタッチメントの名前を入力します。

  7. サービスに 1 つ以上のサブネットを選択します。新しいサブネットを追加する場合は、次の方法で作成します。

    1. [新しいサブネットの予約] をクリックします。
    2. サブネットの名前説明(省略可)を入力します。
    3. サブネットのリージョンを選択します。
    4. サブネットに使用する IP 範囲を入力し、[追加] をクリックします。
  8. コンシューマ接続情報を表示するには、[プロキシ プロトコルを使用する] を選択します。詳細については、コンシューマ接続情報の表示をご覧ください。

  9. [すべてのプロジェクトの接続を自動的に受け入れる] を選択します。

  10. [サービスを追加] をクリックします。

gcloud

コンシューマ接続情報を表示するには、オプションの --enable-proxy-protocol フラグを使用します。詳細については、コンシューマ接続情報の表示をご覧ください。

gcloud compute service-attachments create ATTACHMENT_NAME \
    --region=REGION \
    --producer-forwarding-rule=RULE_NAME  \
    --connection-preference=ACCEPT_AUTOMATIC \
    --nat-subnets=PSC_SUBNET_LIST \
    [ --enable-proxy-protocol ]

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

  • ATTACHMENT_NAME: サービス アタッチメントに割り当てる名前。

  • REGION: 新しいサービス アタッチメントのリージョン。これは、公開するサービスと同じリージョンにする必要があります。

  • RULE_NAME: 公開するサービスに関連付けられた転送ルールの名前。

  • PSC_SUBNET_LIST: このサービス アタッチメントで使用する 1 つ以上のサブネットのカンマ区切りリスト。

API

コンシューマ接続情報を表示する場合は、enableProxyProtocol: true を追加します。詳細については、コンシューマ接続情報の表示をご覧ください。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments
{
  "name": "ATTACHMENT_NAME",
  "connectionPreference": "ACCEPT_AUTOMATIC",
  "targetService": "RULE_URI",
  "enableProxyProtocol": false,
  "natSubnets": [
    "PSC_SUBNET_1_URI",
    "PSC_SUBNET_2_URI",
  ],
}

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

  • PROJECT_ID: サービス アタッチメントのプロジェクト。

  • ATTACHMENT_NAME: サービス アタッチメントに割り当てる名前。

  • REGION: 新しいサービス アタッチメントのリージョン。これは、公開するサービスと同じリージョンにする必要があります。

  • RULE_URI: 公開するサービスに関連付けられた転送ルールの名前。

  • PSC_SUBNET_1_URIPSC_SUBNET_2_URI: このサービス アタッチメントに使用するサブネット URI。1 つ以上のサブネットを URI で指定できます。

明示的なプロジェクト承認を使用してサービスを公開する

以下の手順でサービスを公開し、このサービスに接続するコンシューマを明示的に承認する必要があります。コンシューマ接続を自動的に承認する場合は、自動プロジェクト承認を使用してサービスを公開するをご覧ください。

サービスを公開するときに、サービス アタッチメントを作成します。サービス コンシューマは、サービス アタッチメントの詳細情報を使用してサービスに接続します。

プロジェクトを承認リストと拒否リストの両方に追加すると、そのプロジェクトからの接続リクエストは拒否されます。

Console

  1. Google Cloud Console で、[Private Service Connect] ページに移動します。

    [Private Service Connect] に移動

  2. [公開サービス] タブをクリックします。

  3. [サービスを公開] をクリックします。

  4. 公開するサービスに関連付けられた内部ロードバランサを選択します。

    選択した内部ロードバランサの詳細情報が [ネットワーク] フィールドと [リージョン] フィールドに挿入されます。

  5. プロンプトが表示されたら、公開するサービスに関連付けられた転送ルールを選択します。

  6. [サービス名] に、サービス アタッチメントの名前を入力します。

  7. サービスに 1 つ以上のサブネットを選択します。

    新しいサブネットを追加する場合は、次の方法で作成します。

    1. [新しいサブネットの予約] をクリックします。
    2. サブネットの名前説明(省略可)を入力します。
    3. サブネットのリージョンを選択します。
    4. サブネットに使用する IP 範囲を入力し、[追加] をクリックします。
  8. コンシューマ接続情報を表示する場合は、[プロトコル] チェックボックスをオンにします。詳細については、コンシューマ接続情報の表示をご覧ください。

  9. [選択したプロジェクトの接続を受け入れる] を選択します。

  10. [承認済みプロジェクトを追加] をクリックし、このサービスへの接続を許可するプロジェクトの詳細を入力します。

    • プロジェクト名: 接続を許可するプロジェクトの名前。
    • 接続上限: このプロジェクトから許可する接続数。
  11. [サービスを追加] をクリックします。

gcloud

コンシューマ接続情報を表示するには、オプションの --enable-proxy-protocol フラグを使用します。詳細については、コンシューマ接続情報の表示をご覧ください。

gcloud compute service-attachments create ATTACHMENT_NAME \
    --region=REGION \
    --producer-forwarding-rule=RULE_NAME  \
    --connection-preference=ACCEPT_MANUAL \
    --consumer-accept-list=ACCEPTED_PROJECT_1=LIMIT_1,ACCEPTED_PROJECT_2=LIMIT_2 \
    --consumer-reject-list=REJECTED_PROJECT_1,REJECTED_PROJECT_2 \
    --nat-subnets=PSC_SUBNET_LIST \
    [ --enable-proxy-protocol ]

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

  • ATTACHMENT_NAME: サービス アタッチメントに割り当てる名前。

  • REGION: 新しいサービス アタッチメントのリージョン。これは、公開するサービスと同じリージョンにする必要があります。

  • RULE_NAME: 公開するサービスに関連付けられた転送ルールの名前。

  • ACCEPTED_PROJECT_1ACCEPTED_PROJECT_2: 承認するプロジェクト。--consumer-accept-list は省略可能で、1 つ以上のプロジェクトを指定できます。

  • LIMIT_1LIMIT_2: プロジェクトの接続上限。接続上限は、このサービスに接続できるコンシューマ Private Service Connect エンドポイントの数になります。承認されたプロジェクトごとに、接続上限を構成する必要があります。

  • REJECTED_PROJECT_1REJECTED_PROJECT_2: 拒否するプロジェクト。--consumer-reject-list は省略可能で、1 つ以上のプロジェクトを指定できます。

  • PSC_SUBNET_LIST: このサービス アタッチメントで使用する 1 つ以上のサブネットのカンマ区切りリスト。

API

コンシューマ接続情報を表示する場合は、enableProxyProtocol: true を追加します。詳細については、コンシューマ接続情報の表示をご覧ください。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments
{
  "name": "ATTACHMENT_NAME",
  "region": "REGION",
  "connectionPreference": "ACCEPT_MANUAL",
  "targetService": "RULE_URI",
  "enableProxyProtocol": false,
  "natSubnets": [
    "PSC_SUBNET_1_URI",
    "PSC_SUBNET_2_URI",
  ],
  "consumerRejectList": [
    "REJECTED_PROJECT_1",
    "REJECTED_PROJECT_2",
  ],
  "consumerAcceptList": [
    "consumerProjectLimit": {
      "projectId": "ACCEPTED_PROJECT_1",
      "connectionsLimit": "LIMIT_2",
    },
    "consumerProjectLimit": {
      "projectId": "ACCEPTED_PROJECT_2",
      "connectionsLimit": "LIMIT_2",
    },
  ],
}

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

  • PROJECT_ID: サービス アタッチメントのプロジェクト。

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

  • ATTACHMENT_NAME: サービス アタッチメントに割り当てる名前。

  • RULE_URI: 公開するサービスに関連付けられた転送ルールの URI。

  • PSC_SUBNET_1_URIPSC_SUBNET_2_URI: このサービス アタッチメントに使用するサブネット URI。1 つ以上のサブネットを URI で指定できます。

  • REJECTED_PROJECT_1REJECTED_PROJECT_2: 拒否するプロジェクト。consumerRejectList は省略可能で、1 つ以上のプロジェクトを指定できます。

  • ACCEPTED_PROJECT_1ACCEPTED_PROJECT_2: 承認するプロジェクト。consumerAcceptList は省略可能で、1 つ以上のプロジェクトを指定できます。

  • LIMIT_1LIMIT_2: プロジェクトの接続上限。接続上限は、このサービスに接続できるコンシューマ Private Service Connect エンドポイントの数になります。承認されたプロジェクトごとに、接続上限を構成する必要があります。

コンシューマ接続情報の表示

デフォルトでは、Private Service Connect は、コンシューマの送信元 IP アドレスをサービス プロデューサーの VPC ネットワーク内に存在する Private Service Connect サブネットのアドレスに変換します。コンシューマの元の送信元 IP アドレスを確認する場合は、PROXY プロトコルを有効にします。PROXY プロトコルが有効になっている場合は、PROXY プロトコル ヘッダーからコンシューマの送信元 IP アドレスと PSC 接続 ID を取得できます。

PROXY プロキシを有効にする場合は、バックエンド ウェブサーバー ソフトウェアのドキュメントで、クライアント接続 TCP ペイロードで受信する PROXY プロトコル ヘッダーの解析と処理についてご確認ください。サービス アタッチメントで PROXY プロトコルが有効になっていても、バックエンド ウェブサーバーが PROXY プロトコル ヘッダーを処理するように構成されていない場合は、ウェブ リクエストの形式が正しくない可能性があります。リクエストの形式が正しくない場合、サーバーはそのリクエストを解釈できません。

Private Service Connect は、TCP サービスに対してのみ PROXY プロトコルをサポートしています。UDP サービスはサポートされていませんが、UDP サービスで PROXY プロトコルを有効にすることは可能です。

PSC 接続 ID は PROXY プロトコル ヘッダーで Type-Length-Value(TLV)形式でエンコードされます。

フィールド フィールドの長さ フィールド値
1 バイト 0xE0(PP2_TYPE_GCP)
長さ 2 バイト 0x8(8 バイト)
8 バイト ネットワーク順序の 8 バイトの PSC 接続 ID

8 バイトの PSC 接続 ID は、コンシューマ転送ルールまたはプロデューサー サービス アタッチメントで確認できます。PSC 接続 ID は、Private Service Connect 転送ルールの識別に使用されるグローバルに一意の ID です。PSC 接続 ID を使用して、デバッグとパケットの送信元のトレースを行うことができます。

また、プロデューサー サービス アタッチメントから 16 バイトの PSC アタッチメント ID を利用できます。PSC アタッチメント ID は、Private Service Connect サービス アタッチメントを識別するグローバルに一意の ID です。PSC アタッチメント ID は公開設定とデバッグに使用できます。PSC アタッチメント ID は、PROXY プロトコル ヘッダーには含まれていません。

公開サービスへのアクセス リクエストを管理する

明示的にプロジェクトを承認してサービスを公開している場合は、コンシューマ プロジェクトからの接続リクエストを承認または拒否できます。

プロジェクトを承認リストと拒否リストの両方に追加すると、そのプロジェクトからの接続リクエストは拒否されます。

サービスに対してコンシューマ エンドポイントの接続が受け入れられると、エンドポイントは、サービス アタッチメントが削除されるまでサービスに接続できます。これは、プロジェクトが明示的に承認された場合に適用されます。また、接続を自動的に受け入れるように接続設定が行われているときにコンシューマ エンドポイントが接続した場合に適用されます。

  • 承認リストからプロジェクトを削除すると、対象のプロジェクトで以前に承認されたコンシューマ エンドポイントはサービスに接続できます。エンドポイントが接続するには、対象プロジェクトの新しいコンシューマ エンドポイントからの接続を受け入れる必要があります。

  • プロジェクトを拒否リストに追加すると、対象のプロジェクトで以前に承認されたコンシューマ エンドポイントはサービスに接続できます。対象プロジェクトの新しいコンシューマ エンドポイントからの接続は拒否され、サービスに接続できません。

Console

  1. Google Cloud Console で、[Private Service Connect] ページに移動します。

    [Private Service Connect] に移動

  2. [公開サービス] タブをクリックします。

  3. 管理するサービスをクリックします。

  4. [接続済みプロジェクト] セクションに、このサービスに接続しようとしたプロジェクトが表示されます。プロジェクトの横にあるチェックボックスをオンにして、[承認] または [拒否] をクリックします。

gcloud

  1. 変更するサービス アタッチメントを記述します。

    gcloud compute service-attachments describe \
        ATTACHMENT_NAME --region=REGION
    

    出力は次のようになります。保留中のコンシューマ接続がある場合は、ステータス PENDING とともに表示されます。

    この出力例では、プロジェクト CONSUMER_PROJECT_1 が承認リストに含まれているため、ENDPOINT_1 が承認され、サービスに接続できます。プロジェクト CONSUMER_PROJECT_2 は承認リストに含まれていないため、ENDPOINT_2 は保留中です。CONSUMER_PROJECT_2 が受け入れリストに追加されると、ENDPOINT_2 のステータスが ACCEPTED に変わり、エンドポイントがサービスに接続できるようになります。

    connectedEndpoints:
    - endpoint: https://www.googleapis.com/compute/v1/projects/CONSUMER_PROJECT_1/regions/REGION_1/forwardingRules/ENDPOINT_1
      pscConnectionId: 'ENDPOINT_1_ID'
      status: ACCEPTED
    - endpoint: https://www.googleapis.com/compute/v1/projects/CONSUMER_PROJECT_2/regions/REGION_2/forwardingRules/ENDPOINT_2
      pscConnectionId: 'ENDPOINT_2_ID'
      status: PENDING
    connectionPreference: ACCEPT_MANUAL
    consumerAcceptLists:
    - connectionLimit: LIMIT_1
      projectIdOrNum: CONSUMER_PROJECT_1
    creationTimestamp: 'TIMESTAMP'
    description: 'DESCRIPTION'
    enableProxyProtocol: false
    fingerprint: FINGERPRINT
    id: 'ID'
    kind: compute#serviceAttachment
    name: NAME
    natSubnets:
    - https://www.googleapis.com/compute/v1/projects/PRODUCER_PROJECT/regions/REGION/subnetworks/PSC_SUBNET
    pscServiceAttachmentId:
      high: 'PSC_ATTACH_ID_HIGH'
      low: 'PSC_ATTACH_ID_LOW'
    region: https://www.googleapis.com/compute/v1/projects/PRODUCER_PROJECT/regions/REGION
    selfLink: https://www.googleapis.com/compute/v1/projects/projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    targetService: https://www.googleapis.com/compute/v1/projects/PRODUCER_PROJECT/regions/REGION/forwardingRules/PRODUCER_FWD_RULE
    
  2. コンシューマ プロジェクトを承認または拒否します。

    --consumer-accept-list--consumer-reject-list のいずれか、または両方を指定できます。--consumer-accept-list--consumer-reject-list には複数の値を指定できます。

    gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --consumer-accept-list=ACCEPTED_PROJECT_1=LIMIT_1,ACCEPTED_PROJECT_2=LIMIT_2 \
        --consumer-reject-list=REJECTED_PROJECT_1,REJECTED_PROJECT_2
    

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

    • ATTACHMENT_NAME: サービス アタッチメントに割り当てる名前。

    • REGION: サービス アタッチメントが配置されているリージョン。

    • ACCEPTED_PROJECT_1ACCEPTED_PROJECT_2: 承認するプロジェクト。consumerAcceptList は省略可能で、1 つ以上のプロジェクトを指定できます。

    • LIMIT_1LIMIT_2: プロジェクトの接続上限。接続上限は、このサービスに接続できるコンシューマ Private Service Connect エンドポイントの数になります。承認されたプロジェクトごとに、接続上限を構成する必要があります。

    • REJECTED_PROJECT_1REJECTED_PROJECT_2: 拒否するプロジェクト。--consumer-reject-list は省略可能で、1 つ以上のプロジェクトを指定できます。

API

  1. 変更するサービス アタッチメントを記述します。

保留中のコンシューマ接続がある場合は、ステータス PENDING とともに表示されます。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
  1. コンシューマ プロジェクトを承認または拒否します。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME

{
  ...
  "consumerAcceptLists": [
    {
      "projectIdOrNum": "ACCEPTED_PROJECT_1"
      "connectionLimit": "LIMIT_1",
    },
    {
      "projectIdOrNum": "ACCEPTED_PROJECT_2"
      "connectionLimit": "LIMIT_2",
    }
  ],
  "consumerRejectLists": [
    "REJECTED_PROJECT_1",
    "REJECTED_PROJECT_2",
  ],
  ...
}

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

  • PROJECT_ID: サービス アタッチメントのプロジェクト。

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

  • ATTACHMENT_NAME: サービス アタッチメントに割り当てる名前。

  • REJECTED_PROJECT_1REJECTED_PROJECT_2: 拒否するプロジェクト。consumerRejectList は省略可能で、1 つ以上のプロジェクトを指定できます。

  • ACCEPTED_PROJECT_1ACCEPTED_PROJECT_2: 承認するプロジェクト。consumerAcceptList は省略可能で、1 つ以上のプロジェクトを指定できます。

  • LIMIT_1LIMIT_2: プロジェクトの接続上限。接続上限は、このサービスに接続できるコンシューマ Private Service Connect エンドポイントの数になります。承認されたプロジェクトごとに、接続上限を構成する必要があります。

公開サービスの接続設定を変更する

公開サービスでは、プロジェクトの自動承認と明示的な承認を切り替えることができます。

自動承認から明示的な承認に変更しても、変更前にサービスに接続していたコンシューマ エンドポイントに影響はありません。既存のコンシューマ エンドポイントは、サービス アタッチメントが削除されるまで、公開サービスに接続できます。新しいコンシューマ エンドポイントがサービスに接続するには、事前に承認を受ける必要があります。詳細については、公開サービスへのアクセス リクエストを管理するをご覧ください。

Console

  1. Google Cloud Console で、[Private Service Connect] ページに移動します。

    [Private Service Connect] に移動

  2. [公開サービス] タブをクリックします。

  3. 更新するサービスをクリックし、[編集] をクリックします。

  4. 必要な接続設定を選択します。

    • 選択したプロジェクトの接続を受け入れる
    • すべてのプロジェクトの接続を自動的に受け入れる
  5. [選択したプロジェクトの接続を受け入れる] に切り替える場合は、許可するプロジェクトの詳細を指定するか、後で追加します。

    1. [承認済みプロジェクトを追加] をクリックします。
    2. プロジェクト接続上限を入力します。
  6. [保存] をクリックします。

gcloud

  • サービス アタッチメントの接続設定を ACCEPT_AUTOMATIC から ACCEPT_MANUAL に変更します。

    サービスに接続できるプロジェクトは、--consumer-accept-list--consumer-reject-list で制御します。承認リストと拒否リストは、接続設定の変更時に構成することも、後でリストを更新することもできます。

    gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --connection-preference=ACCEPT_MANUAL \
        [ --consumer-accept-list=ACCEPTED_PROJECT_1=LIMIT_1,ACCEPTED_PROJECT_2=LIMIT_2] \
        [ --consumer-reject-list=REJECTED_PROJECT_1,REJECTED_PROJECT_2 ]
    
    • ATTACHMENT_NAME: サービス アタッチメントの名前。

    • REGION: サービス アタッチメントが配置されているリージョン。

    • ACCEPTED_PROJECT_1ACCEPTED_PROJECT_2: 承認するプロジェクト。--consumer-accept-list は省略可能で、1 つ以上のプロジェクトを指定できます。

    • LIMIT_1LIMIT_2: プロジェクトの接続上限。接続上限は、このサービスに接続できるコンシューマ Private Service Connect エンドポイントの数になります。承認されたプロジェクトごとに、接続上限を構成する必要があります。

    • REJECTED_PROJECT_1REJECTED_PROJECT_2: 拒否するプロジェクト。--consumer-reject-list は省略可能で、1 つ以上のプロジェクトを指定できます。

  • サービス アタッチメントの接続設定を ACCEPT_MANUAL から ACCEPT_AUTOMATIC に変更します。

    承認リストまたは拒否リストに値がある場合は、接続設定("")の変更時に値を空に設定します。

    gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --connection-preference=ACCEPT_AUTOMATIC \
         --consumer-accept-list="" \
         --consumer-reject-list=""
    
    • ATTACHMENT_NAME: サービス アタッチメントの名前。

    • REGION: サービス アタッチメントが配置されているリージョン。

API

  • サービス アタッチメントの接続設定を ACCEPT_AUTOMATIC から ACCEPT_MANUAL に変更します。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME

{
  ...
  "connectionPreference": "ACCEPT_MANUAL",
  "consumerAcceptLists": [
    {
      "projectIdOrNum": "ACCEPTED_PROJECT_1"
      "connectionLimit": "LIMIT_1",
    },
    {
      "projectIdOrNum": "ACCEPTED_PROJECT_2"
      "connectionLimit": "LIMIT_2",
    }
  ],
  "consumerRejectLists": [
    "REJECTED_PROJECT_1",
    "REJECTED_PROJECT_2",
  ],
  ...
}

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

  • PROJECT_ID: サービス アタッチメントのプロジェクト。

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

  • ATTACHMENT_NAME: サービス アタッチメントに割り当てる名前。

  • REJECTED_PROJECT_1REJECTED_PROJECT_2: 拒否するプロジェクト。consumerRejectList は省略可能で、1 つ以上のプロジェクトを指定できます。

  • ACCEPTED_PROJECT_1ACCEPTED_PROJECT_2: 承認するプロジェクト。consumerAcceptList は省略可能で、1 つ以上のプロジェクトを指定できます。

  • LIMIT_1LIMIT_2: プロジェクトの接続上限。接続上限は、このサービスに接続できるコンシューマ Private Service Connect エンドポイントの数になります。承認されたプロジェクトごとに、接続上限を構成する必要があります。

  • サービス アタッチメントの接続設定を ACCEPT_MANUAL から ACCEPT_AUTOMATIC に変更します。

    consumerAcceptLists フィールドまたは consumerRejectLists フィールドにプロジェクトが指定されている場合は、接続設定を ACCEPT_AUTOMATIC に変更するときに、プロジェクトを空に設定します。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME

{
  ...
  "connectionPreference": "ACCEPT_AUTOMATIC",
  "consumerAcceptLists": [ ],
  "consumerRejectLists": [ ],
  ...
}

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

  • PROJECT_ID: サービス アタッチメントのプロジェクト。

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

  • ATTACHMENT_NAME: サービス アタッチメントの名前。

サービスに関連付けられたサブネットの変更

公開サービスで使用される Private Service Connect サブネットを変更できます。

Console

  1. Google Cloud Console で、[Private Service Connect] ページに移動します。

    [Private Service Connect] に移動

  2. [公開サービス] タブをクリックします。

  3. 更新するサービスをクリックし、[編集] をクリックします。

  4. このサービスに使用するサブネットを変更します。

    新しいサブネットを追加する場合は、次の方法で作成します。

    1. [新しいサブネットの予約] をクリックします。
    2. サブネットの名前説明(省略可)を入力します。
    3. サブネットのリージョンを選択します。
    4. サブネットに使用する IP 範囲を入力し、[追加] をクリックします。
  5. [保存] をクリックします。

gcloud

このサービス アタッチメントで使用されている Private Service Connect サブネットを更新します。新しいサブネットを作成する必要がある場合は、Private Service Connect サブネットの作成をご覧ください。

gcloud compute service-attachments update ATTACHMENT_NAME \
    --region=REGION \
    --nat-subnets=PSC_SUBNET_LIST

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

  • ATTACHMENT_NAME: サービス アタッチメントの名前。

  • REGION: サービス アタッチメントが配置されているリージョン。

  • PSC_SUBNET_LIST: このサービス アタッチメントで使用する 1 つ以上のサブネットのカンマ区切りリスト。

API

このサービス アタッチメントで使用されている Private Service Connect サブネットを更新します。新しいサブネットを作成する必要がある場合は、Private Service Connect サブネットの作成をご覧ください。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME

{
  ...
  "natSubnets": [
    "PSC_SUBNET1_URI",
    "PSC_SUBNET2_URI",
  ],
  ...
}

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

  • PROJECT_ID: サービス アタッチメントのプロジェクト。

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

  • ATTACHMENT_NAME: サービス アタッチメントに割り当てる名前。

  • PSC_SUBNET1_URIPSC_SUBNET2_URI: このサービス アタッチメントで使用するサブネットの URI。1 つまたは複数のサブネットを指定できます。

公開サービスのリストを表示する

すべてのサービスのリストを表示できます。

Console

  1. Google Cloud Console で、[Private Service Connect] ページに移動します。

    [Private Service Connect] に移動

  2. [公開サービス] タブをクリックします。

    Private Service Connect サービスのアタッチメントが表示されます。

gcloud

  1. サービス アタッチメントのリストを表示します。

    gcloud compute service-attachments list [--regions=REGION_LIST]
    

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

    • REGION_LIST: サービス アタッチメントを表示する 1 つ以上のリージョンのカンマ区切りリスト。たとえば、us-central1us-west1,us-central1 です。

API

特定のリージョンまたはすべてのリージョンに存在するすべてのサービス アタッチメントを表示できます。

  • リージョン内のすべてのサービス アタッチメントを表示するには:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments
    
  • すべてのリージョンのすべてのサービス アタッチメントを表示するには:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/serviceAttachments
    

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

    • PROJECT_ID: サービス アタッチメントのプロジェクト。

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

    • ATTACHMENT_NAME: サービス アタッチメントの名前。

公開サービスの詳細を表示する

公開サービスの構成の詳細をすべて表示できます。この詳細には、サービス コンシューマがサービスに接続するために必要なサービス アタッチメント URI が含まれています。

Console

公開サービスの詳細を表示できます。[サービス アタッチメント] フィールドには、サービス アタッチメントの URI が含まれています。

  1. Google Cloud Console で、[Private Service Connect] ページに移動します。

    [Private Service Connect] に移動

  2. [公開サービス] タブをクリックします。

  3. 表示するサービスをクリックします。

gcloud

公開サービスの詳細を表示できます。selfLink フィールドには、サービス アタッチメント URI が含まれます。

gcloud compute service-attachments describe \
    ATTACHMENT_NAME --region=REGION

API

公開サービスの詳細を表示できます。selfLink フィールドには、サービス アタッチメント URI が含まれます。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME

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

  • PROJECT_ID: サービス アタッチメントのプロジェクト。

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

  • ATTACHMENT_NAME: サービス アタッチメントの名前。

公開サービスを削除する

公開サービスは、サービス アタッチメントとのコンシューマ接続が存在する場合でも削除できます。公開サービスを削除すると、サービス アタッチメントのみが削除されます。内部 TCP / UDP ロードバランサは削除されません。

Console

  1. Google Cloud Console で、[Private Service Connect] ページに移動します。

    [Private Service Connect] に移動

  2. [公開サービス] タブをクリックします。

  3. 削除するサービスをクリックします。

  4. [削除] をクリックします。

gcloud

gcloud compute service-attachments delete \
    ATTACHMENT_NAME --region=REGION

API

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME

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

  • PROJECT_ID: サービス アタッチメントのプロジェクト。

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

  • ATTACHMENT_NAME: サービス アタッチメントの名前。

ロギング

バックエンド VM を含むサブネットで VPC フローログを有効にできます。このログには、Private Service Connect のサブネット内のバックエンド VM と IP アドレスの間のフローが記録されます。

既知の問題

  • PATCH API を使用してサービス アタッチメントを更新する場合は、更新するフィールドだけでなく、サービス アタッチメントのすべてのフィールドをリクエストの本文に指定する必要があります。すべてのフィールドを取得するには、serviceAttachments.get を使用します。

  • エンドポイントが削除されても、接続している Private Service Connect エンドポイントの数は調整されません。接続エンドポイントの数がこの上限に達していなくても、接続できない場合があります。この問題を回避するには、gcloud ツールまたは API を使用して、関連するプロジェクトを承諾リストから削除してから、プロジェクトを承認リストに追加し直します。

  • サービス アタッチメントの作成後に PROXY プロトコルを無効または有効にした場合、構成は変更されません。ただし、サービス アタッチメントの詳細に表示されるステータスを見ると、ステータスが変更されたことを確認できます。PROXY プロトコルを有効または無効にするには、サービス アタッチメントを削除し、正しい PROXY プロトコル構成で再作成します。