配置专用网络访问权限

本页面介绍了如何设置 专用网络访问权限以及如何在 网络内路由 Google Cloud 流量。

如需设置专用网络访问权限,您需要配置三个项目:

  • 一个项目,其中包含目标虚拟机实例 (VM) 或目标内部负载均衡器要使用的虚拟私有云 (VPC) 网络。
  • 一个项目,充当 Service Directory 服务项目。
  • 一个项目,用于配置调用专用网络访问权限的 Google Cloud 产品。Dialogflow CX 就是一个可以使用专用网络访问权限调用端点的产品示例。 Google Cloud

项目的工件可以位于同一项目或不同项目中。

准备工作

在配置专用网络访问权限之前,请完成以下步骤:

  • 对于每个项目,在 Google Cloud 控制台中,点击 API 和 服务 页面上的 启用 API 和服务 ,以启用您要使用的 API,包括 Service Directory API。

  • 如需将 VPC 网络关联到本地主机, 请创建 Cloud VPN 隧道Cloud Interconnect 连接

  • 确保 Google Cloud 项目位于网络项目和 Service Directory 项目的 VPC Service Controls 边界内,适用于 servicedirectory.googleapis.com

    详细了解 VPC Service Controls

为 VPC 网络配置项目

如需为 VPC 网络配置项目,请按以下步骤操作:

  1. 创建 VPC 网络 或选择一个现有 VPC 网络,该网络在您要使用的区域中具有 仅 IPv4 或双堆栈子网。 传统网络不受支持。

  2. 创建必要的入站流量允许防火墙规则。

    • 如果目标是虚拟机或内部直通式网络负载平衡器,防火墙规则必须允许从 35.199.192.0/19 范围到目标虚拟机实例上运行的软件所用端口的 TCP 流量。

    • 如果目标是内部应用负载均衡器或内部代理网络负载均衡器,防火墙规则必须允许从 35.199.192.0/19 范围到负载均衡器所用 IP 地址和端口的 TCP 流量。

    如需详细了解 35.199.192.0/19 范围,请参阅 Cloud DNS 和 Service Directory 的路径

  3. 向将调用端点的产品的服务 代理授予 Identity and Access Management (IAM) Private Service Connect Authorized Service 角色 (roles/servicedirectory.pscAuthorizedService)。 Google Cloud

    如需详细了解角色和权限,请参阅 Service Directory 权限和角色

配置 Service Directory 项目

如需配置 Service Directory 项目,请按以下步骤操作:

  1. 在 VPC 网络中,创建虚拟机内部负载均衡器

  2. 向将调用端点的 Google Cloud 产品的服务代理授予 IAM Service Directory Viewer 角色 (roles/servicedirectory.viewer)。

  3. 创建 Service Directory 命名空间和服务。 然后,按照下一部分中的步骤为此服务创建端点。

创建具有专用网络访问权限的端点

如需创建配置了专用网络访问权限的端点,请按以下步骤操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Service Directory 命名空间 页面。 前往 Service Directory 命名空间
  2. 点击一个命名空间。
  3. 点击一项服务。
  4. 点击添加端点
  5. 对于端点名称,请输入端点的名称。
  6. 对于 IP 地址,请输入 IPv4 地址,例如 192.0.2.0
  7. 对于端口,请输入端口号,例如44380
  8. 如需启用专用网络访问权限,请在关联的 VPC 网络 中选择所需 选项:
    • 如需从可用网络列表中进行选择,请点击从列表中 选择 ,然后选择网络。
    • 如需指定项目和网络,请点击 按项目和网络名称指定,然后输入 项目编号和网络名称。
  9. 点击创建

gcloud

使用 gcloud service-directory endpoints create command,并指定 项目 ID 和网络路径。

gcloud service-directory endpoints create ENDPOINT_NAME \
--project=PROJECT_ID \
--location=REGION \
--namespace=NAMESPACE_NAME \
--service=SERVICE_ID \
--address=IP_ADDRESS \
--port=PORT_NUMBER \
--network=NETWORK_PATH

替换以下内容:

  • ENDPOINT_NAME:您在服务中创建的端点的名称,例如 my-endpoint
  • PROJECT_ID:项目的 ID
  • REGION:包含命名空间的区域 Google Cloud
  • NAMESPACE_NAME:您为命名空间提供的名称,例如 my-namespace
  • SERVICE_ID:服务的 ID
  • IP_ADDRESS:端点的 IP 地址,例如 192.0.2.0
  • PORT_NUMBER:端点运行的端口,通常为 44380
  • NETWORK_PATH:网络的网址,例如 projects/PROJECT_NUMBER/locations/global/networks/NETWORK_NAME

配置 Google Cloud 产品项目

如需配置 Google Cloud 产品项目,请按以下步骤操作:

  1. 启用产品 API。 Google Cloud

  2. 配置产品以调用您创建的 Service Directory 服务。 Google Cloud 所需步骤取决于具体的 Google Cloud 产品。

使用场景

本部分提供了配置专用网络访问权限的使用场景示例。

当 VPC 网络、虚拟机和 Service Directory 位于同一项目中时,调用 HTTP 端点

在此使用场景中,您将 Dialogflow CX(一种用于自然语言处理的 Google Cloud 产品 )设置为调用虚拟机上的 HTTP 端点。在调用端点时,请确保流量不会通过公共互联网传输。

在此使用场景中,您将在同一项目中创建以下工件:

  • VPC 网络
  • 虚拟机
  • Service Directory 服务
  • Dialogflow CX

图 1 显示了如何允许项目的 Google 服务配置出站到虚拟机。虚拟机位于项目的 VPC 网络中。

允许项目的 Google 服务配置出站到网络项目虚拟机。
图 1.允许项目的 Google 服务配置出站到虚拟机(点击可放大)。

设置网络和目标网络

  1. 创建一个项目,例如 myproject
  2. 创建一个 VPC 网络,例如 vpc-1

    创建 VPC 网络时,在子网创建模式中, 选择自动

  3. 创建防火墙规则, 例如 firewall-1

    创建防火墙规则时,输入或选择以下值:

    • 对于网络,选择vpc-1
    • 对于来源 IPv4 范围,输入35.199.192.0/19
    • 对于协议和端口,选择 TCP 并输入 44380
  4. us-central1 区域中,创建 一个虚拟机,例如 vm-1

    创建虚拟机时,输入或选择以下值:

    • 对于 网络 > 网络接口,选择 vpc-1
    • 对于防火墙,选择允许 HTTP 流量

    如果您想使用 HTTPS,请选择允许 HTTPS 流量 。另请确保 您安装了公钥基础架构 (PKI) 传输层 安全协议 (TLS) 证书。

  5. us-central1 区域中,创建一个命名空间,例如 namespace-1

  6. 在该命名空间中,注册 Service Directory 服务,例如 sd-1

  7. sd-1 中创建一个端点。对于端点地址,请使用端口 443vm-1 的内部 IP 地址。如需了解详情,请参阅创建具有专用网络 访问权限的 端点

  8. 向将调用端点的 Google Cloud 产品的服务代理授予以下 IAM 角色:

    • Service Directory Viewer 角色 (roles/servicedirectory.viewer)
    • Private Service Connect Authorized Service 角色 (roles/servicedirectory.pscAuthorizedService)
  9. 可选:如果您想添加更多虚拟机,可以设置另一个虚拟机(例如 vm-2),并添加其端点(例如 endpoint-2)。

设置 Google Cloud 产品

  1. 配置 Google Cloud 产品配置,例如“ Cloud Scheduler,每分钟调用我一次”。
  2. 设置 HTTP 请求。
  3. 指定请求应通过专用网络(例如通过 sd-1)传输。
  4. 可选:配置 Certificate Authority Service 设置

产品现在可以使用 sd-1 调用 HTTP 请求。 Google Cloud

当共享 VPC 网络、虚拟机和 Service Directory 位于不同项目中时,调用 HTTP 端点

在此使用场景中,您将 Dialogflow CX(一种用于自然语言处理的服务)设置为调用虚拟机上的 HTTP 端点。 Google Cloud在调用端点时,请确保流量不会通过公共互联网传输。

在此使用场景中,您将在不同项目中创建以下工件:

  • 共享 VPC 网络
  • 虚拟机
  • Service Directory 服务
  • Dialogflow CX

在创建项目之前,请注意以下事项:

  • 确保 API 调用遵循 VPC Service Controls 边界。
  • 确保 Google Cloud 服务项目的配置 允许出站到位于 VPC 网络 项目中的虚拟机。
  • 生产者项目可能与 Google Cloud 服务 项目不同。
  • 确保使用这两个项目的 VPC Service Controls 边界。
  • Service Directory 项目和网络项目不需要连接,但它们都必须是同一 VPC Service Controls 的一部分。
  • 在网络和服务中,防火墙和 IAM 默认处于停用状态。

图 2 显示了如何在强制执行 VPC Service Controls 边界的情况下,使用专用网络访问权限发送流量。

在强制执行 VPC Service Controls 边界的情况下,使用专用网络访问通道发送流量。
图 2.在强制执行 VPC Service Controls 边界的情况下,使用专用网络访问权限发送流量 (点击可放大)。

配置网络项目

  1. 创建一个项目,例如 my-vpc-project
  2. 创建一个 VPC 网络,例如 vpc-1

    创建 VPC 网络时,对于子网创建模式, 选择自动

  3. 创建防火墙规则, 例如 firewall-1

    创建规则时,输入或选择以下值:

    • 对于网络,选择vpc-1
    • 对于来源 IPv4 范围,输入35.199.192.0/19
    • 对于协议和端口,选择 TCP 并输入 44380
  4. us-central1 区域中,创建 一个虚拟机,例如 vm-1

    创建虚拟机时,输入或选择以下值:

    • 对于 网络 > 网络接口,选择 vpc-1
    • 对于防火墙,选择允许 HTTP 流量

    如果您想使用 HTTPS,请选择允许 HTTPS 流量 。另请确保 您安装了公钥基础架构 (PKI) 传输层 安全协议 (TLS) 证书。

如果您使用的是 VPC Service Controls,VPC Service Controls 边界将允许 Service Directory 连接到服务项目和 Service Directory 项目。 Google Cloud

配置 Service Directory 项目

  1. 创建一个项目,例如 my-sd-project

  2. 由于 VPC 网络项目和 Service Directory 项目是不同的项目,因此您需要额外的 IAM 权限。

    从网络项目向创建 Service Directory 端点的 IAM 主账号授予 Service Directory Network Attacher 角色 (roles/servicedirectory.networkAttacher)。

  3. 创建指向 VPC 网络中虚拟机的 Service Directory 端点:

    1. us-central1 区域中,创建一个命名空间,例如 namespace-1
    2. 在该命名空间中,注册 Service Directory 服务,例如 sd-1
    3. sd-1 中创建一个端点。对于端点地址,请使用端口 443vm-1 的内部 IP 地址。如需了解详情,请参阅创建具有专用网络 访问权限的 端点
  4. 向将调用端点的 Google Cloud 产品的服务代理授予以下 IAM 角色:

    • Service Directory 项目中的 Service Directory Viewer 角色 (roles/servicedirectory.viewer)
    • 网络项目中的 Private Service Connect Authorized Service 角色 (roles/servicedirectory.pscAuthorizedService)

如果您使用的是 VPC Service Controls,VPC Service Controls 边界将允许 Service Directory 连接到服务项目和 Service Directory 项目。 Google Cloud

配置 Google Cloud 服务项目

  1. 为您使用的 Google Cloud 服务启用 API。
  2. 如需配置 Google Cloud 服务 PUSH,请使用 Service Directory 项目中的 Service Directory 服务。

如果您使用的是 VPC Service Controls,VPC Service Controls 边界将允许 Service Directory 连接到网络项目和 Service Directory 项目。

将 Service Directory 专用网络访问权限与 Dialogflow 搭配使用

如需了解如何将 Service Directory 专用网络访问权限 与 Dialogflow 搭配使用,请参阅使用 Service Directory 进行 专用网络访问

后续步骤