使用网址列表创建政策

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

准备工作

  • 完成初始设置步骤

  • 请验证您是否已安装 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 控制台中,前往 SWP 政策页面。

    前往“SWP 政策”页面

  2. 点击 创建政策

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

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

  5. 区域列表中,选择要在其中创建政策的区域。

  6. 点击创建

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 控制台中,前往网站代理页面。

    前往“Web 代理”页面

  2. 点击 创建安全 Web 代理

  3. 输入您要创建的网络代理的名称,例如 myswp

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

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

  6. 网络列表中,选择要创建网站代理的网络。

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

  8. 可选:输入安全 Web 代理 IP 地址。您可以输入位于您在上一步中创建的子网中的安全 Web 代理 IP 地址范围内的 IP 地址。如果您未输入 IP 地址,安全 Web 代理实例会自动从所选子网中选择一个 IP 地址。

  9. 证书列表中,选择要用于创建网站代理的证书。

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

  11. 点击创建

Cloud Shell

  1. 使用您偏好的文本编辑器创建 GATEWAY_FILE.yaml 文件。将 GATEWAY_FILE 替换为您要为网络代理文件使用的文件名。

  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
    

测试连接性

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

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

系统会显示 403 Forbidden 错误,这是预期行为。

创建网址列表

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

创建和配置网址列表

控制台

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

    前往“网址列表”

  2. 点击 创建网址列表

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

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

  5. 地区列表中,选择要创建网址列表的区域。

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

  7. 点击创建

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 控制台中,前往 SWP 政策页面。

    前往“SWP 政策”页面

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

  3. 点击您的政策名称。

  4. 点击 添加规则

  5. 填充规则字段:

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

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

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

    9. 点击创建

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

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

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:您的网络代理的 IP 地址

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

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

该请求应返回成功响应。

后续步骤