服务账号是一种特殊类型的账号,通常由应用或计算工作负载(例如 Compute Engine 实例)而非个人使用。此账号由其电子邮件地址(对该账号是唯一的)标识。
应用使用服务账号来执行已获授权的 API 调用(以服务账号本身的身份进行身份验证或者以 Google Workspace 或 Cloud Identity 用户的身份通过全网域授权功能进行身份验证)。 当应用是使用服务账号证明其身份时,它可以访问该服务账号有权访问的所有资源。
您可以使用服务账号来识别流量来源,并根据需要配置安全 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 代理。
创建空安全政策
控制台
在 Google Cloud 控制台中,前往网络安全页面。
点击安全 Web 代理。
点击政策标签页。
点击创建政策。
输入您要创建的政策的名称,例如
myswppolicy
。输入政策说明,例如
My new swp policy
。在区域列表中,选择要在其中创建政策的区域。
点击创建。
Cloud Shell
使用您偏好的文本编辑器创建
POLICY_FILE
.yaml 文件。将POLICY_FILE
替换为您要为政策文件使用的文件名。将以下内容添加到您创建的 YAML 文件中:
name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME description: POLICY_DESCRIPTION
替换以下内容:
PROJECT_NAME
:您的项目的名称REGION
:此政策适用的区域POLICY_NAME
:您要创建的政策的名称POLICY_DESCRIPTION
:您要创建的政策的说明
导入安全政策:
gcloud network-security gateway-security-policies import POLICY_NAME \ --source=POLICY_FILE.yaml \ --location=REGION
创建 Web 代理
控制台
在 Google Cloud 控制台中,前往网络安全页面。
点击安全 Web 代理。
点击设置网络代理。
输入您要创建的网络代理的名称,例如
myswp
。输入 Web 代理的说明,例如
My new swp
。在区域列表中,选择要创建网站代理的区域。
在网络列表中,选择要创建 Web 代理的网络。
在子网列表中,选择要创建 Web 代理的子网。
输入网站代理 IP 地址。
在证书列表中,选择要用于创建网站代理的证书。
在政策列表中,选择要与网站代理关联的政策。
点击创建。
Cloud Shell
使用您偏好的文本编辑器创建
GATEWAY_FILE
.yaml 文件。将GATEWAY_FILE
替换为您要为网络代理文件使用的文件名。将以下内容添加到您创建的 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 地址。
创建安全 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
错误,这是预期行为。
创建服务账号并将其附加到资源
如需创建和附加服务账号,请执行以下操作:
创建安全 Web 代理规则
如需创建安全 Web 代理规则,请执行以下操作:
使用您偏好的文本编辑器创建
RULE_FILE
.yaml 文件。将RULE_FILE
替换为您选择的文件名。如需允许从所选服务账号访问网址,请将以下内容添加到 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.matchServiceAccount('SERVICE_ACCOUNT') && host() == 'example.com'"
将
SERVICE_ACCOUNT
替换为您要允许的服务账号。此电子邮件地址必须是服务账号的电子邮件地址。
导入您创建的规则:
gcloud network-security gateway-security-policies rules import RULE_NAME \ --source=RULE_FILE.yaml \ --location=REGION \ --gateway-security-policy=POLICY_NAME
测试连接性
如需测试连接,请使用带有附加 SERVICE_ACCOUNT
的资源中的 curl
命令:
curl -x https://IPv4_ADDRESS:443 http://example.com
--proxy-insecure
将 IPv4_ADDRESS
替换为您的安全 Web 代理实例的 IPv4 地址。