本页介绍了如何为安全 Web 代理实例启用传输层安全协议 (TLS) 检查。安全 Web 代理提供 TLS 检查服务,让您可以拦截 TLS 流量、检查加密请求并强制执行安全政策。如需详细了解 TLS 检查,请参阅 TLS 检查概览。
准备工作
在将安全 Web 代理实例配置为进行 TLS 检查之前,请完成以下部分中的任务。
启用 Certificate Authority Service
安全 Web 代理使用 Certificate Authority Service 生成用于 TLS 检查的证书。
如需启用 CA Service,请使用以下命令:
gcloud services enable privateca.googleapis.com
创建 CA 池
证书授权机构 (CA) 池是包含多个 CA 的集合,它具有通用证书颁发政策和 Identity and Access Management (IAM) 政策。CA 池能够轮替信任链,而不中断或停止其负载。
您必须先创建 CA 池,然后才能使用 CA Service 创建 CA。本部分将向您介绍完成此任务所需的权限,然后介绍如何创建 CA 池。
为了生成证书,TLS 检查会为每个项目使用单独的服务账号,该账号称为 service-[PROJECT_NUMBER]@gcp-sa-certmanager.iam.gserviceaccount.com
。请确保您已向此服务账号授予使用您的 CA 池的权限。如果撤消此访问权限,TLS 检查功能将停止运行。
如需使用 CA 池项目的 PROJECT_ID
检索 PROJECT_NUMBER
,请使用以下命令:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
如需创建该池,请使用 gcloud privateca pools create
命令并指定从属池 ID、层级、项目 ID 和位置。
gcloud privateca pools create SUBORDINATE_POOL_ID \ --tier=TIER \ --project=PROJECT_ID \ --location=REGION
替换以下内容:
SUBORDINATE_POOL_ID
:CA 池的名称TIER
:CA 层级,devops
或enterprise
我们建议您在
devops
层级创建 CA 池,因为无需跟踪单独颁发的证书。PROJECT_ID
:CA 池项目的 IDREGION
:CA 池的位置
创建从属 CA 池
如果您有多个证书颁发场景,可以为每种场景创建一个从属 CA。您可以在 CA 池中创建从属 CA,并且根 CA 会对该 CA 池中的所有 CA 进行签名。这些证书用于对为 TLS 检查生成的服务器证书进行签名。
如需创建从属 CA 池,请使用以下一种方法。
使用存储在 Certificate Authority Service 中的现有根 CA 创建从属 CA 池
如需生成子 CA,请执行以下操作:
使用外部持有的现有根 CA 创建从属 CA 池
如需生成子 CA,请执行以下操作:
创建根 CA
如果根 CA 不存在,您可以在 CA Service 中创建一个。
如需创建根 CA,请执行以下操作:
创建服务账号
服务账号有助于为 TLS 检查提供必要的权限,而不会影响用户账号或安全 Web 代理实例本身的安全性。
如果您没有服务账号,则必须创建一个服务账号,然后向该服务账号授予所需的权限。
创建服务账号。
gcloud beta services identity create \ --service=networksecurity.googleapis.com \ --project=PROJECT_ID
作为回应,Google Cloud CLI 会创建一个名为
service-[PROJECT_NUMBER]@gcp-sa-networksecurity.iam.gserviceaccount.com
的服务账号。如需使用 CA 池项目的
PROJECT_ID
检索PROJECT_NUMBER
,请使用以下命令:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
为您创建的服务账号授予使用 CA 池生成证书的权限。
gcloud privateca pools add-iam-policy-binding CA_POOL \ --member='serviceAccount:SERVICE_ACCOUNT' \ --role='roles/privateca.certificateManager' \ --location='REGION'
配置安全 Web 代理以进行 TLS 检查
只有在完成准备工作部分中列出的前提条件后,您才能继续执行本部分中的任务。
如需配置 TLS 检查,请完成以下部分中的任务。
创建 TLS 检查政策
控制台
在 Google Cloud 控制台中,进入 TLS 检查政策页面。
在项目选择器菜单中,选择您的项目。
点击创建 TLS 检查政策。
在名称部分,输入名称。
可选:在说明字段中,输入说明。
在区域列表中,选择要为哪个区域创建 TLS 检查政策。
在 CA 池列表中,选择要在其中创建证书的 CA 池。
如果您尚未配置 CA 池,请点击新建池,然后按照创建 CA 池中的说明进行操作。
可选:在最低的 TLS 版本列表中,选择政策支持的最低 TLS 版本。
对于信任配置,请选择以下任一选项:
可选:在加密套件配置文件列表中,选择 TLS 配置文件类型。您可以从以下任意一个值中进行选择:
- 兼容:可让数量最多的客户端(包括仅支持已过时的 TLS 功能的客户端)协商 TLS。
- 新型:支持大量 TLS 功能,可让新型客户端协商 TLS。
- 受限:支持的 TLS 功能较少,旨在满足更严格的合规要求。
自定义:可让您逐个选择 TLS 功能。
在加密套件列表中,选择自定义配置文件支持的加密套件。
点击创建。
gcloud
创建
TLS_INSPECTION_FILE.yaml
文件。将TLS_INSPECTION_FILE
替换为所需的文件名。将以下代码添加到 YAML 文件中以配置所需的 TlsInspectionPolicy:
name: projects/PROJECT_ID/locations/REGION/tlsInspectionPolicies/TLS_INSPECTION_NAME caPool: projects/PROJECT_ID/locations/REGION/caPools/CA_POOL
替换以下内容:
PROJECT_ID
:项目的 IDREGION
:要创建政策的区域TLS_INSPECTION_NAME
:安全 Web 网关 TLS 检查政策的名称CA_POOL
:要用于创建证书的 CA 池的名称
CA 池必须位于同一区域。
导入 TLS 检查政策
导入您在上一步中创建的 TLS 检查政策:
gcloud network-security tls-inspection-policies import TLS_INSPECTION_NAME \
--source=TLS_INSPECTION_FILE.yaml \
--location=REGION
将 TLS 检查政策添加到安全政策
控制台
创建 Web 代理政策
在 Google Cloud 控制台中,前往网络安全页面。
点击安全 Web 代理。
点击政策标签页。
点击创建政策。
输入您要创建的政策的名称,例如
myswppolicy
。输入政策的说明,例如
My new swp policy
。在区域列表中,选择要创建安全 Web 代理政策的区域。
如需配置 TLS 检查,请选择配置 TLS 检查。
在 TLS 检查政策列表中,选择您创建的 TLS 检查政策。
如果要为政策创建规则,请点击继续,然后点击添加规则。如需了解详情,请参阅创建安全 Web 代理规则。
点击创建。
创建安全 Web 代理规则
在 Google Cloud 控制台中,前往网络安全页面。
点击安全 Web 代理。
在项目选择器菜单中,选择您的组织 ID 或包含政策的文件夹。
点击您的政策名称。
点击添加规则。
填充规则字段:
- 名称
- 说明
- 状态
- 优先级:规则的数字评估顺序。这些规则按照从最高到最低的优先级进行评估,其中
0
是最高优先级。 - 在操作部分中,指定是允许(允许)还是拒绝(拒绝)与规则匹配的连接。
- 在会话匹配部分,指定用于匹配会话的条件。如需详细了解
SessionMatcher
的语法,请参阅 CEL 匹配器语言参考文档。 - 如需启用 TLS 检查,请选择启用 TLS 检查。
- 在应用匹配部分中,指定与请求匹配的条件。如果您未为 TLS 检查启用规则,则请求只能匹配 HTTP 流量。
- 点击创建。
点击添加规则以添加其他规则。
点击创建以创建该政策。
设置 Web 代理
在 Google Cloud 控制台中,前往网络安全页面。
点击安全 Web 代理。
点击网络代理标签页。
点击设置网络代理。
输入您要创建的网络代理的名称,例如
myswp
。输入 Web 代理的说明,例如
My new swp
。在区域列表中,选择要创建网站代理的区域。
在网络列表中,选择要创建 Web 代理的网络。
在子网列表中,选择要创建 Web 代理的子网。
输入网站代理 IP 地址。
在证书列表中,选择要用于创建网站代理的证书。
在政策列表中,选择要与网站代理关联的政策。
点击创建。
Cloud Shell
创建
policy.yaml
文件:description: basic Secure Web Proxy policy name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/policy1 tlsInspectionPolicy: projects/PROJECT_ID/locations/REGION/tlsInspectionPolicies/TLS_INSPECTION_NAME
创建安全 Web 代理政策:
gcloud network-security gateway-security-policies import policy1 \ --source=policy.yaml --location=REGION
创建
rule.yaml
文件:name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/policy1/rules/allow-example-com description: Allow example.com enabled: true priority: 1 basicProfile: ALLOW sessionMatcher: host() == 'example.com' applicationMatcher: request.path.contains('index.html') tlsInspectionEnabled: true
创建安全政策规则:
gcloud network-security gateway-security-policies rules import allow-example-com \ --source=rule.yaml \ --location=REGION \ --gateway-security-policy=policy1
如需将 TLS 检查政策附加到现有安全政策,请创建
POLICY_FILE
.yaml 文件。将POLICY_FILE
替换为您的文件名。description: My Secure Web Proxy policy name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/POLICY_NAME tlsInspectionPolicy: projects/PROJECT_ID/locations/REGION/tlsInspectionPolicies/TLS_INSPECTION_NAME