配置服务连接政策

本页面介绍网络管理员如何配置服务连接政策以自动与代管式服务建立专用连接。

准备工作

所需的角色

如需获得配置网络和创建服务连接政策所需的权限,请让您的管理员为您授予项目的 Compute Network Admin (roles/compute.networkAdmin) IAM 角色。

如需将服务连接政策与共享 VPC 搭配使用,您必须为 Network Connectivity 服务账号授予服务和宿主项目的角色。创建服务连接政策时,系统会自动配置这些服务账号,但您可以手动移除角色。如果您看到有关缺少权限的错误,则 Service Account Admin 可能需要再次授予角色。如需了解详情,请参阅为共享 VPC 配置服务账号

创建服务连接政策

服务连接政策可让您授权指定的服务类,以在提供方 VPC 网络和使用方 VPC 网络之间创建 Private Service Connect 连接。

您最多可以为每个服务类、区域和 VPC 网络组合创建一个政策。政策决定了该特定组合的服务连接自动化。配置政策时,您需要选择子网。子网用于为通过该政策创建的端点分配 IP 地址。如果多个连接政策共享同一区域,您可以在多个连接政策中重复使用同一子网。

例如,如果您要为两个服务在三个不同区域中使用服务连接自动化,请创建六个政策。您至少可以使用三个子网,每个区域一个。

创建服务连接政策后,您只能更新该政策的子网和连接限制。如果您需要更新其他字段,请删除该政策并创建一个新的服务连接政策。

控制台

  1. 在 Google Cloud 控制台中,转到 Private Service Connect 页面。

    前往 Private Service Connect

  2. 点击连接政策标签页。

  3. 点击 Create connection policy(创建连接政策)。

  4. 输入连接政策的名称

  5. 指定服务类。

    • 对于 Google 服务,请执行以下操作:
      1. Source service class(来源服务类)字段中,选择 Google 服务
      2. 服务类菜单中选择相应服务类。
    • 对于第三方服务,请执行以下操作:
      1. Source service class(来源服务类)字段中,选择第三方服务
      2. 服务类字段中,输入服务类名称。
  6. 目标端点范围部分中,选择此政策适用的网络区域

  7. 政策部分中,从子网菜单中选择一个或多个子网。子网用于为端点分配 IP 地址。

  8. 可选:为政策指定连接限制。此限制决定了可以使用此连接政策创建的端点数量。如果省略,则表示无限制。

  9. 点击创建政策

gcloud

使用 service-connection-policies create 命令

gcloud network-connectivity service-connection-policies create POLICY_NAME \
    --network=NETWORK \
    --project=PROJECT_ID \
    --region=REGION \
    --service-class=SERVICE_CLASS \
    --subnets=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETS \
    --psc-connection-limit=LIMIT \
    --description=DESCRIPTION

替换以下内容:

  • POLICY_NAME:您的服务连接政策的名称。
  • NETWORK:要应用此政策的网络。
  • PROJECT_ID:VPC 网络项目的 ID 或编号。对于共享 VPC 网络,服务连接政策必须部署在宿主项目中,在服务项目中不受支持。
  • REGION:要应用此政策的区域。要自动执行服务连接的每个区域中必须存在相同的政策。
  • SERVICE_CLASS:提供方提供的服务类资源标识符。
  • SUBNETS:用于为 Private Service Connect 端点分配 IP 地址的一个或多个常规使用方子网。在创建和删除代管式服务实例时,这些 IP 地址会自动分配并返回子网池。子网必须与服务连接政策位于同一区域。如果多个连接政策共享同一区域,您可以在多个连接政策中重复使用同一子网。您可以在逗号分隔列表中输入多个子网。
  • LIMIT:可以使用此政策创建的端点数量上限。如果未指定,则表示无限制。
  • DESCRIPTION:服务连接政策的可选说明。

例如,以下命令为 gcp-database-service 服务类创建服务连接政策,该政策从 managed-services 子网分配 IP 地址。 使用此政策,您最多可以创建 10 个 Private Service Connect 端点。您必须在与代管式服务实例位于同一组织的项目中创建端点。

gcloud network-connectivity service-connection-policies create gcp-database-cxn-policy \
    --network=default \
    --project=my-project \
    --region=us-central1 \
    --service-class=gcp-database-service \
    --subnets=managed-service-subnet \
    --psc-connection-limit=10

Terraform

您可以使用 Terraform 资源创建服务连接政策。

# Create a VPC network
resource "google_compute_network" "default" {
  name                    = "consumer-network"
  auto_create_subnetworks = false
}

# Create a subnetwork
resource "google_compute_subnetwork" "default" {
  name          = "consumer-subnet"
  ip_cidr_range = "10.0.0.0/16"
  region        = "us-central1"
  network       = google_compute_network.default.id
}

# Create a service connection policy
resource "google_network_connectivity_service_connection_policy" "default" {
  name          = "service-connection-policy"
  location      = "us-central1"
  service_class = "gcp-memorystore-redis"
  network       = google_compute_network.default.id
  psc_config {
    subnetworks = [google_compute_subnetwork.default.id]
    limit       = 2
  }
}

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令

API

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目的 ID。
  • REGION:您的服务连接政策的区域。
  • POLICY_NAME:您的服务连接政策的名称。
  • DESCRIPTION:您的服务连接政策的可选说明。
  • NETWORK:您的服务连接政策的网络。
  • LIMIT:可以使用此政策创建的端点数量上限。如果未指定,则表示无限制。
  • SUBNET:用于为 Private Service Connect 端点分配 IP 地址的一个或多个常规使用方子网。在创建和删除代管式服务实例时,这些 IP 地址会自动分配并返回子网池。子网必须与服务连接政策位于同一区域。如果多个连接政策共享同一区域,则您可以在这些政策中重复使用同一子网。您可以采用英文逗号分隔列表的形式输入多个子网网址。
  • SERVICE_CLASS:提供方提供的服务类资源标识符。

HTTP 方法和网址:

POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies?serviceConnectionPolicyId=POLICY_NAME

请求 JSON 正文:

{
  "description": "DESCRIPTION",
  "network": "projects/PROJECT_ID/global/networks/NETWORK",
  "pscConfig": {
    "limit": "LIMIT",
    "subnetworks": [
      "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
    ]
  },
  "serviceClass": "SERVICE_CLASS"
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "name": "projects/project-id/locations/us-central1/operations/operation-1692118768698-602f91a204523-8c6a2d93-d5c20a6a",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata",
    "createTime": "2023-08-15T16:59:29.236110917Z",
    "target": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-name",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

列出服务连接政策

控制台

  1. 在 Google Cloud 控制台中,转到 Private Service Connect 页面。

    前往 Private Service Connect

  2. 点击连接政策标签页。

  3. 系统会显示连接政策。

gcloud

使用 service-connection-policies list 命令

gcloud network-connectivity service-connection-policies list \
    --region=REGION

REGION 替换为您要列出服务连接政策的区域。

API

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目的 ID。
  • REGION:要在其中列出服务连接政策的区域。

HTTP 方法和网址:

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "serviceConnectionPolicies": [
    {
      "name": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-1",
      "createTime": "2023-08-15T15:33:54.712819865Z",
      "updateTime": "2023-08-15T15:33:54.945630882Z",
      "description": "descriptor",
      "network": "projects/project-id/global/networks/network-two",
      "serviceClass": "service-class",
      "infrastructure": "PSC",
      "pscConfig": {
        "subnetworks": [
          "projects/project-id/regions/us-west1/subnetworks/us-west1-subnet"
        ],
        "limit": "12"
      },
      "etag": "zCqDFBG1dS7B4gNdJKPR98YMUXpSrBIz0tZB_hwOIZI"
    },
    {
      "name": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-2",
      "createTime": "2023-08-15T16:59:29.230257109Z",
      "updateTime": "2023-08-15T16:59:29.508994923Z",
      "description": "descriptor",
      "network": "projects/project-id/global/networks/custom-test",
      "serviceClass": "service-class",
      "infrastructure": "PSC",
      "pscConfig": {
        "subnetworks": [
          "projects/project-id/regions/us-central1/subnetworks/subnet-one"
        ],
        "limit": "25"
      },
      "etag": "nB603i61nRGMZpNjWoWMM6wRzsgM8QN9C9v5QFLyOa8"
    }
  ]
}

描述服务连接政策

控制台

  1. 在 Google Cloud 控制台中,转到 Private Service Connect 页面。

    前往 Private Service Connect

  2. 点击连接政策标签页。

  3. 点击要查看的服务连接政策。

gcloud

使用 service-connection-policies describe 命令

gcloud network-connectivity service-connection-policies describe POLICY_NAME \
    --region=REGION

请替换以下内容:

  • POLICY_NAME:您要描述的服务连接政策的名称。
  • REGION:您要描述的服务连接政策的区域。

API

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目的 ID。
  • REGION:您的服务连接政策的区域。
  • POLICY_NAME:要描述的服务连接政策的名称。

HTTP 方法和网址:

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "name": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-name",
  "createTime": "2023-08-15T16:59:29.230257109Z",
  "updateTime": "2023-08-15T16:59:29.508994923Z",
  "description": "description",
  "network": "projects/project-id/global/networks/custom-test",
  "serviceClass": "gcp-memorystore-redis",
  "infrastructure": "PSC",
  "pscConfig": {
    "subnetworks": [
      "projects/project-id/regions/us-central1/subnetworks/subnet-one"
    ],
    "limit": "25"
  },
  "etag": "nB603i61nRGMZpNjWoWMM6wRzsgM8QN9C9v5QFLyOa8"
}

更新服务连接政策

您可以更新服务连接政策的子网和连接限制。

如果您从服务连接政策中移除子网,则以下情况适用:

  • 现有 Private Service Connect 端点不会受影响。
  • 新端点不使用已移除的子网。

如果您更新服务连接政策的连接限制,则以下情况适用:

  • 现有端点不会受影响。
  • 如果新连接限制小于与政策关联的现有端点数,则服务连接自动化会阻止创建使用此政策的新端点。
  • 如果新连接限制大于与政策关联的现有端点数,则可以创建先前被连接限制阻止的端点。

如果您更新服务连接政策但未指定连接限制,则更新后的政策没有连接限制。

控制台

  1. 在 Google Cloud 控制台中,转到 Private Service Connect 页面。

    前往 Private Service Connect

  2. 点击连接政策标签页。

  3. 点击要修改的服务连接政策。

  4. 点击修改

  5. 如需更新政策的子网,请执行以下操作:

    1. 点击子网,然后选择要与此政策相关联的子网。
    2. 点击确定
  6. 如需更新政策的连接限制,请在连接限制字段中输入新值。

  7. 点击更新政策

gcloud

使用 service-connection-policies update 命令

gcloud network-connectivity service-connection-policies update POLICY_NAME \
    --region=REGION
    --project=PROJECT_ID
    --subnets=SUBNETS
    --psc-connection-limit=LIMIT
  • POLICY_NAME:您的服务连接政策的名称。
  • REGION:服务连接政策的区域。您无法更新政策的区域。
  • PROJECT_ID:政策项目的项目 ID 或编号。
  • SUBNETS:用于为 Private Service Connect 端点分配 IP 地址的一个或多个常规使用方子网。在创建和删除代管式服务实例时,这些 IP 地址会自动分配并返回子网池。子网必须与服务连接政策位于同一区域。如果多个连接政策共享同一区域,您可以在多个连接政策中重复使用同一子网。您可以在逗号分隔列表中输入多个子网。
  • LIMIT:可以使用此政策创建的端点数量上限。如果未指定,则表示无限制。

API

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目的 ID。
  • REGION:您的服务连接政策的区域。您无法更新政策的区域。
  • POLICY_NAME:您的服务连接政策的名称。
  • LIMIT:可以使用此政策创建的端点数量上限。如果未指定,则表示无限制。
  • SUBNET:用于为 Private Service Connect 端点分配 IP 地址的一个或多个常规使用方子网。在创建和删除代管式服务实例时,这些 IP 地址会自动分配并返回子网池。子网必须与服务连接政策位于同一区域。如果多个连接政策共享同一区域,则您可以在这些政策中重复使用同一子网。您可以采用英文逗号分隔列表的形式输入多个子网网址。
  • NETWORK:您的服务连接政策的网络。

HTTP 方法和网址:

PATCH https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME

请求 JSON 正文:

{
  "pscConfig": {
    "limit": "LIMIT",
    "subnetworks": [
      "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
    ]
  },
  "network": "projects/PROJECT_ID/global/networks/NETWORK"
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "name": "projects/project-id/locations/us-central1/operations/operation-1692118768698-602f91a204523-8c6a2d93-d5c20a6a",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata",
    "createTime": "2023-08-15T16:59:29.236110917Z",
    "target": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-name",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

删除服务连接政策

如果您对服务的使用结束或者希望停止自动连接,则可以删除服务连接政策。如果有活跃的 Private Service Connect 连接与政策相关联,则系统会阻止删除政策。在删除服务连接政策之前,请通过停用所有关联的服务实例删除所有活跃连接。

控制台

  1. 在 Google Cloud 控制台中,转到 Private Service Connect 页面。

    前往 Private Service Connect

  2. 点击连接政策标签页。

  3. 选择要删除的服务连接政策,然后点击删除

gcloud

使用 service-connection-policies delete 命令

gcloud network-connectivity service-connection-policies delete POLICY_NAME \
    --region=REGION

请替换以下内容:

  • POLICY_NAME:您要删除的服务连接政策的名称。
  • REGION:您要删除的服务连接政策的区域。

API

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目的 ID。
  • REGION:您的服务连接政策的区域。
  • POLICY_NAME:要删除的服务连接政策的名称。

HTTP 方法和网址:

DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "name": "projects/project-id/locations/us-central1/operations/operation-1692128792549-602fb6f98194a-e0275435-36edc095",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata",
    "createTime": "2023-08-15T19:46:32.605032867Z",
    "target": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-name",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

为共享 VPC 配置服务账号

当您将服务连接政策与共享 VPC 搭配使用时,系统会自动配置服务账号,但您可以手动移除这些角色。如果您看到有关缺少权限的错误,请尝试再次授予角色。

如需授予所需角色,Service Account Admin 可以执行以下操作。

向服务项目中的服务账号授予角色

gcloud

  1. 向服务项目的 Network Connectivity 服务账号授予 Network Connectivity Service Agent 角色 (roles/networkconnectivity.serviceAgent)。授予服务项目的角色。

    gcloud projects add-iam-policy-binding SERVICE_PROJECT_NUMBER \
        --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-networkconnectivity.iam.gserviceaccount.com \
        --role=roles/networkconnectivity.serviceAgent
    

    SERVICE_PROJECT_NUMBER 替换为服务项目的项目编号。

  2. 向服务项目的 Network Connectivity 服务账号授予 Compute Network User 角色 (roles/compute.networkUser)。执行下列其中一项操作。

    • 授予宿主项目中的角色。

      gcloud projects add-iam-policy-binding HOST_PROJECT_NUMBER \
          --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-networkconnectivity.iam.gserviceaccount.com \
          --role=roles/compute.networkUser
      

      HOST_PROJECT_NUMBER 替换为宿主项目的项目编号。

    • 授予宿主项目中与服务连接政策关联的每个子网的角色。对每个子网使用以下命令。

      gcloud compute networks subnets add-iam-policy-binding SUBNET \
          --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-networkconnectivity.iam.gserviceaccount.com \
          --role=roles/compute.networkUser \
          --region=REGION \
          --project=HOST_PROJECT_NUMBER
      

      请替换以下内容:

      • SUBNET:与服务连接政策关联的子网的名称。
      • REGION:子网的区域。

向宿主项目中的服务账号授予角色

gcloud

  1. 向宿主项目的 Network Connectivity 服务账号授予 Network Connectivity Service Agent 角色 (roles/networkconnectivity.serviceAgent)。授予宿主项目的角色。

    gcloud projects add-iam-policy-binding HOST_PROJECT_NUMBER \
        --member=serviceAccount:service-HOST_PROJECT_NUMBER@gcp-sa-networkconnectivity.iam.gserviceaccount.com \
        --role=roles/networkconnectivity.serviceAgent
    

    HOST_PROJECT_NUMBER 替换为宿主项目的项目编号。

后续步骤