本页面介绍了如何在 Secure Web Proxy 实例中使用网址列表,为出站 Web 流量创建和管理精细的访问权限政策。 网址列表可让您定义可重复使用的集中式网域、主机名和特定网址模式集合,而无需为每个网站创建单独的规则。
使用网址列表的一些主要优势如下:
简化政策管理:您可以在安全政策中使用单个引用来应用大量
allow或deny规则。强制执行精确控制:您可以使用特定语法来匹配整个 网域、子网域或确切的网址路径。这有助于确保您的工作负载只能访问授权的目标。
安全 Web 访问:您可以高效地保护和审核整个环境中的 Web 访问。 Google Cloud
准备工作
完成 初始设置步骤。
验证您是否已安装 Google Cloud CLI 406.0.0 版或更高版本:
gcloud version | head -n1如果您安装的是早期 gcloud CLI 版本,请更新版本:
gcloud components update --version=406.0.0
使用空政策创建 Secure Web Proxy 实例
如需创建 Secure Web Proxy 实例,您必须先创建一个空的安全政策,然后创建一个使用该政策的 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 代理 。
在名称 字段中,输入 Web 代理的名称,例如
myswp。在 说明 字段中,输入 Web 代理的说明, 例如
My new swp。对于路由模式,选择以下选项之一:
- 显式:以显式代理模式部署 Secure Web Proxy 实例。
- 下一个跃点:以下一个跃点模式部署 Secure Web Proxy 实例。
对于区域,选择要在其中创建 Web 代理的区域,例如
us-central1。对于网络,选择要在其中创建 Web 代理的网络。
可选:在 Web 代理 IP 地址 字段中,输入 Secure Web Proxy IP 地址。
您可以输入在先前步骤中创建的子网中的 Secure Web Proxy IP 地址范围内的 IP 地址。 如果您未输入 IP 地址,Secure Web Proxy 实例会自动从所选子网中选择 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 routingMode: ROUTING_MODE addresses: [GATEWAY_IP_ADDRESS] scope: samplescope可选:如需允许来自其他 Google Cloud 区域的客户端应用连接到您的代理,请在创建 Secure Web Proxy 实例时启用全局 访问权限。
在
gateway.yaml文件中,添加allow_global_access字段并将其设置为true。重要提示:您只能在创建 Secure Web Proxy 实例时启用
allow_global_access。您无法稍后配置此设置。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 allow_global_access: true替换以下内容:
GATEWAY_NAME:此 Secure Web Proxy 实例的名称GATEWAY_PORT_NUMBERS:此网关的端口号列表,例如[80,443]CERTIFICATE_URLS:SSL 证书网址列表ROUTING_MODE:指定所需的 Web 代理路由模式:EXPLICIT_ROUTING_MODE:以显式代理模式部署 Secure Web Proxy 实例NEXT_HOP_ROUTING_MODE:以下一个跃点模式部署 Secure Web Proxy 实例
GATEWAY_IP_ADDRESS:可选列表,其中包含您之前在 初始设置步骤中创建的代理 子网中 Secure Web Proxy 实例的 IP 地址如果您选择不列出 IP 地址,请省略该字段,以便 Web 代理为您选择 IP 地址。
使用
gcloud network-services gateways import命令创建 Secure Web Proxy 实例:gcloud network-services gateways import GATEWAY_NAME \ --source=gateway.yaml \ --location=REGION
测试连接性
如需测试连接性,请从虚拟私有云 (VPC) 网络中的任何虚拟机 (VM) 实例使用 curl 命令:
curl -x https://GATEWAY_IP_ADDRESS:PORT_NUMBER https://www.example.com --proxy-insecure
如果一切正常,Secure Web Proxy 实例会返回 403 Forbidden 状态代码。此错误确认了以下内容:
Secure Web Proxy 实例已成功部署,并且正在主动接收流量。
Secure Web Proxy 政策正确地强制执行默认安全态势,即拒绝所有流量,直到您在后续部分中定义特定的
allow规则。
创建和配置网址列表
控制台
在 Google Cloud 控制台中,前往 网址 列表 页面。
点击 创建网址列表。 此时会打开创建网址列表 页面。
在名称 字段中,输入网址列表的名称,例如
example-org-allowed-list。在说明 字段中,输入网址列表的说明,例如
My new URL list。对于区域,选择要在其中创建网址列表, 例如
us-central1。如需添加要匹配的主机、网址或模式列表,请在 网址 列表 字段中输入详细信息,或点击 上传列表 以上传自定义网址列表。如需了解详情,请参阅 UrlList 语法参考。
点击创建 。
Cloud Shell
使用文本编辑器创建
url_list.yaml文件。将以下代码添加到
url_list.yaml文件:name: projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME values: URL_LIST替换以下内容:
PROJECT_ID:您的项目的唯一 ID Google CloudREGION:创建网址列表的区域, 例如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命令 导入您创建的网址列表,以便 Secure Web Proxy 规则可以引用它。gcloud network-security url-lists import URL_LIST_NAME \ --location=REGION \ --project=PROJECT_ID \ --source=url_list.yaml
添加 Secure Web Proxy 规则
控制台
在 Google Cloud 控制台中,前往 SWP 政策 页面。
点击您的政策名称,例如
myswppolicy。点击 添加规则。
对于每条规则,请执行以下操作:
对于优先级,输入规则的数字评估顺序。 这些规则按照从最高到最低的优先级进行评估,其中
0是最高优先级。在名称 字段中,输入规则的名称,例如
allow-org-url-list。在说明 字段中,输入规则的说明。
对于操作,选择以下选项之一:
- 允许:允许与规则匹配的连接请求。
- 拒绝:拒绝与规则匹配的连接请求。
对于状态 字段,选择以下选项之一以强制执行规则:
- 已启用:在 Secure Web Proxy 实例上强制执行规则。
- 已停用:不在 Secure Web Proxy 实例上强制执行规则。
在会话匹配 部分中,指定您在上一部分中创建的网址列表的唯一名称。例如:
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
测试政策配置
您可以再次测试连接性,以验证基于网址列表的访问权限规则是否已正确配置,以及是否由 Secure Web Proxy 实例主动强制执行。
如需测试连接性,请使用以下 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 响应。此响应确认,系统已成功允许通过 Secure Web Proxy 实例访问网址列表中列出且由安全政策规则引用的网址的出站流量。