公開サービスを管理する

このページでは、公開サービスへのアクセス リクエストを管理する方法、公開サービスの接続設定を変更する方法、接続調整を構成する方法について説明します。

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

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

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

サービス公開の詳細については、サービスを公開するをご覧ください。

ロール

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

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

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

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

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

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

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

コンソール

  1. Google Cloud コンソールで [Private Service Connect] ページに移動します。

    [Private Service Connect] に移動

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

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

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

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 には複数の値を指定できます。VPC プロジェクトまたはネットワークを含めることはできますが、プロジェクトとネットワークの両方を含めることはできません。

    gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --consumer-accept-list=ACCEPTED_PROJECT_OR_NETWORK_1=LIMIT_1,ACCEPTED_PROJECT_OR_NETWORK_2=LIMIT_2 \
        --consumer-reject-list=REJECTED_PROJECT_OR_NETWORK_1,REJECTED_PROJECT_OR_NETWORK_2
    

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

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

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

    • ACCEPTED_PROJECT_OR_NETWORK_1ACCEPTED_PROJECT_OR_NETWORK_2: 受け入れるプロジェクト ID、プロジェクト名、ネットワーク URL。--consumer-accept-list は任意で、1 つ以上のプロジェクトまたはネットワークを含めることができます。両方のタイプを組み合わせることはできません。

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

    • REJECTED_PROJECT_OR_NETWORK_1REJECTED_PROJECT_OR_NETWORK_2: 拒否するプロジェクト ID、プロジェクト名、ネットワーク URI。--consumer-reject-list は任意で、1 つ以上のプロジェクトまたはネットワークを含めることができます。両方のタイプを組み合わせることはできません。

API

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

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

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    
  2. ユーザー プロジェクトまたはネットワークを承認または拒否します。プロジェクトまたは VPC ネットワークごとにコンシューマの許可と拒否を切り替えることができますが、プロジェクトとネットワークの両方を含めることはできません。

    • プロジェクトに基づいてコンシューマを承認または拒否するには、次の PATCH リクエストを送信します。

      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: サービス アタッチメントに割り当てる名前。

      • ACCEPTED_PROJECT_1ACCEPTED_PROJECT_2: 受け入れるプロジェクトのプロジェクト ID または番号。consumerAcceptList は省略可能で、1 つ以上のプロジェクトを指定できます。

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

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

    • VPC ネットワークに基づいてコンシューマを承認または拒否するには、次の PATCH リクエストを送信します。

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
      
      {
        ...
        "consumerAcceptLists": [
          {
            "networkUrl": "projects/ACCEPTED_PROJECT_ID_1/global/network/ACCEPTED_NETWORK_1",
            "connectionLimit": "LIMIT_1"
          },
          {
            "networkUrl": "projects/ACCEPTED_PROJECT_ID_2/global/network/ACCEPTED_NETWORK_2",
            "connectionLimit": "LIMIT_2"
          }
        ],
        "consumerRejectLists": [
          "projects/REJECTED_PROJECT_ID_1/global/networks/REJECTED_NETWORK_1",
          "projects/REJECTED_PROJECT_ID_2/global/network/REJECTED_NETWORK_2"
        ],
        ...
      }
      

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

      • ACCEPTED_PROJECT_ID_1ACCEPTED_PROJECT_ID_2: 承認するネットワークの親プロジェクトの ID。consumerAcceptLists は省略可能で、1 つ以上のネットワークを指定できます。
      • ACCEPTED_NETWORK_1ACCEPTED_NETWORK_2: 承認するネットワークの名前。
      • LIMIT_1LIMIT_2: ネットワークの接続上限。接続上限は、このサービスに接続できるコンシューマ エンドポイントの数になります。承認されたネットワークごとに、接続上限を構成する必要があります。
      • REJECTED_PROJECT_ID_1REJECTED_PROJECT_ID_2: 拒否するネットワークの親プロジェクトの ID。consumerRejectLists は省略可能で、1 つ以上のネットワークを指定できます。
      • REJECTED_NETWORK_1REJECTED_NETWORK_2: 拒否するネットワークの名前。

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

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

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

コンソール

  1. Google Cloud コンソールで [Private Service Connect] ページに移動します。

    [Private Service Connect] に移動

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

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

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

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

    1. [承認済みプロジェクトを追加] をクリックします。
    2. プロジェクト接続上限を入力します。
  6. 省略可: [選択したネットワークの接続を受け入れる] に切り替える場合は、許可するネットワークの詳細を指定するか、後で追加します。

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

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_OR_NETWORK_1=LIMIT_1,ACCEPTED_PROJECT_OR_NETWORK_2=LIMIT_2] \
        [ --consumer-reject-list=REJECTED_PROJECT_OR_NETWORK_1,REJECTED_PROJECT_OR_NETWORK_2 ]
    

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

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

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

    • ACCEPTED_PROJECT_OR_NETWORK_1ACCEPTED_PROJECT_OR_NETWORK_2: 受け入れるプロジェクト ID、プロジェクト名、ネットワーク URL。--consumer-accept-list は任意で、1 つ以上のプロジェクトまたはネットワークを含めることができます。両方のタイプを組み合わせることはできません。

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

    • REJECTED_PROJECT_OR_NETWORK_1REJECTED_PROJECT_OR_NETWORK_2: 拒否するプロジェクト ID、プロジェクト名、ネットワーク URI。--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: サービス アタッチメントに割り当てる名前。

      • ACCEPTED_PROJECT_1ACCEPTED_PROJECT_2: 受け入れるプロジェクトのプロジェクト ID または番号。consumerAcceptList は省略可能で、1 つ以上のプロジェクトを指定できます。

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

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

    • VPC ネットワークに基づいてコンシューマの許可リストと拒否リストを更新するには、次のリクエストを送信します。

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
      
      {
        ...
        "connectionPreference": "ACCEPT_MANUAL",
        "consumerAcceptLists": [
          {
            "networkUrl": "projects/ACCEPTED_PROJECT_ID_1/global/networks/ACCEPTED_NETWORK_1",
            "connectionLimit": "LIMIT_1"
          },
          {
            "networkUrl": "projects/ACCEPTED_PROJECT_ID_2/global/networks/ACCEPTED_NETWORK_2",
            "connectionLimit": "LIMIT_2"
          }
        ],
        "consumerRejectLists": [
          "projects/REJECTED_PROJECT_ID_1/global/networks/REJECTED_NETWORK_1",
          "projects/REJECTED_PROJECT_ID_2/global/network/REJECTED_NETWORK_2"
        ],
        ...
      }
      

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

      • ACCEPTED_PROJECT_ID_1ACCEPTED_PROJECT_ID_2: 承認するネットワークの親プロジェクトの ID。consumerAcceptLists は省略可能で、1 つ以上のネットワークを指定できます。
      • ACCEPTED_NETWORK_1ACCEPTED_NETWORK_2: 承認するネットワークの名前。
      • LIMIT_1LIMIT_2: ネットワークの接続上限。接続上限は、このサービスに接続できるコンシューマ エンドポイントの数になります。承認されたネットワークごとに、接続上限を構成する必要があります。
      • REJECTED_PROJECT_ID_1REJECTED_PROJECT_ID_2: 拒否するネットワークの親プロジェクトの ID。consumerRejectLists は省略可能で、1 つ以上のネットワークを指定できます。
      • REJECTED_NETWORK_1REJECTED_NETWORK_2: 拒否するネットワークの名前。
  • サービス アタッチメントの接続設定を 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: サービス アタッチメントの名前。

接続の調整を構成する

既存のサービス アタッチメントの接続の調整を有効または無効にできます。

コンソール

  1. Google Cloud コンソールで [Private Service Connect] ページに移動します。

    [Private Service Connect] に移動

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

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

  4. [接続調整を有効にする] チェックボックスをオンまたはオフにして、[保存] をクリックします。

gcloud

  • 接続の調整を有効にするには、次のコマンドを使用します。

    gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --reconcile-connections
    

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

    • ATTACHMENT_NAME: サービス アタッチメントの名前。
    • REGION: サービス アタッチメントのリージョン。
  • 接続の調整を無効にするには、次のコマンドを使用します。

    gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --no-reconcile-connections
    

API

  • 接続の調整を有効にするには、以下を含めて PATCH リクエストを送信します。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    
    {
      ...
      "reconcileConnections": true
      ...
    }
    

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

    • PROJECT_ID: サービス アタッチメントのプロジェクト。
    • REGION: サービス アタッチメントのリージョン。
    • ATTACHMENT_NAME: サービス アタッチメントの名前。
  • 接続の調整を無効にするには、以下を含めて PATCH リクエストを送信します。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    
    {
     ...
     "reconcileConnections": false
      ...
    }
    

公開したサービスに対してサブネットの追加または削除を行う

公開サービスを編集して、Private Service Connect サブネットを追加できます。

たとえば、既存のサービスで利用可能な IP アドレスを増やす必要があるとします。アドレスを追加するには、次のいずれかを行います。

同様に、公開サービスを編集して Private Service Connect サブネットを削除できます。ただし、Private Service Connect の SNAT の実行にサブネットの IP アドレスのいずれかが使用されている場合、サブネットの削除は失敗します。

サブネット構成を変更した場合は、新しいサブネットからのリクエストがバックエンド VM に到達できるように、ファイアウォール ルールを更新します。

コンソール

  1. Google Cloud コンソールで [Private Service Connect] ページに移動します。

    [Private Service Connect] に移動

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

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

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

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

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

gcloud

このサービス アタッチメントで使用されている 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 サブネットを更新します。

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 つまたは複数のサブネットを指定できます。