使用服务账号创��政策

服务账号是一种通常由应用或计算工作负载(例如 Compute Engine 实例)而非真人使用的特殊账号。服务账号由其电子邮件地址(对该账号是唯一的)标识。

应用使用服务账号来执行已获授权的 API 调用(以服务账号本身的身份进行身份验证或者以 Google Workspace 或 Cloud Identity 用户的身份通过全网域授权功能进行身份验证)。 当应用是使用服务账号证明其身份时,它可以访问该服务账号有权访问的所有资源。

您可以使用服务账号来识别流量来源并配置 根据需要提供安全 Web 代理政策。

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

  • 创建使用空政策的安全 Web 代理实例。
  • 创建服务账号并将其附加到资源。
  • 使用服务账号创建安全 Web 代理政策。
  • 创建安全 Web 代理实例。
  • 测试虚拟机的连接。

准备工作

  • 完成初始设置 步骤

  • 有组织管理员 向服务账号授予访问权限

  • 验证您是否已安装 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:IP 的可选列表 安全 Web 代理实例的多个 IP 地址 之前在 GCP 控制台中 初始设置步骤

      如果您选择不列出 IP 地址 忽略此字段,让 Web 代理为您选择 IP 地址。

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

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

测试连接性

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

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

预计会出现 403 Forbidden 错误。

创建服务账号并将其附加到资源

执行以下操作以创建并关联服务账号:

  1. 创建服务账号

  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 所需的服务账号,请将以下内容添加到 YAML 文件中 为 sessionMatcher 创建的:

      sessionMatcher: "source.matchServiceAccount('SERVICE_ACCOUNT') && host() == 'example.com'"
      

      SERVICE_ACCOUNT 替换为服务账号 允许的国家/地区这必须是服务账号的电子邮件地址 地址。

  3. 导入您创建的规则:

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

测试连接性

如需测试连接性,请在具有以下设置的资源中使用 curl 命令: 已附加SERVICE_ACCOUNT

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

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

后续步骤