使用网址列表创建政策

本指南介绍了如何使用网址列表来定义用户可以访问的网址。

准备工作

  • 完成初始设置步骤

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

    gcloud version | head -n1
    

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

    gcloud components update --version=406.0.0
    

使用空政策创建安全 Web 代理实例

如需创建安全 Web 代理实例,请先创建空的安全政策,然后创建 Web 代理。

创建空的安全政策

控制台

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

    前往“网络安全”

  2. 点击安全 Web 代理

  3. 点击政策标签页。

  4. 点击创建政策

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

  6. 输入政策的说明,例如 My new swp policy

  7. 区域列表中,选择您要创建政策的区域。

  8. 点击创建

Cloud Shell

  1. 使用您的首选文本编辑器创建 POLICY_FILE.yaml 文件。将 POLICY_FILE 替换为您想要用于政策文件的文件名。

  2. 将以下内容添加到您创建的 YAML 文件中:

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

    替换以下内容:

    • PROJECT_NAME:您的项目的名称
    • REGION:此政策适用的区域
    • POLICY_NAME:您要创建的政策的名称
    • POLICY_DESCRIPTION:您要创建的政策的说明
  3. 导入安全政策:

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

创建 Web 代理

控制台

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

    前往“网络安全”

  2. 点击安全 Web 代理

  3. 点击设置 Web 代理

  4. 为您要创建的 Web 代理输入名称,例如 myswp

  5. 输入 Web 代理的说明,例如 My new swp

  6. 区域列表中,选择要创建 Web 代理的区域。

  7. 网络列表中,选择您要在其中创建 Web 代理的网络。

  8. 子网列表中,选择要创建 Web 代理的子网。

  9. 输入 Web 代理 IP 地址。

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

  11. 政策列表中,选择您创建的要与 Web 代理关联的政策。

  12. 点击创建

Cloud Shell

  1. 使用您的首选文本编辑器创建 GATEWAY_FILE.yaml 文件。将 GATEWAY_FILE 替换为您想要用于 Web 代理文件的文件名。

  2. 将以下内容添加到您创建的 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/SUBNET_NAME
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    

    替换以下内容:

    • GATEWAY_NAME:此实例的名称
    • GATEWAY_PORT_NUMBERS:此网关的端口号列表,例如 [80,443]
    • CERTIFICATE_URLS:SSL 证书网址列表
    • SUBNET_NAME:包含 GATEWAY_IP_ADDRESS 的子网的名称

    • GATEWAY_IP_ADDRESS:之前在初始设置步骤中创建的代理子网中的安全 Web 代理实例的可选 IP 地址列表

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

  3. 创建安全 Web 代理实例:

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

测试连接性

如需测试连接,请从 Virtual Private Cloud (VPC) 网络内的任何虚拟机使用 curl 命令:

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

预计会出现 403 Forbidden 错误。

创建网址列表

如需创建网址列表并添加规则,请完成以下部分中的任务。

创建和配置网址列表

控制台

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

    前往“网络安全”

  2. 点击安全 Web 代理

  3. 点击网址列表标签页。

  4. 点击创建网址列表

  5. 为您要创建的网址列表输入名称,例如 myurllist

  6. 输入对网址列表的说明,例如 My new URL list

  7. 区域列表中,选择要在哪个区域创建网址列表。

  8. 点击上传列表,上传要匹配的主机、网址或格式的列表。如需了解详情,请参阅 UrlList 语法参考文档

  9. 点击创建

Cloud Shell

  1. 使用您的首选文本编辑器创建带有所需文件名的文件 URL_LIST_FILE.yaml. ReplaceURL_LIST_FILE

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

    替换以下内容:

    • PROJECT_ID:您的项目编号
    • REGION:此网址列表所适用的区域
    • 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 中具有特殊含义。因此,您必须为包含 * 字符的网址添加引号。

  2. 添加网址列表,以便安全 Web 代理规则可以引用该网址:

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

添加规则

控制台

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

    前往“网络安全”

  2. 点击安全 Web 代理

  3. 在项目选择器菜单中,选择您的组织 ID 或包含政策的文件夹。

  4. 点击您的政策名称。

  5. 点击添加规则

  6. 填充规则字段:

    1. 名称
    2. 说明
    3. Status
    4. 优先级:规则的数字评估顺序。规则按优先级从高到低进行评估,其中 0 为最高优先级。
    5. 操作部分中,指定是允许 (Allow) 还是拒绝 (Deny) 与规则匹配的连接。
    6. 会话匹配部分中,指定您之前创建的网址列表的名称。例如:

        sessionMatcher: "inUrlList(host(), 'projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME')"
      
    7. 如需启用 TLS 检查,请选择启用 TLS 检查

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

    9. 点击创建

  7. 点击添加规则以添加其他规则。

  8. 点击创建以创建该政策。

Cloud Shell

  1. 使用您的首选文本编辑器创建 RULE_FILE.yaml 文件。将 RULE_FILE 替换为所需的文件名。

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

    替换以下内容:

    • PROJECT_ID:您的项目编号
    • REGION:此规则适用的区域
    • POLICY_NAME:您的安全 Web 代理实例使用的现有 GatewaySecurityPolicy 的名称
    • RULE_NAME:您要创建的 GatewaySecurityPolicyRule 的名称
    • PRIORITY_VALUE:此规则的优先级值;数字越小,优先级越高
    • RULE_DESCRIPTION:您要创建的政策的说明
    • SESSION_CEL_EXPRESSION:会话的通用表达式语言 (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')"
    

  2. 使用您之前创建的网址列表添加安全 Web 代理规则:

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

测试连接性

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

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

替换以下内容:

  • SWP_IP_ADDRESS:您的 Web 代理的 IP 地址

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

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

该请求应返回成功响应。

后续步骤