通过 Secure Web Proxy 路由环境出站流量

本页面介绍了如何为在 Google Kubernetes Engine (GKE) 环境网络上运行的工作负载配置出站路由,以将其路由到安全 Web 代理 (SWP) 网关。

通过 Secure Web Proxy 网关路由出站流量,您可以强制执行集中式出站安全政策(例如网址过滤、网域许可名单和 TLS 检查),而无需修改应用代码。第 4 层节点代理会拦截应用 Pod 之外的出站流量,即使工作负载容器遭到入侵,也能提供 Pod 外部的安全隔离。

架构和流量流

在此部署模型中,您将保留对基础架构的所有权,包括 GKE 集群、Secure Web Proxy 实例和任何 Private Service Connect (PSC) 端点。

出站流量的运作方式如下:

  1. 工作负载或 AI 智能体 Pod 向外部端点或互联网目的地发起出站流量。
  2. 本地第 4 层环境节点代理拦截节点上的出站请求。
  3. 节点代理会建立一个到出站流量网关的 HTTP CONNECT 隧道。
  4. 如果 Secure Web Proxy 位于不同的 VPC 网络中,流量会通过 PSC 服务连接。
  5. Secure Web Proxy 会终止隧道,强制执行配置的出站流量安全政策,并将授权的请求转发到目的地。

限制

在设置 Secure Web Proxy 出站流量路由之前,请查看以下预览版限制:

  • 命名空间级政策:出站路由政策仅在命名空间级应用。不支持使用标签选择器进行精细的 Pod 选择。
  • 主机名过滤需要 TLS 检查: Secure Web Proxy 政策只能按 IP 地址过滤出站流量,除非启用 TLS 检查。
  • Workload Identity:GKE 环境网络支持标准 Workload Identity。此预览版不支持受管理的 Agent Identity 池。
  • 身份验证:环境节点代理与 Secure Web Proxy 之间的连接会跳过服务器证书验证。CONNECT 请求包含无界令牌以及客户端证书。
  • 配置更新时的资源重新创建:对现有 Secure Web Proxy 实例或 PSC 配置所做的更改不会自动传播。如果您更新了 Secure Web Proxy 或 PSC 配置,则必须删除并重新创建 GCPEgressPolicy 资源和 Secure Web Proxy 实例,才能应用更改。
  • TLS 检查信任锚:GKE 不会自动将 Secure Web Proxy 私有 CA 证书注入到工作负载容器中。如果您使用 TLS 检查,则必须手动将信任证书安装到容器映像中。

前提条件

在配置出站路由之前,请验证您是否具备以下条件:

  • 已启用环境网络的 GKE 集群。如需了解相关说明,请参阅准备 GKE 环境网络。
  • 已部署的Secure Web Proxy实例,其中serverTlsPolicy已配置为clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT,位于您的Cloud de Confiance by S3NS 项目或共享 VPC 中。
  • 如果 Secure Web Proxy 位于与 GKE 集群不同的 VPC 网络中:
    • 为 Secure Web Proxy 创建的 PSC 服务连接。
    • 在 GKE 集群 VPC 网络中配置的 PSC 使用方端点。

如需完成这些步骤,您必须拥有以下角色:

  • Agent Gateway / 网络服务:networkservices.agentGateways.*(或 roles/networkservices.admin)用于配置 Agent Gateway 资源。
  • PSC 管理:compute.networkAttachments.list(或 roles/compute.networkAdmin)用于管理 Private Service Connect 连接。
  • GKE 管理:roles/container.clusterAdmin 用于部署自定义资源(GCPBackend、GCPEgressPolicy)。

为 TLS 检查配置信任

如果您的 Secure Web Proxy 政策使用 TLS 检查来检查已加密的出站流量,则代理会生成由其私有证书授权机构 (CA) 签名的证书,以冒充外部目的地。

工作负载应用必须信任 Secure Web Proxy 提供的私有 CA 证书。由于 GKE 不会自动注入此证书,因此您必须将 SWP CA 证书(信任锚)安装到容器的受信任证书存储区中。

如需将 CA 证书添加到容器映像,请在 Dockerfile 中添加以下行:

COPY swp-ca-cert.pem /usr/local/share/ca-certificates/swp-ca-cert.crt
RUN update-ca-certificates

定义网关端点

配置 Ambient egress 路由的第一步是创建网关端点,该端点用于定义 GKE 集群中的 Secure Web Proxy 端点,并告知 Ambient Networking 代理的位置。

如需指定 Secure Web Proxy 或 Private Service Connect (PSC) 服务连接的 URI,请在 GKE 集群中创建 GCPBackend 自定义资源:

  1. 将以下清单保存为 swp-backend.yaml:

    同一 VPC

    apiVersion: networking.gke.io/v1
    kind: GCPBackend
    metadata:
      name: swp-backend
      namespace: ambient-test
    spec:
      serviceUris:
      - //networkservices.googleapis.com/projects/PROJECT_ID/locations/REGION/gateways/SWP_NAME
    

    替换以下内容:

    • ambient-test:已注册到环境联网的命名空间。
    • PROJECT_ID:您的 Cloud de Confiance by S3NS 项目 ID。
    • REGION:部署 Secure Web Proxy 或 PSC 服务连接的区域。
    • SWP_NAME:Secure Web Proxy 的名称。

    跨 VPC

    apiVersion: networking.gke.io/v1
    kind: GCPBackend
    metadata:
      name: swp-backend
      namespace: ambient-test
    spec:
      serviceUris:
      - //compute.googleapis.com/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    

    替换以下内容:

    • ambient-test:已注册到环境联网的命名空间。
    • PROJECT_ID:您的 Cloud de Confiance by S3NS 项目 ID。
    • REGION:部署 Secure Web Proxy 或 PSC 服务连接的区域。
    • ATTACHMENT_NAME:PSC 服务连接的名称(如果您的 Secure Web Proxy 位于其他 VPC 网络中)。
  2. 应用 GCPBackend 资源:

    kubectl apply -f swp-backend.yaml
    

配置出站流量重定向

创建 GCPEgressPolicy 自定义资源,以将来自命名空间的出站流量路由到 Secure Web Proxy 网关。这为环境节点代理提供了必要的信号,以便其建立到安全 Web 代理的 HTTP CONNECT 隧道,而这对于出站路由是必需的。

  1. 将以下清单保存为 swp-egress-policy.yaml:

    apiVersion: networking.gke.io/v1
    kind: GCPEgressPolicy
    metadata:
      name: swp-egress-policy
      namespace: ambient-test
    spec:
      to:
        excludeCIDRRanges:
        - "CLUSTER_CONTROL_PLANE_CIDR"
      proxyRef:
        group: networking.gke.io
        kind: GCPBackend
        name: swp-backend
    

    替换以下内容:

    • ambient-test:已注册到环境网络中的命名空间。
    • CLUSTER_CONTROL_PLANE_CIDR:应绕过 Secure Web Proxy 的内部通信的 CIDR 范围(例如 GKE 控制平面地址范围或内部 VPC 子网)。
  2. 应用 GCPEgressPolicy 资源:

    kubectl apply -f swp-egress-policy.yaml
    

    应用政策后,命名空间中工作负载的出站流量会重定向到 Secure Web Proxy。

问题排查

请按照以下指南诊断和解决环境出口路由问题:

  • 流量未到达 Secure Web Proxy:
    • 验证 GCPBackend 资源是否指向正确的 PSC 服务连接 URI。
    • 验证 PSC 端点是否已在提供方 VPC 中建立并接受。
    • 检查 GCPEgressPolicy 中的 excludeCIDRRanges 是否在无意中与目标流量匹配。
  • mTLS 连接失败:
    • 验证 Secure Web Proxy 是否已配置为接受来自节点代理的连接。
  • TLS 检查证书错误:
    • 如果客户端请求因证书验证错误(例如 x509: certificate signed by unknown authority)而失败,请验证 Secure Web Proxy CA 证书是否已正确安装在工作负载容器的系统证书存储区中。