使用标记创建政策

Resource Manager 标记用于控制对 Google Cloud 资源的访问权限。借助 Resource Manager 标记,您可以 Google Cloud 整理资源,并根据资源是否具有特定标记,有条件地允许或拒绝政策。您可以使用 Resource Manager 代码按细分和服务类型为每个虚拟机 (VM) 实例添加代码。借助 Resource Manager 标记,您可以在创建安全 Web 代理政策时唯一标识主机。

本指南介绍如何执行以下操作:

  • 创建一个包含空政策的安全 Web 代理实例。
  • 创建 Resource Manager 标记并将其应用于虚拟机实例。
  • 使用资源管理器标记创建安全 Web 代理政策。
  • 创建安全 Web 代理实例。
  • 测试来自虚拟机的连接。

准备工作

创建包含空政策的安全 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 错误,这是预期行为。

创建和附加 Resource Manager 标记

如需创建和附加 Resource Manager 标记,请执行以下操作:

  1. 创建标记键和标记值

    创建标记时,请使用 GCE_FIREWALL 用途对其进行指定。Google Cloud 网络功能(包括安全 Web 代理)需要使用 GCE_FIREWALL 用途来应用标记。不过,您可以将该标记用于其他操作。

  2. 将标记绑定到虚拟机实例

创建安全 Web 代理规则

如需创建安全 Web 代理规则,请执行以下操作:

  1. 使用您偏好的文本编辑器创建 RULE_FILE.yaml 文件。将 RULE_FILE 替换为您选择的文件名。

  2. 如需允许通过所选代码访问网址,请将以下内容添加到 YAML 文件中:

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME
    description: RULE_DESCRIPTION
    enabled: true
    priority: RULE_PRIORITY
    sessionMatcher: CEL_EXPRESSION
    basicProfile: ALLOW
    

    替换以下内容:

    • RULE_NAME:此规则的名称
    • RULE_DESCRIPTION:您要创建的规则的说明
    • RULE_PRIORITY:此规则的优先级;数字越小,优先级越高
    • CEL_EXPRESSION:一个通用表达式语言 (CEL) 表达式

      如需了解详情,请参阅 CEL 匹配器语言参考文档

    例如,如需允许从所需标记访问 example.com,请将以下内容添加到为 sessionMatcher 创建的 YAML 文件中:

    sessionMatcher: "source.matchTag('TAG_VALUE') && host() == 'example.com'"
    

    TAG_VALUE 替换为您要允许的标记,格式为 tagValues/1234

  3. 导入您创建的规则:

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

测试连接性

如需测试连接,请在与 TAG_VALUE 标记关联的任何虚拟机中使用 curl 命令:

curl -x https://IPv4_ADDRESS:443 http://example.com 
--proxy-insecure

IPv4_ADDRESS 替换为您的安全 Web 代理实例的 IPv4 地址。

后续步骤