本指南介绍了如何使用网址列表来定义用户可以访问的网址。
准备工作
完成初始设置步骤。
请验证您是否已安装 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
。在区域列表中,选择要在其中创建政策的区域。
点击创建。
使用您偏好的文本编辑器创建
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 地址。
在证书列表中,选择要用于创建网站代理的证书。
在政策列表中,选择要与网站代理关联的政策。
点击创建。
使用您偏好的文本编辑器创建
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 语法参考。
点击创建。
使用您偏好的文本编辑器创建文件 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 检查。
在应用匹配部分中,指定与请求匹配的条件。
点击创建。
点击添加规则以添加其他规则。
点击创建以创建该政策。
使用首选文本编辑器创建
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
中的主机或网址条目匹配
请求应返回成功响应。