将安全 Web 代理发布为 Private Service Connect 服务

如需在多个 VPC 网络中集中部署安全 Web 代理,您可以通过 Private Service Connect 服务附件提供安全 Web 代理。

使用 Private Service Connect 部署安全 Web 代理涉及以下步骤:

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

准备工作

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

创建和配置安全 Web 代理实例

本指南介绍了如何创建按会话匹配流量的安全 Web 代理政策和规则。

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

如需了解如何选择性配置应用级匹配,请参阅部署安全 Web 代理实例

创建安全 Web 代理政策

控制台

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

    前往“SWP 政策”页面

  2. 点击 创建政策

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

  4. 输入政策说明。

  5. 区域列表中,选择要创建网站代理政策的区域。

  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 创建安全 Web 代理政策。

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

向政策添加安全 Web 代理规则

配置安全 Web 代理规则,以允许来自每个工作负载的出站流量。

本部分介绍了如何创建规则,以允许来自由 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'

      • 如需允许使用服务账号 account-name@my-project.iam.gserviceaccount.com 的工作负载向 google.com 发送流量,请输入以下内容:

        source.matchServiceAccount('account-name@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
    

部署安全 Web 代理实例

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

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

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

在轮辐模型中将安全 Web 代理部署为 Private Service Connect 服务

本部分介绍了如何使用集线和辐条模型集中管理出站流量,将安全 Web 代理部署为 Private Service Connect 服务。

将安全 Web 代理发布为 Private Service Connect 服务

如需将安全 Web 代理发布为服务,请创建 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. 点击添加

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

创建服务连接

如需在中央(枢纽)VPC 网络中将安全 Web 代理发布为服务附件,请执行以下操作。

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

控制台

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

    转到 Private Service Connect

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

  3. 点击发布服务

  4. 目标详细信息部分中,选择安全 Web 代理

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

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

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

  8. 连接偏好设置部分中,选择自动接受所有连接

  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:安全 Web 代理实例的 URI,采用以下格式://networkservices.googleapis.com/projects/PROJECT_ID/locations/REGION/gateways/INSTANCE_NAME
  • NAT_SUBNET_NAME:Private Service Connect 子网的名称
  • REGION:安全 Web 代理部署的区域
  • PROJECT:安全 Web 代理部署的项目

创建端点

在需要通过集中式安全 Web 代理实例发送出站流量的每个 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 流量的端口

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

后续步骤