本页介绍了如何为安全 Web 代理实例启用传输层安全协议 (TLS) 检查。
准备工作
在配置安全 Web 代理以进行 TLS 检查之前,请完成以下部分中的任务。
启用 CAS
安全 Web 代理使用 Certificate Authority Service (CAS) 生成用于 TLS 检查的证书。
如需启用 CAS,请使用以下命令:
gcloud services enable privateca.googleapis.com
创建 CA 池
您必须先创建证书授权机构 (CA) 池,然后才能使用 CAS 创建 CA。本部分将向您介绍完成此任务所需的权限,然后介绍如何创建 CA 池。
为了生成证书,TLS 检查会为每个项目使用一个单独的服务账号,该账号名为 service-{project ID}@gcp-sa-certmanager.iam.gserviceaccount.com
。请确保您已向此服务账号授予使用您的 CA 池的权限。如果撤消此访问权限,TLS 检查将停止运行。
执行此任务所需的权限
如需执行此任务,您必须已获得以下权限或 IAM 角色。
权限
networksecurity.tlsInspectionPolicies.create
networksecurity.tlsInspectionPolicies.get
networksecurity.tlsInspectionPolicies.list
networksecurity.tlsInspectionPolicies.delete
networksecurity.tlsInspectionPolicies.update
角色
- Compute Network Admin (
roles/compute.networkAdmin
) - Certificate Manager Editor (
roles/certificatemanager.editor
) - 可选:Security Policy Admin (
roles/compute.orgSecurityPolicyAdmin
)
如需创建该池,请使用 gcloud privateca pools create
命令并指定从属池 ID、层级、项目 ID 和位置。
gcloud privateca pools createSUBORDINATE_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 签名。这些证书用于对为 TLS 检查生成的服务器证书进行签名。
如需创建子级广告资源池,请使用以下任一方法。
使用 CAS 中存储的现有根 CA 创建从属 CA 池
如需生成子 CA,请执行以下操作:
使用外部持有的现有根 CA 创建从属 CA 池
如需生成子 CA,请执行以下操作:
创建根 CA
如果您还没有根 CA,则可以在 CAS 中创建一个。如需创建根 CA,请执行以下操作:
- 创建根 CA。
- 请按照使用 CAS 中存储的现有根 CA 创建从属 CA 池中的步骤操作。
如需详细了解 CA 池,请参阅 Certificate Authority Service 文档。
创建服务账号
如果您没有服务账号,则必须创建一个服务账号并授予所需的权限。
创建服务账号:
gcloud beta services identity create \ --service=networksecurity.googleapis.com \ --project=
PROJECT_ID 作为回应,Google Cloud CLI 会创建一个名为
service-{project ID}@gcp-sa-networksecurity.iam.gserviceaccount.com
的服务账号。为您创建的服务账号授予使用 CA 池生成证书的权限:
gcloud privateca pools add-iam-policy-binding
CA_POOL \ --member='serviceAccount:SERVICE_ACCOUNT ' \ --role='roles/privateca.certificateManager' \ --location='REGION '
配置安全 Web 代理以进行 TLS 检查
只有在完成准备工作部分中列出的前提条件任务后,您才能继续执行本部分中的任务。
如需配置 TLS 检查,请完成以下部分中的任务。
创建 TLS 检查政策
创建
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
:项目编号REGION
:要在其中创建政策的区域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 代理的子网。
输入网站代理 IP 地址。
在证书列表中,选择要用于创建网站代理的证书。
在政策列表中,选择要与网站代理关联的政策。
点击创建。
创建
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