创建 EKM 连接

本页面介绍了如何设置 Cloud External Key Manager (Cloud EKM),以便连接到 通过 虚拟私有云 (VPC) 网络

您可以在 Cloud KMS 位置 支持通过 VPC 使用 EKM。如需了解详情,请参阅 Cloud KMS 位置 页面

术语

  • EKM 连接

    Cloud KMS 资源,用于配置与您的 外部密钥管理器。在 Google Cloud 控制台中,这称为 通过 VPC 连接的 EKM

  • VPC 项目

    包含用于连接的 VPC 资源的项目 您的外部密钥管理器。

  • 关键项目

    保存 EKM 连接资源和 Cloud EKM 密钥的项目 Cloud KMS。密钥项目可以与 VPC 相同 项目,但这不是必需的。

  • 加密空间

    外部密钥管理合作伙伴中用于存储您的资源的容器。你的加密货币空间 由唯一的加密空间路径标识。加密空间的格式 具体路径因外部密钥管理合作伙伴而异,例如 v0/cryptospaces/YOUR_UNIQUE_PATH.

准备工作

完成以下步骤后,您就可以开始使用 Cloud EKM 了 密钥来保护您的数据

创建新项目

  1. 在 Google Cloud 控制台中,前往“管理资源”页面。

    转到“管理资源”页面

  2. 创建新的 Google Cloud 项目或选择现有项目。

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 您可以详细了解 Cloud EKM 价格

启用 Cloud KMS

  1. 为项目启用 Cloud Key Management Service API。

    启用 Cloud Key Management Service API

  2. 请记下项目的 Cloud EKM 服务账号。在以下示例中,将 PROJECT_NUMBER 替换为您的 Google Cloud 项目的项目编号。这个 您每次使用 Google Cloud 控制台创建 Cloud EKM 密钥。

    service-PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com
    

确保 gcloud CLI 是最新版本

如果您打算使用 Google Cloud CLI,请确保使用 以下命令:

gcloud CLI

gcloud components update

准备 VPC 网络

设置 VPC 网络时,您有两种选择:

默认情况下,新项目包含一个自动模式网络 预先填充了防火墙规则。 如果 VPC 网络不用于生产环境, 使用默认自动模式网络是最快的启动方式。

如果您的外部密钥管理器在本地运行,您将通过 混合连接,则应使用自定义模式 因为它提供了对子网 IP 地址范围的控制

请按照以下步骤设置您的 VPC:

  1. 启用专用 Google 访问通道

    外部密钥管理器必须验证每个密钥中包含的 OIDC 令牌 请求。要验证令牌,需要检索 OAuth2 公钥 (来自 www.googleapis.com 域名)。如果外部密钥管理器运行 且无法通过互联网访问(例如,没有 外部 IP 或被防火墙阻止),请按照 配置专用 Google 访问通道

  2. IP 范围 35.199.192.0/19 的防火墙配置

    来自 Cloud EKM 的请求将来自此范围。同时创建 入站和出站允许 TCP 的防火墙规则 外部密钥管理器正在监听的端口。

设置混合连接

如果外部密钥管理器在本地运行,请使用 混合连接解决方案 将 VPC 与您的本地网络相连。完成 设置连接,请执行以下额外步骤:

  1. 启用专用 Google 访问通道

    外部密钥管理器必须验证每个请求中包含的 OIDC 令牌。要验证令牌,它需要 从 www.googleapis.com 域名中检索 OAuth2 公钥。如果 外部密钥管理器在本地运行,且无法通过互联网访问,请遵循 关于 为本地主机配置专用 Google 访问通道

  2. IP 范围 35.199.192.0/19 的防火墙配置

    来自 Cloud EKM 的请求将来自此范围。配置您的 内部部署网络防火墙或类似设备,以允许 外部密钥管理器正在监听的端口。

  3. 确保您的 VPC 具有到 IP 范围 35.199.192.0/19 的返回路由

    您的本地网络必须有 35.199.192.0/19 的路由 目标。有关如何满足此要求的信息,请参阅 返回本地目标的路由策略

返回本地目标的路由策略

  • 对于使用静态路由的 Cloud VPN 隧道,请在以下位置手动创建路由: 目标为 35.199.192.0/19 且其 下一个跃点是 Cloud VPN 隧道对于 Cloud VPN 隧道 使用基于政策的路由的防火墙规则,请将 Cloud VPN 的本地配置 流量选择器和本地 VPN 网关的 远程流量选择器以包含“35.199.192.0/19”。

  • 对于使用动态路由的 Cloud VPN 隧道, Cloud Interconnect,为以下各项配置自定义通告模式: 管理 35.199.192.0/19 的 Cloud Router 路由器的 BGP 会话 连接隧道或 VLAN 连接。

设置外部密钥管理器

按照 EKM 提供商的说明操作,以设置 EKM。

设置您的加密空间

如果您在合作伙伴管理的 EKM 安排中使用 Cloud EKM, 已在合作伙伴配置过程中为您完成这些步骤 过程。

如果您的 EKM 提供方与 Cloud KMS 中的 EKM 密钥管理兼容,请按以下设置 和配置步骤:

  • 为 Cloud KMS 中 EKM。

  • 向 Cloud KMS 服务账号授予对加密空间的访问权限 以及在其中创建的密钥

  • 设置 Key Access Justifications 政策,以指定哪些访问理由 是允许还是拒绝。

其中每个步骤的具体过程取决于您的 EKM。有关 信息,请参阅 EKM 提供方的文档。

创建 Service Directory 服务端点

创建和配置 Service Directory 服务端点 在指向专用 IP 地址的 VPC 项目中, 外部密钥管理器的端口如果您在 Google Cloud 控制台中使用负载均衡器, 多个 EKM 副本的前面,请使用负载均衡器的 IP 地址和端口。 确保 Service Directory 服务端点的 network 字段是 填充。

授权 Cloud EKM 访问您的 VPC

对于每个密钥项目,您必须授权 Cloud EKM 访问您的 即使密钥项目和 VPC 项目相同。授予访问权限后,密钥项目中的密钥可以 请在您的 VPC 项目中使用 VPC。

  1. 确保项目存在 Cloud EKM 服务账号。

    gcloud CLI

    gcloud beta services identity create \
      --service=cloudkms.googleapis.com \
      --project=KEY_PROJECT_ID
    
  2. 授予 servicedirectory.viewerservicedirectory.pscAuthorizedService(在您的 VPC 项目 service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com 如需有关获取项目 ID 和编号的帮助,请参阅 创建和管理项目

    gcloud CLI

    gcloud projects add-iam-policy-binding VPC_PROJECT_ID \
      --member='serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com' \
      --role='roles/servicedirectory.viewer'
    
    gcloud projects add-iam-policy-binding VPC_PROJECT_ID \
      --member='serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com' \
      --role='roles/servicedirectory.pscAuthorizedService'
    

创建 EKM 连接

如需将外部密钥管理器连接到 Cloud EKM,请创建一个 您的密钥项目中的 EKM 连接

控制台

  1. 在 Google Cloud 控制台中,前往 KMS 基础架构页面。

    转到 KMS 基础架构

  2. 点击 创建连接

  3. 对于连接名称,输入连接的名称。

  4. 对于区域,请选择 EKM 连接的位置。不限 与此连接关联的 Cloud KMS 密钥必须位于同一 作为连接的位置

  5. 服务资源 ID (self_link) 字段中,输入 在 创建 Service Directory 服务端点部分。 Service Directory 服务必须与 连接。

  6. 主机名字段中,添加外部密钥管理器的主机名。

  7. 证书中,点击添加证书以上传一个或多个证书 您的外部密钥管理器的 X.509 服务器证书。证书必须 采用 DER 格式。

  8. 对于 EKM 管理模式,请选择手动以使用 EKM 连接进行 手动管理的外部密钥,或选择 Cloud KMS 以使用 EKM 用于协调外部密钥的连接。

  9. 如果您为 EKM 管理模式选择了 Cloud KMS,则 加密空间路径字段,然后输入您的 EKM。

  10. 可选。要将 EKM 连接设置为此 项目和位置,请选中 Set connection as the default 复选框。 如果当前已将另一个 EKM 连接设置为 此项目和位置,此 EKM 连接会替换现有 默认值。

  11. 点击创建

gcloud

如需在命令行上使用 Cloud KMS,请先安装或升级到最新版本的 Google Cloud CLI

如需为手动管理的外部密钥创建 EKM 连接,请运行 以下命令:

gcloud beta kms ekm-connections create EKM_CONNECTION \
    --location LOCATION \
    --service-directory-service SERVICE_DIRECTORY_SERVICE \
    --hostname HOSTNAME \
    --server-certificates-files SERVER_CERTIFICATE_FILES \
    --key-management-mode manual

替换以下内容:

  • EKM_CONNECTION:EKM 连接的名称。
  • LOCATION:您要创建的 Cloud KMS 位置 EKM 连接。与此关联的任何 Cloud KMS 密钥 必须与连接位于同一位置。
  • SERVICE_DIRECTORY_SERVICE: 适用于您的连接的 Service Directory 服务。
  • HOSTNAME:外部密钥管理器的主机名。
  • SERVER_CERTIFICATE_FILES:以英文逗号分隔的文件列表 包含外部密钥管理器的 X.509 服务器证书。 证书必须采用 DER 格式。

如需为协调的外部密钥创建 EKM 连接,请运行 以下命令:

gcloud beta kms ekm-connections create EKM_CONNECTION \
    --location LOCATION \
    --service-directory-service SERVICE_DIRECTORY_SERVICE \
    --hostname HOSTNAME \
    --server-certificates-files SERVER_CERTIFICATE_FILES \
    --key-management-mode cloud-kms \
    --crypto-space-path CRYPTO_SPACE_PATH

替换以下内容:

  • EKM_CONNECTION:EKM 连接的名称。
  • LOCATION:您要创建的 Cloud KMS 位置 EKM 连接。与此关联的任何 Cloud KMS 密钥 必须与连接位于同一位置。
  • SERVICE_DIRECTORY_SERVICE: 适用于您的连接的 Service Directory 服务。
  • HOSTNAME:外部密钥管理器的主机名。
  • SERVER_CERTIFICATE_FILES:以英文逗号分隔的文件列表 包含外部密钥管理器的 X.509 服务器证书。 证书必须采用 DER 格式。
  • CRYPTO_SPACE_PATH:EKM 提供方提供的加密空间路径。

如需了解所有标志和可能值,请使用 --help 标志运行命令。

API

这些示例使用 curl 作为 HTTP 客户端来演示如何使用 API。如需详细了解访问权限控制,请参阅访问 Cloud KMS API

如需为协调的外部密钥创建 EKM 连接,请运行 以下命令:

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ekmConnections" \
    --request "POST" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --header "x-goog-user-project: PROJECT_ID" \
    --data '{
      "name": "EKM_CONNECTION",
      "serviceResolvers": [
        {
          "serviceDirectoryService": "SERVICE_DIRECTORY_SERVICE",
          "hostname": "HOSTNAME",
          "serverCertificates": [
            {
              SERVER_CERTIFICATES
            }
          ]
        }
      ]
      "keyManagementMode": "CLOUD_KMS",
      "cryptoSpacePath": "CRYPTO_SPACE_PATH"
    }'

替换以下内容:

  • PROJECT_ID:您要在其中创建 EKM 连接。
  • LOCATION:要在其中创建 EKM 连接。
  • EKM_CONNECTION:要用于 EKM 连接的名称。
  • SERVER_CERTIFICATES:最多包含 10 个 Certificate 对象的列表, 代表叶服务器证书
  • HOSTNAME:外部密钥管理器的主机名。
  • CRYPTO_SPACE_PATH:EKM 提供方提供的加密空间路径。

如需为手动管理的外部密钥创建 EKM 连接,请运行 以下命令:

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ekmConnections" \
    --request "POST" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --header "x-goog-user-project: PROJECT_ID" \
    --data '{
      "name": "EKM_CONNECTION",
      "serviceResolvers": [
        {
          "serviceDirectoryService": "SERVICE_DIRECTORY_SERVICE",
          "hostname": "HOSTNAME",
          "serverCertificates": [
            {
              SERVER_CERTIFICATES
            }
          ]
        }
      ]
    }'

替换以下内容:

  • PROJECT_ID:您要在其中创建 EKM 连接。
  • LOCATION:要在其中创建 EKM 连接。
  • EKM_CONNECTION:要用于 EKM 连接的名称。
  • SERVER_CERTIFICATES:最多包含 10 个 Certificate 的列表 对象 代表叶服务器证书
  • HOSTNAME:外部密钥管理器的主机名。

如需了解详情,请参阅 EkmConnection.create API 文档

证书状态

为 EKM 连接上传证书后,您可以查看 EKM 连接的整体证书状态以及每个证书的状态 证书授权中心 KMS 基础架构页面

EKM 连接的证书状态列中会显示 每个连接如果 EKM 连接的状态不是有效,我们会 建议更新 EKM 连接上的证书。

EKM 连接和各个证书都可能处于以下状态:

  • 有效:证书有效,尚未临近其失效日期。
  • 将在 30 天内过期:证书有效,但有有效期 日期。
  • 已过期:证书已过期且不再有效。我们建议 更新所有已过期的证书。
  • 尚未生效:证书尚未生效。如果将 证书的开始日期是将来的日期。

如果您的证书不再有效,请在以下位置更新您的 EKM 连接: Google Cloud 控制台。

控制台

  1. 在 Google Cloud 控制台中,前往 KMS 基础架构页面。

    转到 KMS 基础架构

  2. 点击通过 VPC 连接的 EKM 的名称 需要更新。

  3. 点击修改连接

  4. 点击添加证书以上传一个或多个 X.509 服务器证书 外部密钥管理器证书必须采用 DER 格式。

  5. 请移除已过期的证书。将鼠标悬停在已过期的证书上,然后 选择右侧的删除图标。

  6. 点击更新连接,通过 VPC 连接更新 EKM。

将 EKM 连接设为默认连接

您可以将 EKM 连接设置为给定项目的默认连接 和位置。为项目和位置设置默认 EKM 连接后, 在该位置的密钥环中创建的新 Cloud EKM by VPC 密钥 使用指定的 EKM 连接,除非选择了另一个 EKM 连接。

如需将 EKM 连接设置为其项目和位置的默认连接,请完成 执行下列步骤:

控制台

  1. 在 Google Cloud 控制台中,前往 KMS 基础架构页面。

    转到 KMS 基础架构

  2. 点击要设为默认的 EKM 连接。

  3. 点击修改连接

  4. 默认连接下,选择将连接设置为默认连接 为 LOCATION 复选框。

  5. 点击更新连接

gcloud CLI

gcloud beta kms ekm-config update
  --location=LOCATION
  --default-ekm-connection=projects/PROJECT_ID/locations/LOCATION/ekmConnections/DEFAULT_EKM_CONNECTION

替换以下内容:

  • LOCATION:要为其设置的 Cloud KMS 默认 EKM 连接。
  • PROJECT_ID:您要为其设置的项目的名称 默认 EKM 连接。
  • DEFAULT_EKM_CONNECTION: 。该 EKM 连接必须与 LOCATION 中指定的位置匹配。

API

如需为某个位置设置默认 EKM 连接,请使用 EkmConfig.patch 方法:

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ekmConfig" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{"defaultEkmConnection": "projects/PROJECT_ID/locations/LOCATION/ekmConnections/DEFAULT_EKM_CONNECTION"}'

替换以下内容:

  • PROJECT_ID:您要设置的项目的 ID 默认 EKM 连接。
  • LOCATION:要为其设置的 Cloud KMS 默认 EKM 连接。
  • DEFAULT_EKM_CONNECTION:EKM 的名称 。 EKM 连接的位置必须与 LOCATION.

如果已将另一个 EKM 连接设置为此位置的默认连接,则 选定的 EKM 连接会将其替换为默认连接。在一个 EKM 连接中 是给定项目和位置的默认值。

后续步骤