管理已发布的服务

本页面介绍如何管理对已发布服务的访问权限的请求、如何更改已发布服务的连接偏好设置,以及如何配置连接协调。

每个服务连接都有一个连接偏好设置,用于指定是否自动接受连接请求。共有三种处理方式:

  • 自动接受所有连接。服务连接会自动接受来自任何使用方的所有入站连接请求。自动接受可能会被阻止传入连接的组织政策覆盖。
  • 接受选定网络的连接。仅当使用方 VPC 网络在服务连接的使用方接受列表中时,服务连接才会接受入站连接请求。
  • 接受选定项目的连接。仅当使用方项目在服务连接的使用方接受列表中时,服务连接才会接受入站连接请求。

我们建议您接受选定项目或网络的连接。如果您通过其他方式控制使用方访问权限并希望启用对服务的宽松访问权限,则自动接受所有连接可能比较合适。

如需详细了解如何发布服务,请参阅发布服务

角色

以下 IAM 角色提供了执行本指南中的任务所需的权限。

管理对已发布服务的访问请求

如果您已发布了经过明确批准的服务,则可以接受或拒绝来自使用方项目或 VPC 网络的连接请求。

如果您将某个项目或网络同时添加到接受列表和拒绝列表,则来自该项目或网络的连接请求会被拒绝。

为一项服务接受了使用方端点连接后,该端点可以连接到服务,直至此服务连接被删除。无论使用方已明确接受,还是使用方端点在连接偏好设置设置为自动接受连接时已连接,这种情况都适用。

  • 如果您从接受列表中移除了某个项目或网络,则必须先接受该项目中的新使用方端点,然后该端点才能连接。但是,该项目或网络中之前接受的任何使用方端点仍然可以连接到该服务。

  • 如果您将某个项目或网络添加到拒绝列表,则来自该项目或网络中新使用方端点的连接会被拒绝连接到该服务。但是,该项目或网络中之前接受的任何使用方端点仍然可以连接到该服务。

控制台

  1. 在 Google Cloud 控制台中,转到 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 中指定多个值。 您可以添加 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、项目名称或网络网址。--consumer-accept-list 是可选项,可以包含一个或多个项目或网络,但不能同时包含这两种类型。

    • LIMIT_1LIMIT_2:项目或网络的连接限制。连接限制是指可以连接到服务的使用方端点的数量。每个接受的项目或网络都必须配置有一个连接限制。

    • REJECTED_PROJECT_OR_NETWORK_1REJECTED_PROJECT_OR_NETWORK_2:要拒绝的项目 ID、项目名称或网络网址。--consumer-reject-list 是可选项,可以包含一个或多个项目或网络,但不能同时包含这两种类型。

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 是可选项,可以包含一个或多个项目。

      • LIMIT_1LIMIT_2:相应项目的连接限制。连接限制是指可以连接到服务的使用方端点的数量。每个接受的项目都必须配置有一个连接限制。

      • REJECTED_PROJECT_1REJECTED_PROJECT_2:要拒绝的项目的 ID 或编号。consumerRejectList 是可选项,可以包含一个或多个项目。

    • 如需根据 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 是可选项,可以包含一个或多个网络。
      • ACCEPTED_NETWORK_1ACCEPTED_NETWORK_2:您要接受的网络的名称。
      • LIMIT_1LIMIT_2:网络的连接限制。连接限制是指可以连接到服务的使用方端点的数量。每个接受的网络都必须配置有一个连接限制。
      • REJECTED_PROJECT_ID_1REJECTED_PROJECT_ID_2:您要拒绝的网络的父级项目的 ID。 consumerRejectLists 是可选项,可以包含一个或多个网络。
      • 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、项目名称或网络网址。--consumer-accept-list 是可选项,可以包含一个或多个项目或网络,但不能同时包含这两种类型。

    • LIMIT_1LIMIT_2:相应项目的连接限制。连接限制是指可以连接到服务的使用方端点的数量。所接受的项目都必须配置有一个连接限制。

    • REJECTED_PROJECT_OR_NETWORK_1REJECTED_PROJECT_OR_NETWORK_2:要拒绝的项目 ID、项目名称或网络网址。--consumer-reject-list 是可选项,可以包含一个或多个项目或网络,但不能同时包含这两种类型。

  • 将服务连接的连接偏好设置从 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 是可选项,可以包含一个或多个项目。

      • LIMIT_1LIMIT_2:相应项目的连接限制。连接限制是指可以连接到服务的使用方端点的数量。每个接受的项目都必须配置有一个连接限制。

      • REJECTED_PROJECT_1REJECTED_PROJECT_2:要拒绝的项目的 ID 或编号。consumerRejectList 是可选项,可以包含一个或多个项目。

    • 如需根据 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 是可选项,可以包含一个或多个网络。
      • ACCEPTED_NETWORK_1ACCEPTED_NETWORK_2:您要接受的网络的名称。
      • LIMIT_1LIMIT_2:网络的连接限制。连接限制是指可以连接到服务的使用方端点的数量。每个接受的网络都必须配置有一个连接限制。
      • REJECTED_PROJECT_ID_1REJECTED_PROJECT_ID_2:您要拒绝的网络的父级项目的 ID。 consumerRejectLists 是可选项,可以包含一个或多个网络。
      • REJECTED_NETWORK_1REJECTED_NETWORK_2:您要拒绝的网络的名称。
  • 将服务连接的连接偏好设置从 ACCEPT_MANUAL 改为 ACCEPT_AUTOMATIC

    如果 consumerAcceptListsconsumerRejectLists 字段指定了任何使用方,请在将连接偏好设置更改为 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 子网。但是,如果子网的任何 IP 地址正用于执行 Private Service Connect 的 SNAT,则移除子网将失败。

如果您更改了子网配置,请更新防火墙规则以允许来自新子网的请求到达后端虚拟机。

控制台

  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:用于此服务连接的一个或多个子网的英文逗号分隔列表。

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。您可以指定一个或多个子网。