使用网址列表创建政策

本页面介绍了如何在 Secure Web Proxy 实例中使用网址列表,为出站 Web 流量创建和管理精细的访问权限政策。 网址列表可让您定义可重复使用的集中式网域、主机名和特定网址模式集合,而无需为每个网站创建单独的规则。

使用网址列表的一些主要优势如下:

  • 简化政策管理:您可以在安全政策中使用单个引用来应用大量 allow 或 deny 规则。

  • 强制执行精确控制:您可以使用特定语法来匹配整个 网域、子网域或确切的网址路径。这有助于确保您的工作负载只能访问授权的目标。

  • 安全 Web 访问:您可以高效地保护和审核整个环境中的 Web 访问。 Google Cloud

准备工作

  • 完成 初始设置步骤。

  • 验证您是否已安装 Google Cloud CLI 406.0.0 版或更高版本:

    gcloud version | head -n1
    

    如果您安装的是早期 gcloud CLI 版本,请更新版本:

    gcloud components update --version=406.0.0
    

使用空政策创建 Secure Web Proxy 实例

如需创建 Secure Web Proxy 实例,您必须先创建一个空的安全政策,然后创建一个使用该政策的 Web 代理。

创建空的安全政策

控制台

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

    前往 SWP 政策

  2. 点击 创建政策。

  3. 在名称字段中,输入政策的名称,例如 myswppolicy。

  4. 在 说明 字段中,输入政策的说明,例如 My new swp policy。

  5. 对于区域,选择要在其中创建 政策的区域,例如us-central1。

  6. 点击创建 。

Cloud Shell

  1. 使用文本编辑器创建 policy.yaml 文件。

  2. 将以下代码添加到 policy.yaml 文件:

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    description: POLICY_DESCRIPTION
    

    替换以下内容:

    • PROJECT_NAME:项目的名称

    • REGION:创建政策的区域,例如 us-central1

    • POLICY_NAME:政策的名称

    • POLICY_DESCRIPTION:政策的说明

  3. 使用 gcloud network-security gateway-security-policies import 命令导入安全政策:

    gcloud network-security gateway-security-policies import POLICY_NAME \
        --source=POLICY_FILE.yaml \
        --location=REGION
    

创建 Web 代理

控制台

  1. 在 Google Cloud 控制台中,前往 Web 代理 页面。

    前往 Web 代理

  2. 点击 创建安全 Web 代理 。

  3. 在名称 字段中,输入 Web 代理的名称,例如 myswp。

  4. 在 说明 字段中,输入 Web 代理的说明, 例如 My new swp。

  5. 对于路由模式,选择以下选项之一:

    • 显式:以显式代理模式部署 Secure Web Proxy 实例。
    • 下一个跃点:以下一个跃点模式部署 Secure Web Proxy 实例。
  6. 对于区域,选择要在其中创建 Web 代理的区域,例如 us-central1。

  7. 对于网络,选择要在其中创建 Web 代理的网络。

  8. 对于子网,选择您在初始 设置期间创建的 VPC 子网 。

  9. 可选:在 Web 代理 IP 地址 字段中,输入 Secure Web Proxy IP 地址。

    您可以输入在先前步骤中创建的子网中的 Secure Web Proxy IP 地址范围内的 IP 地址。 如果您未输入 IP 地址,Secure Web Proxy 实例会自动从所选子网中选择 IP 地址。

  10. 对于证书,选择要用于创建 Web 代理的证书 。

  11. 对于政策,选择您创建的要与 Web 代理关联的政策 。

  12. 点击创建 。

Cloud Shell

  1. 使用文本编辑器创建 gateway.yaml 文件。

  2. 将以下代码添加到 gateway.yaml 文件:

    name: projects/PROJECT_NAME/locations/REGION/gateways/GATEWAY_NAME
    type: SECURE_WEB_GATEWAY
    ports: [GATEWAY_PORT_NUMBERS]
    certificateUrls: [CERTIFICATE_URLS]
    gatewaySecurityPolicy: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    network: projects/PROJECT_NAME/global/networks/NETWORK_NAME
    subnetwork: projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNETWORK
    routingMode: ROUTING_MODE
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    

    可选:如需允许来自其他 Google Cloud 区域的客户端应用连接到您的代理,请在创建 Secure Web Proxy 实例时启用全局 访问权限。

    在 gateway.yaml 文件中,添加 allow_global_access 字段并将其设置为 true。

    重要提示:您只能在创建 Secure Web Proxy 实例时启用 allow_global_access。您无法稍后配置此设置。

    name: projects/PROJECT_NAME/locations/REGION/gateways/GATEWAY_NAME
    type: SECURE_WEB_GATEWAY
    ports: [GATEWAY_PORT_NUMBERS]
    certificateUrls: [CERTIFICATE_URLS]
    gatewaySecurityPolicy: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    network: projects/PROJECT_NAME/global/networks/NETWORK_NAME
    subnetwork: projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNETWORK
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    allow_global_access: true
    

    替换以下内容:

    • GATEWAY_NAME:此 Secure Web Proxy 实例的名称

    • GATEWAY_PORT_NUMBERS:此网关的端口号列表,例如 [80,443]

    • CERTIFICATE_URLS:SSL 证书网址列表

    • SUBNETWORK:您在初始设置期间创建的VPC 子网

    • ROUTING_MODE:指定所需的 Web 代理路由模式:

      • EXPLICIT_ROUTING_MODE:以显式代理模式部署 Secure Web Proxy 实例
      • NEXT_HOP_ROUTING_MODE:以下一个跃点模式部署 Secure Web Proxy 实例
    • GATEWAY_IP_ADDRESS:可选列表,其中包含您之前在 初始设置步骤中创建的代理 子网中 Secure Web Proxy 实例的 IP 地址

      如果您选择不列出 IP 地址,请省略该字段,以便 Web 代理为您选择 IP 地址。

  3. 使用 gcloud network-services gateways import 命令创建 Secure Web Proxy 实例:

    gcloud network-services gateways import GATEWAY_NAME \
        --source=gateway.yaml \
        --location=REGION
    

测试连接性

如需测试连接性,请从虚拟私有云 (VPC) 网络中的任何虚拟机 (VM) 实例使用 curl 命令:

  curl -x https://GATEWAY_IP_ADDRESS:PORT_NUMBER https://www.example.com --proxy-insecure
  

如果一切正常,Secure Web Proxy 实例会返回 403 Forbidden 状态代码。此错误确认了以下内容:

  • Secure Web Proxy 实例已成功部署,并且正在主动接收流量。

  • Secure Web Proxy 政策正确地强制执行默认安全态势,即拒绝所有流量,直到您在后续部分中定义特定的 allow 规则。

创建和配置网址列表

控制台

  1. 在 Google Cloud 控制台中,前往 网址 列表 页面。

    前往 网址 列表

  2. 点击 创建网址列表。 此时会打开创建网址列表 页面。

  3. 在名称 字段中,输入网址列表的名称,例如 example-org-allowed-list。

  4. 在说明 字段中,输入网址列表的说明,例如 My new URL list。

  5. 对于区域,选择要在其中创建网址列表, 例如 us-central1。

  6. 如需添加要匹配的主机、网址或模式列表,请在 网址 列表 字段中输入详细信息,或点击 上传列表 以上传自定义网址列表。如需了解详情,请参阅 UrlList 语法参考。

  7. 点击创建 。

Cloud Shell

  1. 使用文本编辑器创建 url_list.yaml 文件。

  2. 将以下代码添加到 url_list.yaml 文件:

      name: projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME
      values: URL_LIST
    

    替换以下内容:

    • PROJECT_ID:您的项目的唯一 ID Google Cloud

    • REGION:创建网址列表的区域, 例如 us-central1

    • URL_LIST_NAME:网址列表的名称

    • URL_LIST:要匹配的主机、网址或模式列表

    如需了解详情,请参阅 UrlList 语法参考。

    以下是网址列表规则文件的示例:

    name: projects/PROJECT_ID/locations/REGION/urlLists/example-org-allowed-list
    values:
      - www.example.com
      - about.example.com
      - "*.google.com"
      - "github.com/example-org/*"
    

    星号 (*) 字符在 YAML 中具有特殊含义。您必须在包含 * 字符的网址周围添加英文引号。

  3. 使用 gcloud network-security url-lists import 命令 导入您创建的网址列表,以便 Secure Web Proxy 规则可以引用它。

    gcloud network-security url-lists import URL_LIST_NAME \
        --location=REGION \
        --project=PROJECT_ID \
        --source=url_list.yaml
    

添加 Secure Web Proxy 规则

控制台

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

    前往 SWP 政策

  2. 点击您的政策名称,例如 myswppolicy。

  3. 点击 添加规则。

  4. 对于每条规则,请执行以下操作:

    1. 对于优先级,输入规则的数字评估顺序。 这些规则按照从最高到最低的优先级进行评估,其中 0 是最高优先级。

    2. 在名称 字段中,输入规则的名称,例如 allow-org-url-list。

    3. 在说明 字段中,输入规则的说明。

    4. 对于操作,选择以下选项之一:

      • 允许:允许与规则匹配的连接请求。
      • 拒绝:拒绝与规则匹配的连接请求。
    5. 对于状态 字段,选择以下选项之一以强制执行规则:

      • 已启用:在 Secure Web Proxy 实例上强制执行规则。
      • 已停用:不在 Secure Web Proxy 实例上强制执行规则。
    6. 在会话匹配 部分中,指定您在上一部分中创建的网址列表的唯一名称。例如:

        sessionMatcher: "inUrlList(host(), 'projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME)"
        

      如需详细了解 SessionMatcher的语法,请参阅 CEL 匹配器语言参考文档。

    7. 在应用匹配 部分中,指定匹配请求的条件。

    8. 点击添加规则 。

Cloud Shell

  1. 使用文本编辑器创建 rule.yaml 文件。

  2. 将以下代码添加到 rule.yaml 文件:

    name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME
    basicProfile: ALLOW
    enabled: true
    priority: RULE_PRIORITY
    description: RULE_DESCRIPTION
    sessionMatcher: SESSION_CEL_EXPRESSION
    applicationMatcher: APPLICATION_CEL_EXPRESSION
    

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目的唯一 ID

    • REGION:此规则适用的区域

    • POLICY_NAME:Secure Web Proxy 实例使用的现有安全政策 的名称

    • RULE_NAME:规则的名称

    • PRIORITY_VALUE:规则的优先级; 数字越小,优先级越高

    • RULE_DESCRIPTION:规则的说明

    • SESSION_CEL_EXPRESSION:通用表达式 语言 (CEL) 表达式。如需了解详情,请参阅 CEL 匹配器语言参考文档。

    • APPLICATION_CEL_EXPRESSION:应用的 CEL 表达式

    以下是规则文件的示例:

    name: projects/PROJECT_ID/locations/REGION/urlLists/allow-repos
    basicProfile: ALLOW
    enabled: true
    priority: 100
    description: Allow access to our list of known code repos.
    sessionMatcher: "inUrlList(host(), 'projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME')"
    

  3. 使用 gcloud network-security gateway-security-policies rules import 命令导入您创建的规则。

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

测试政策配置

您可以再次测试连接性,以验证基于网址列表的访问权限规则是否已正确配置,以及是否由 Secure Web Proxy 实例主动强制执行。

如需测试连接性,请使用以下 curl 命令:

curl -x https://SWP_IP_ADDRESS:SWP_PORT_NUMBER HTTP_TEST_ADDRESS
--proxy-insecure

替换以下内容:

  • SWP_IP_ADDRESS:Secure Web Proxy 实例的 IP 地址

  • SWP_PORT_NUMBER:Web 代理的端口号,例如 443

  • HTTP_TEST_ADDRESS:要测试的地址,例如 https://www.example.com。它与 url_list 中的主机或网址条目匹配。

如果一切正常,您会收到 200 OK 响应。此响应确认,系统已成功允许通过 Secure Web Proxy 实例访问网址列表中列出且由安全政策规则引用的网址的出站流量。

后续步骤