本指南介绍了如何使用网址列表来定义用户可以访问的网址。
准备工作
完成初始设置步骤。
请验证您是否已安装 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
错误,这是预期行为。
创建网址列表
如需创建网址列表并添加规则,请完成以下部分中的任务。
创建和配置网址列表
控制台
在 Google Cloud 控制台中,前往网络安全页面。
点击安全 Web 代理。
点击网址列表标签页。
点击创建网址列表。
输入要创建的网址列表的名称,例如
myurllist
。输入网址列表的说明,例如
My new URL list
。在地区列表中,选择要创建网址列表的区域。
点击上传列表,上传要匹配的主机、网址或模式的列表。如需了解详情,请参阅 UrlList 语法参考。
点击创建。
Cloud Shell
使用您偏好的文本编辑器创建文件 URL_LIST_FILE
.yaml. Replace
URL_LIST_FILE`,并为其指定所需的文件名。name: projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME values: URL_LIST
替换以下内容:
PROJECT_ID
:您的项目编号REGION
:此网址列表适用的区域URL_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 中具有特殊含义。因此,您必须在包含*
字符的网址周围添加引号。添加网址列表,以便安全 Web 代理规则引用该列表:
gcloud network-security url-lists import URL_LIST_NAME \ --location=REGION \ --project=PROJECT_ID \ --source=URL_LIST_FILE.yaml
添加规则
控制台
在 Google Cloud 控制台中,前往网络安全页面。
点击安全 Web 代理。
在项目选择器菜单中,选择您的组织 ID 或包含政策的文件夹。
点击您的政策名称。
点击添加规则。
填充规则字段:
- 名称
- 说明
- 状态
- 优先级:规则的数字评估顺序。这些规则按照从最高到最低的优先级进行评估,其中
0
是最高优先级。 - 在操作部分中,指定是允许(允许)还是拒绝(拒绝)与规则匹配的连接。
在会话匹配部分,指定您之前创建的网址列表的名称。例如:
sessionMatcher: "inUrlList(host(), 'projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME')"
如需启用 TLS 检查,请选择启用 TLS 检查。
在应用匹配部分中,指定与请求匹配的条件。
点击创建。
点击添加规则以添加其他规则。
点击创建以创建该政策。
Cloud Shell
使用首选文本编辑器创建
RULE_FILE
.yaml 文件。将RULE_FILE
替换为所需的文件名。name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME basicProfile: ALLOW enabled: true priority: PRIORITY_VALUE description: RULE_DESCRIPTION sessionMatcher: SESSION_CEL_EXPRESSION applicationMatcher: APPLICATION_CEL_EXPRESSION
替换以下内容:
PROJECT_ID
:您的项目编号REGION
:此规则适用的区域POLICY_NAME
:安全 Web 代理实例使用的现有GatewaySecurityPolicy
的名称RULE_NAME
:您要创建的GatewaySecurityPolicyRule
的名称PRIORITY_VALUE
:此规则的优先级值;数字越小,优先级越高RULE_DESCRIPTION
:您要创建的政策的说明SESSION_CEL_EXPRESSION
:会话的通用表达式语言 (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')"
使用您之前创建的网址列表添加安全 Web 代理规则:
gcloud network-security gateway-security-policies rules import RULE_NAME \ --location=REGION \ --project=PROJECT_ID \ --source=RULE_FILE.yaml \ --gateway-security-policy=POLICY_NAME
测试连接性
如需测试连接,请使用以下 curl
命令:
curl -x https://SWP_IP_ADDRESS:SWP_PORT_NUMBER HTTP_TEST_ADDRESS
--proxy-insecure
替换以下内容:
SWP_IP_ADDRESS
:您的网络代理的 IP 地址SWP_PORT_NUMBER
:网站代理的端口号,例如443
HTTP_TEST_ADDRESS
:要测试的地址(例如https://www.example.com
),该地址与URL_LIST
中的主机或网址条目匹配
请求应返回成功响应。