将 Secure Web Proxy 发布为 Private Service Connect 服务

如需集中管理多个 VPC 网络中的 Secure Web Proxy 部署,您可以通过 Private Service Connect 服务连接提供 Secure Web Proxy。

使用 Private Service Connect 部署 Secure Web Proxy 涉及以下步骤:

  1. 创建安全 Web 代理 政策规则
  2. 创建使用您的政策的 Secure Web Proxy 实例。
  3. 创建服务连接,以将 Secure Web Proxy 实例发布为 Private Service Connect 服务。
  4. 在需要连接到 Secure Web Proxy 的每个 VPC 网络中创建 Private Service Connect 使用方端点。
  5. 将工作负载的出站流量指向区域内的集中式 Secure Web Proxy 实例。
以 Private Service Connect 服务连接模式部署 Secure Web Proxy。
将 Secure Web Proxy 发布为 Private Service Connect 服务,可让您集中管理多个 VPC 网络中工作负载的出站流量。(点击可放大)。

准备工作

在完成本页面中的步骤之前,请先完成 初始设置步骤

创建和配置 Secure Web Proxy 实例

本指南介绍了如何创建 Secure Web Proxy 政策和规则,以按会话匹配流量。

如需了解如何选择性地配置 TLS 检查,请参阅 启用 TLS 检查

如需了解如何选择性地配置应用级匹配, 请参阅 创建和部署 Secure Web Proxy 实例

创建 Secure Web Proxy 政策

控制台

  1. 在 Google Cloud 控制台中,前往 SWP 政策 页面。

    前往 SWP 政策

  2. 点击 创建政策

  3. 输入要创建的政策的名称,例如 myswppolicy

  4. 输入政策的说明。

  5. 区域 列表中,选择要在其中创建 Web 代理政策的区域。

  6. 点击创建

Cloud Shell

  1. 创建 policy.yaml 文件。

    description: basic Secure Web Proxy policy
    name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/policy1
    

    请替换以下内容:

    • PROJECT_ID:您的项目 ID
    • REGION:政策的区域
  2. 根据 policy.yaml 创建 Secure Web Proxy 政策。

    gcloud network-security gateway-security-policies import policy1 \
        --source=policy.yaml \
        --location=REGION
    

向政策添加 Secure Web Proxy 规则

配置 Secure Web Proxy 规则,以允许来自每个工作负载的出站流量。

本部分介绍了如何创建规则,以允许来自通过 Resource Manager 标记或服务帐号标识的工作负载的流量。如需了解如何以 其他方式匹配流量,请参阅 CEL 匹配器语言参考文档

控制台

  1. 在 Google Cloud 控制台中,前往 SWP 政策 页面。

    前往 SWP 政策

  2. 点击您的政策名称。

  3. 如需添加规则以允许工作负载访问互联网,请执行以下操作:

    1. 点击 添加规则
    2. 输入优先级。系统会按从高到低的优先级评估规则,其中 0 是最高优先级。
    3. 输入名称。
    4. 请输入说明
    5. 输入状态。
    6. 对于操作 ,请选择允许
    7. 点击状态 ,然后选择已启用
    8. 会话匹配 部分中,指定 用于匹配会话的条件

      • 例如,如需允许来自 Resource Manager 标记值 ID 为 tagValues/123456 的工作负载的流量访问 google.com,请输入以下内容:

        source.matchTag('tagValues/123456') && host() == 'google.com'

      • 如需允许来自使用服务帐号 my-service-account@my-project.iam.gserviceaccount.com 的工作负载的流量访问 google.com,请输入以下内容:

        source.matchServiceAccount('my-service-account@my-project.iam.gserviceaccount.com') && host() == 'google.com'

    9. 点击创建

Cloud Shell

对于要添加的每条规则,请执行以下操作:

  1. 创建 rule.yaml 文件,并指定 用于匹配会话的条件

    • 如需允许来自通过 Resource Manager 标记值 ID 标识的工作负载的流量访问特定网域,请创建以下文件:

      name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/policy1/rules/RULE_NAME
      description: Allow traffic based on tag
      enabled: true
      priority: PRIORITY
      basicProfile: ALLOW
      sessionMatcher: source.matchTag('TAG_VALUE_ID') && host() == 'DOMAIN_NAME'
      

      请替换以下内容:

      • PROJECT_ID:您的项目 ID
      • REGION:政策的区域
      • RULE_NAME:规则的名称
      • PRIORITY:规则的优先级 - 系统会按从高到低的优先级评估规则,其中 0 是最高优先级
      • TAG_VALUE_ID:要允许流量的工作负载的标记值 ID
      • DOMAIN_NAME:要允许流量访问的网域名称
    • 如需允许来自使用服务帐号的工作负载的流量访问特定网域,请创建以下文件:

      name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/policy1/rules/RULE_NAME
      description: Allow traffic based on service account
      enabled: true
      priority: PRIORITY
      basicProfile: ALLOW
      sessionMatcher: source.matchServiceAccount('SERVICE_ACCOUNT') && host() == 'DOMAIN_NAME'
      

      SERVICE_ACCOUNT 替换为服务帐号的名称。

  2. 如需使用在 rule.yaml 中定义的规则更新政策,请使用以下命令:

    gcloud network-security gateway-security-policies rules import RULE_NAME \
       --source=rule.yaml \
       --location=REGION \
       --gateway-security-policy=policy1
    

部署 Secure Web Proxy 实例

在要用于出站流量的 Virtual Private Cloud (VPC) 网络中以显式路由模式部署 Secure Web Proxy 实例。创建实例时,请将其与您在之前的步骤中创建的政策和规则相关联。

使用 Private Service Connect 服务连接发布 Secure Web Proxy 不支持下一个跃点路由模式。

如需了解如何配置实例,请参阅 设置 Web 代理。您暂时无需完成该页面上的其他步骤。

在 hub 和 spoke 模型中将 Secure Web Proxy 部署为 Private Service Connect 服务

本部分介绍了如何使用 hub 和 spoke 模型将 Secure Web Proxy 部署为 Private Service Connect 服务,以集中管理出站流量。

将 Secure Web Proxy 发布为 Private Service Connect 服务

如需将 Secure Web Proxy 发布为服务,请创建 Private Service Connect 子网和服务连接。子网和服务连接必须与访问服务连接的 Private Service Connect 端点共享同一区域。

为 Private Service Connect 创建子网

如需为 Private Service Connect 创建子网,请执行以下操作。

控制台

  1. 在 Google Cloud 控制台中,前往 VPC 网络页面。

    进入 VPC 网络页面

  2. 点击某个 VPC 网络的名称以显示其 VPC 网络详情页面。

  3. 点击子网

  4. 点击添加子网。在显示的面板中,执行以下操作:

    1. 提供名称
    2. 选择区域
    3. 用途 部分中,选择 Private Service Connect
    4. 对于 IP 堆栈类型 ,选择 IPv4(单堆栈)IPv4 和 IPv6(双堆栈)
    5. 输入 IPv4 范围 。例如 10.10.10.0/24
    6. 如果您要创建双栈子网,请将 IPv6 访问类型设置为内部
    7. 点击 Add (添加)。

Cloud Shell

执行下列其中一项操作:

  • 如需创建仅 IPv4 的 Private Service Connect 子网,请执行以下操作:

    gcloud compute networks subnets create SUBNET_NAME \
        --network=NETWORK_NAME \
        --region=REGION \
        --range=SUBNET_RANGE \
        --purpose=PRIVATE_SERVICE_CONNECT
    
  • 如需创建双栈 Private Service Connect 子网,请执行以下操作:

    gcloud compute networks subnets create SUBNET_NAME \
        --network=NETWORK_NAME \
        --region=REGION \
        --stack-type=IPV4_IPV6 \
        --ipv6-access-type=INTERNAL \
        --range=SUBNET_RANGE \
        --purpose=PRIVATE_SERVICE_CONNECT
    

替换以下内容:

  • SUBNET_NAME:要分配给子网的名称。

  • NETWORK_NAME:用于新子网的 VPC 的名称。

  • REGION:新子网的区域。此区域必须与您要发布服务的区域相同。

  • SUBNET_RANGE:要用于子网的 IPv4 地址范围,例如 10.10.10.0/24

创建服务连接

如需将 Secure Web Proxy 作为服务连接发布到中央 (hub) VPC 网络中,请执行以下操作。

本部分介绍了如何创建自动接受所有连接的服务连接。如需了解显式批准或其他 配置选项,请参阅 发布经过明确批准的服务

控制台

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

    转到 Private Service Connect

  2. 点击已发布服务标签页。

  3. 点击发布服务

  4. 目标详情 部分中,选择 Secure Web Proxy

  5. 选择要发布的 Secure Web Proxy 实例。“网络”和“区域”字段会填充所选 Secure Web Proxy 实例的 详细信息。

  6. 对于服务名称,输入服务连接的名称。

  7. 为服务选择一个或多个 Private Service Connect 子网。相关列表会填充来自所选 Secure Web Proxy 实例的 VPC 网络的子网。

  8. 连接偏好设置 部分中,选择 Automatically accept all connections (自动接受所有连接)。

  9. 点击添加服务

Cloud Shell

使用 gcloud compute service-attachments create 命令

gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME \
    --target-service=SWP_INSTANCE_URI \
    --connection-preference=ACCEPT_AUTOMATIC \
    --nat-subnets=NAT_SUBNET_NAME \
    --region=REGION \
    --project=PROJECT \

请替换以下内容:

  • SERVICE_ATTACHMENT_NAME:服务连接的名称
  • SWP_INSTANCE_URI:Secure Web Proxy 实例的 URI,格式如下: //networkservices.googleapis.com/projects/PROJECT_ID/locations/REGION/gateways/INSTANCE_NAME
  • NAT_SUBNET_NAME:Private Service Connect 子网的名称
  • REGION:安全 Web 代理部署的区域
  • PROJECT:Secure Web Proxy 部署的项目

创建端点

在需要通过集中式 Secure Web Proxy 实例发送出站流量的每个 VPC 网络和区域中创建一个端点。针对需要创建的每个端点重复以下步骤。

控制台

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

    转到 Private Service Connect

  2. 点击已连接的端点标签页。

  3. 点击连接端点

  4. 对于目标 ,选择已发布的服务

  5. 对于目标服务,输入要 连接到的服务连接 URI。

    服务连接 URI 的格式为: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

  6. 对于端点名称,输入要用于端点的名称。

  7. 为端点选择网络

  8. 为端点选择子网

  9. 为端点选择 IP 地址。如果您需要新的 IP 地址,可以创建一个:

    1. 点击 IP 地址 下拉菜单,然后选择创建 IP 地址
    2. 为 IP 地址输入名称 和可选的说明
    3. 选择 IP 版本
    4. 如果您要创建 IPv4 地址,请选择自动分配让我选择

      如果您选择了让我选择,请输入您要使用的自定义 IP 地址

    5. 点击预留

  10. 点击添加端点

Cloud Shell

  1. 预留要分配给该端点的内部 IP 地址。

    gcloud compute addresses create ADDRESS_NAME \
        --region=REGION \
        --subnet=SUBNET \
        --ip-version=IP_VERSION
    

    请替换以下内容:

    • ADDRESS_NAME:分配给预留 IP 地址的名称。

    • REGION:端点 IP 地址所在的区域。此区域必须与服务提供方的服务连接所在区域相同。

    • SUBNET:端点 IP 地址的子网名称。

    • IP_VERSION:IP 地址的 IP 版本,可以是 IPV4IPV6。默认为 IPV4。如需指定 IPV6,IP 地址必须连接到具有内部 IPv6 地址范围的 子网

  2. 创建转发规则,以将该端点连接到服务提供方的服务连接。

    gcloud compute forwarding-rules create ENDPOINT_NAME \
       --region=REGION \
       --network=NETWORK_NAME \
       --address=ADDRESS_NAME \
       --target-service-attachment=SERVICE_ATTACHMENT
    

    请替换以下内容:

    • ENDPOINT_NAME:分配给端点的名称。

    • REGION:端点所在区域。此区域必须与服务提供方的服务连接所在区域相同。

    • NETWORK_NAME:端点的 VPC 网络的名称。

    • ADDRESS_NAME:预留地址的名称。

    • SERVICE_ATTACHMENT:服务提供方的服务连接的 URI。例如: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

将工作负载指向 Private Service Connect 端点

配置代理环境变量,以便每个工作负载都使用 Private Service Connect 端点的 IP 地址进行出站流量。

例如,对于 Linux 或 macOS 环境中的工作负载,您可以使用命令行暂时配置 HTTP_PROXYHTTPS_PROXY 环境变量:

export HTTP_PROXY="http://ENDPOINT_IP_ADDRESS:HTTP_PORT"
export HTTPS_PROXY="https://ENDPOINT_IP_ADDRESS:HTTPS_PORT"

请替换以下内容:

  • ENDPOINT_IP_ADDRESS:端点的内部 IP 地址
  • HTTP_PORT:用于接收 HTTP 流量的端口
  • HTTPS_PORT:用于接收 HTTPS 流量的端口

如需了解如何在工作负载的环境中永久设置代理变量,请参阅操作系统的文档。

接下来怎么做?