启用 TLS 检查

本页面介绍了如何启用传输层安全协议 (TLS) 检查 安全 Web 代理实例。

准备工作

在配置安全 Web 代理以进行 TLS 检查之前,请完成以下部分中的任务。

启用 CAS

安全 Web 代理的用途 证书授权机构服务 (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 检查将停止运行。

如需创建池,请使用 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 层级,可以为 devopsenterprise

    我们建议您在 devops 层级中创建 CA 池,因为 也不必跟踪单独颁发的证书。

  • PROJECT_ID:CA 池项目的 ID

  • REGION:CA 池的位置

创建从属 CA 池

您可以创建从属 CA 池,由根 CA 签署所有 该池中的 CA。这些证书用于为服务器签名 为 TLS 检查生成的证书。

如需创建从属池,请使用以下任一方法。

使用存储在 CAS 中的现有根 CA 创建从属 CA 池

如需生成从属 CA,请执行以下操作:

  1. 创建 CA 池
  2. 在 CA 池中创建从属 CA

使用外部持有的现有根 CA 创建从属 CA 池

如需生成从属 CA,请执行以下操作:

  1. 创建 CA 池
  2. 创建由外部根 CA 签名的从属 CA

创建根 CA

如果您还没有根 CA,可以在 CAS 中创建一个。 如需创建根 CA,请执行以下操作:

  1. 创建根 CA
  2. 按照使用存储在 CAS 中的现有根 CA 创建从属 CA 池中的步骤操作。

如需详细了解 CA 池,请参阅 Certificate Authority Service 文档

创建服务账号

如果您没有服务账号,则必须创建一个服务账号并授予所需的权限。

  1. 创建服务账号:

    gcloud beta services identity create \
        --service=networksecurity.googleapis.com \
        --project=PROJECT_ID
    

    作为回应,Google Cloud CLI 会创建一个名为 service-{project ID}@gcp-sa-networksecurity.iam.gserviceaccount.com 的服务账号。

  2. 为您创建的服务账号授予使用 CA 池生成证书的权限:

    gcloud privateca pools add-iam-policy-binding CA_POOL \
        --member='serviceAccount:SERVICE_ACCOUNT' \
        --role='roles/privateca.certificateManager' \
        --location='REGION'
    

为 TLS 检查配置安全 Web 代理

您必须先完成此部分中的任务,然后才能继续执行 准备工作部分列出的前提任务。

如需配置 TLS 检查,请完成以下部分中的任务。

创建 TLS 检查政策

  1. 创建文件 TLS_INSPECTION_FILE.yaml。将 将 TLS_INSPECTION_FILE 替换为您的所需文件名。

  2. 将以下代码添加到 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 代理政策

  1. 在 Google Cloud 控制台中,前往网络安全页面。

    前往“网络安全”

  2. 点击安全 Web 代理

  3. 点击政策标签页。

  4. 点击创建政策

  5. 为您要创建的政策输入名称。 例如 myswppolicy

  6. 输入政策说明,例如 My new swp policy

  7. 区域列表中,选择要创建安全 Web 代理政策的区域。

  8. 如需配置 TLS 检查,请选择配置 TLS 检查

  9. TLS 检查政策列表中,选择“TLS” 您创建的检查政策。

  10. 如果要为政策创建规则,请点击 继续,然后点击添加规则。有关详情,请参阅 创建安全 Web 代理规则

  11. 点击创建

创建 Web 代理规则

  1. 在 Google Cloud 控制台中,前往网络安全页面。

    前往“网络安全”

  2. 点击安全 Web 代理

  3. 在项目选择器菜单中,选择您的组织 ID 或包含政策的文件夹。

  4. 点击您的政策名称。

  5. 点击添加规则

  6. 填充规则字段:

    1. 名称
    2. 说明
    3. 状态
    4. 优先级:规则的数字评估顺序。这些规则 按优先级从高到低进行评估,其中 0 为最高 优先级。
    5. 操作部分,指定 规则是允许 (Allow) 还是拒绝 (Deny)。
    6. “会话匹配”部分中,指定 来匹配会话如需详细了解 SessionMatcher,请参阅 CEL 匹配器语言参考文档
    7. 如需启用 TLS 检查,请选择启用 TLS 检查
    8. 应用匹配部分,指定 来匹配请求如果您未为 TLS 检查启用规则,则请求只能匹配 HTTP 流量。
    9. 点击创建
  7. 点击添加规则以添加其他规则。

  8. 点击创建以创建该政策。

设置 Web 代理

  1. 在 Google Cloud 控制台中,前往网络安全页面。

    前往“网络安全”

  2. 点击安全 Web 代理

  3. 点击 Web 代理标签页。

  4. 点击设置 Web 代理

  5. 输入您要创建的网络代理的名称,例如 myswp

  6. 输入 Web 代理的说明,例如 My new swp

  7. 区域列表中,选择您要在哪个区域 创建 Web 代理。

  8. 网络列表中,选择要创建 Web 代理的网络。

  9. 子网列表中,选择要添加到的子网 创建 Web 代理。

  10. 输入网站代理 IP 地址。

  11. 证书列表中,选择所需的证书 用于创建 Web 代理

  12. 政策列表中,选择您创建的政策 您要将 Web 代理与其相关联。

  13. 点击创建

Cloud Shell

  1. 创建文件 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
    
  2. 创建安全 Web 代理政策:

      gcloud network-security gateway-security-policies import policy1 \
          --source=policy.yaml --location=REGION
    
  3. 创建文件 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
    
  4. 创建安全政策规则:

      gcloud network-security gateway-security-policies rules import allow-example-com \
          --source=rule.yaml \
          --location=REGION \
          --gateway-security-policy=policy1
    
  5. 如需将 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
    

后续步骤