使用网址列表创建政策

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

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

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

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

  • 安全 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 实例访问网址列表中列出且由安全政策规则引用的网址的出站流量。

后续步骤