本页介绍了如何使用网址列表在安全 Web 代理实例中为出站 Web 流量创建和管理精细的访问政策。网址列表可让您定义可重复使用的集中式网域、主机名和特定网址模式集合,而无需为每个网站分别创建规则。
以下是使用网址名单的一些主要优势:
简化政策管理:您可以在安全政策中通过单个引用应用大量
allow或deny规则。实现精细控制:您可以使用特定语法来匹配整个网域、子网域或确切的网址路径。这有助于确保您的工作负载只能访问授权的目标位置。
安全 Web 访问:您可以高效地保护和审核整个 Google Cloud 环境中的 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 控制台中,前往 SWP 政策页面。
点击 创建政策。
在名称字段中,输入政策的名称,例如
myswppolicy。在说明字段中,输入政策的说明,例如
My new swp policy。对于区域,选择您要在其中创建政策的区域,例如
us-central1。点击创建。
Cloud Shell
使用您偏好的文本编辑器创建
policy.yaml文件。将以下内容添加到您创建的
policy.yaml文件中:name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME description: POLICY_DESCRIPTION替换以下内容:
PROJECT_NAME:项目的名称REGION:创建政策的区域,例如us-central1POLICY_NAME:政策的名称POLICY_DESCRIPTION:政策的说明
使用
gcloud network-security gateway-security-policies import命令导入安全政策:gcloud network-security gateway-security-policies import POLICY_NAME \ --source=POLICY_FILE.yaml \ --location=REGION
创建 Web 代理
控制台
在 Google Cloud 控制台中,前往网络代理页面。
点击 创建安全 Web 代理。
在名称字段中,输入 Web 代理的名称,例如
myswp。在说明字段中,输入 Web 代理的说明,例如
My new swp。在路由模式部分中,选择显式选项。
对于区域,选择您要在其中创建 Web 代理的区域,例如
us-central1。在网络部分,选择要创建 Web 代理的网络。
可选:在 Web 代理 IP 地址字段中,输入安全 Web 代理 IP 地址。
您可以输入安全 Web 代理 IP 地址范围内的 IP 地址,该范围位于您在上一步中创建的子网中。如果您未输入 IP 地址,安全 Web 代理实例会自动从所选子网中选择一个 IP 地址。
对于证书,请选择要用于创建 Web 代理的证书。
在政策部分,选择您创建的要与 Web 代理相关联的政策。
点击创建。
Cloud Shell
使用您偏好的文本编辑器创建
gateway.yaml文件。将以下内容添加到
gateway.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/SUBNETWORK addresses: [GATEWAY_IP_ADDRESS] scope: samplescope替换以下内容:
使用
gcloud network-services gateways import命令创建安全 Web 代理实例:gcloud network-services gateways import GATEWAY_NAME \ --source=gateway.yaml \ --location=REGION
测试连接性
如需测试连接,请从 Virtual Private Cloud (VPC) 网络中的任何虚拟机 (VM) 实例运行 curl 命令:
curl -x https://GATEWAY_IP_ADDRESS:PORT_NUMBER https://www.example.com --proxy-insecure
如果一切正常,您的安全 Web 代理实例会返回 403 Forbidden 状态代码。此错误确认了以下内容:
安全 Web 代理实例已成功部署,并且正在主动接收流量。
安全 Web 代理政策正在正确地强制执行默认安全姿态,即拒绝所有流量,直到您在后续部分中定义特定的
allow规则。
创建和配置网址列表
控制台
在 Google Cloud 控制台中,前往 网址 列表页面。
点击 创建网址列表。 系统会打开创建网址列表页面。
在名称字段中,输入网址列表的名称,例如
example-org-allowed-list。在说明字段中,输入网址列表的说明,例如
My new URL list。对于区域,选择您要在其中创建网址列表的区域,例如
us-central1。如需添加要匹配的主机、网址或格式列表,请在 网址 list 字段中输入详细信息,或点击 Upload list 上传自定义网址列表。如需了解详情,请参阅 UrlList 语法参考。
点击创建。
Cloud Shell
使用您偏好的文本编辑器创建
url_list.yaml文件。将以下内容添加到
url_list.yaml文件中:name: projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME values: URL_LIST替换以下内容:
PROJECT_ID:您的 Google Cloud项目的唯一 IDREGION:创建网址列表的区域,例如us-central1URL_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 中具有特殊含义。您必须使用英文引号将包含*字符的网址括起来。使用
gcloud network-security url-lists import命令导入您创建的网址列表,以便安全 Web 代理规则可以引用该列表。gcloud network-security url-lists import URL_LIST_NAME \ --location=REGION \ --project=PROJECT_ID \ --source=url_list.yaml
添加安全 Web 代理规则
控制台
在 Google Cloud 控制台中,前往 SWP 政策页面。
点击您的政策名称,例如
myswppolicy。点击 添加规则。
对于每条规则,请执行以下操作:
在优先级中,输入规则的数字评估顺序。 规则按照从最高到最低的优先级进行评估,其中
0是最高优先级。在名称字段中,输入规则的名称,例如
allow-org-url-list。在说明字段中,输入规则的说明。
在操作部分,选择以下选项之一:
- 允许:允许与规则匹配的连接请求。
- 拒绝:拒绝与规则匹配的连接请求。
对于状态字段,请选择以下规则强制执行选项之一:
- 已启用:在安全 Web 代理实例上强制执行该规则。
- 已停用:不在安全 Web 代理实例上强制执行相应规则。
在会话匹配部分中,指定您在上一部分中创建的网址列表的唯一名称。例如:
sessionMatcher: "inUrlList(host(), 'projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME)"如需详细了解
SessionMatcher的语法,请参阅 CEL 匹配器语言参考文档。在应用匹配部分中,指定匹配请求的条件。
点击添加规则。
Cloud Shell
使用您偏好的文本编辑器创建
rule.yaml文件。将以下内容添加到
rule.yaml文件中:name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME basicProfile: ALLOW enabled: true priority: RULE_PRIORITY description: RULE_DESCRIPTION sessionMatcher: SESSION_CEL_EXPRESSION applicationMatcher: APPLICATION_CEL_EXPRESSION替换以下内容:
PROJECT_ID:您的 Google Cloud项目的唯一 IDREGION:相应规则适用的区域POLICY_NAME:Secure Web Proxy 实例使用的现有安全政策的名称RULE_NAME:规则的名称PRIORITY_VALUE:规则的优先级;数字越小,优先级越高RULE_DESCRIPTION:规则的说明SESSION_CEL_EXPRESSION:通用表达式语言 (CEL) 表达式。如需了解详情,请参阅 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')"使用
gcloud network-security gateway-security-policies rules import命令导入您创建的规则。gcloud network-security gateway-security-policies rules import RULE_NAME \ --location=REGION \ --project=PROJECT_ID \ --source=rule.yaml \ --gateway-security-policy=POLICY_NAME
测试政策配置
您可以再次测试连接,以验证基于网址列表的访问规则是否已正确配置,并且是否正由安全 Web 代理实例主动强制执行。
如需测试连接,请使用以下 curl 命令:
curl -x https://SWP_IP_ADDRESS:SWP_PORT_NUMBER HTTP_TEST_ADDRESS
--proxy-insecure
替换以下内容:
SWP_IP_ADDRESS:Secure Web Proxy 实例的 IP 地址SWP_PORT_NUMBER:Web 代理的端口号,例如443HTTP_TEST_ADDRESS:要测试的地址,例如https://www.example.com。它与url_list中的主机或网址条目相匹配。
如果一切正常,您会收到 200 OK 响应。此响应确认,安全政策规则中引用且列在网址列表中的网址的出站流量已成功通过安全 Web 代理实例。