客户管理的加密密钥 (CMEK)

本文档概述了如何使用 Cloud Key Management Service (Cloud KMS) 来管理客户管理的加密密钥 (CMEK)。使用 Cloud KMS CMEK,您将获得用于保护Google Cloud中静态数据的密钥的所有权和控制权。

CMEK 与 Google-owned and Google-managed encryption keys的比较

您创建的 Cloud KMS 密钥是客户管理的密钥。 使用您的密钥的Google Cloud 服务称为具有 CMEK 集成。 您可以直接管理这些 CMEK,也可以通过 Cloud KMS Autokey 进行管理。 以下因素可区分 Google Cloud的默认静态加密与客户管理的密钥:

密钥类型 Cloud KMS Autokey 客户管理的 Cloud KMS(手动) Google-owned and Google-managed encryption key (Google 默认加密方式)

可以查看密钥元数据

密钥所有权1

客户

客户

Google

可以管理2密钥并控制3密钥

密钥的创建和分配是自动化的。完全支持客户手动控制。

客户,仅限手动控制

Google

支持客户管理的密钥的监管要求

密钥共享

每位客户专用

每位客户专用

来自多个客户的数据通常由共享密钥加密密钥 (KEK) 进行保护。

控制密钥轮替

CMEK 组织政策

记录对加密密钥的管理和数据访问情况

通过加密实现逻辑数据分离

价格

不定

不定

免费

1 密钥所有者表示谁拥有密钥的权利。您拥有的密钥受到严格的访问权限限制,或者 Google 无法访问这些密钥。

2 管理密钥包括以下任务:

  • 创建密钥。
  • 选择密钥的保护级别。
  • 分配管理密钥的权限。
  • 控制对密钥的访问权限。
  • 控制密钥的使用情况。
  • 设置和修改密钥的轮替周期,或触发密钥轮替。
  • 更改密钥状态。
  • 销毁密钥版本。

3 对密钥进行控制意味着对密钥的类型和使用方式进行控制,检测差异,并根据需要规划纠正措施。您可以控制密钥,但可以将密钥的管理权委托给第三方。

使用 Google-owned and Google-managed encryption keys的默认加密

Google Cloud 中存储的所有静态数据,是使用 Google Cloud 用于自己的加密数据的同一强化密钥管理系统进行加密的。这些密钥管理系统提供严格的密钥访问控制和审核机制,并使用 AES-256 加密标准加密用户的静态数据。 Google Cloud 拥有并控制用于加密您的数据的密钥。您无法查看或管理这些密钥,也无法查看密钥使用情况日志。来自多个客户的数据可能使用相同的密钥加密密钥 (KEK)。无需进行任何设置、配置或管理。

如需详细了解 Google Cloud中的默认加密,请参阅默认静态加密

客户管理的加密密钥 (CMEK)

客户管理的加密密钥是指您拥有的加密密钥。借助此功能,您可以更好地控制用于在受支持的 Google Cloud 服务中加密静态数据的密钥,并为您的数据提供加密边界。 您可以直接在 Cloud KMS 中管理 CMEK,也可以使用 Cloud KMS Autokey 自动执行预配和分配。

支持 CMEK 的服务具有 CMEK 集成。CMEK 集成是一种服务器端加密技术,可用于取代Google Cloud的默认加密。设置 CMEK 后,加密和解密资源的操作由资源服务代理处理。由于与 CMEK 集成的服务会处理对加密资源的访问,因此加密和解密可以透明地进行,无需最终用户付出任何努力。访问资源的体验与使用 Google Cloud的默认加密功能类似。如需详细了解 CMEK 集成,请参阅与 CMEK 集成的服务可提供哪些功能

您可以为每个密钥使用不限数量的密钥版本。

如需了解某项服务是否支持 CMEK,请参阅支持的服务列表

使用 Cloud KMS 会产生与密钥版本数量以及使用这些密钥版本进行的加密操作相关的费用。 如需详细了解价格,请参阅 Cloud Key Management Service 价格。无需最低购买量或承诺。

使用 Cloud KMS Autokey 实现的“客户管理的加密密钥”(CMEK)

Cloud KMS Autokey 通过自动执行预配和分配来简化 CMEK 的创建和管理。借助 Autokey,系统会在创建资源时按需生成密钥环和密钥,并自动向使用密钥执行加密和解密操作的服务代理授予必要的 Identity and Access Management (IAM) 角色。

使用 Autokey 生成的密钥有助于您始终遵循数据安全方面的业界标准和建议做法,包括密钥-数据位置对齐、密钥专属性、多租户硬件 (HSM) 保护级别、密钥轮替时间表和职责分离。Autokey 会创建遵循一般准则和特定于资源类型的准则的密钥,以用于与 Autokey 集成的 Google Cloud 服务。使用 Autokey 创建的密钥与具有相同设置的其他 Cloud HSM 密钥的运作方式相同,包括支持客户管理密钥的监管要求。如需详细了解 Autokey,请参阅 Autokey 概览

何时使用客户管理的加密密钥

您可以在兼容的服务中使用手动创建的 CMEK 或由 Autokey 创建的密钥,以帮助您实现以下目标:

  • 拥有自己的加密密钥。

  • 控制和管理加密密钥,包括选择位置、保护级别、创建、访问权限控制、轮替、使用和销毁。

  • 在 Cloud KMS 中生成密钥材料,或导入在 Google Cloud外部维护的密钥材料。

  • 设置有关密钥必须在何处使用的政策。

  • 在员工离职或需要修正安全事件时,有选择地删除受密钥保护的数据(加密粉碎)。

  • 创建和使用客户独有的密钥,从而在数据周围建立加密边界。

  • 记录对加密密钥的管理和数据访问情况

  • 满足当前或未来的法规要求,即需要实现上述任一目标。

与 CMEK 集成的服务提供的功能

与 Google Cloud的默认加密一样,CMEK 也是对客户数据进行的服务器端对称信封加密。与 Google Cloud的默认加密不同的是,CMEK 保护使用客户控制的密钥。 在服务集成期间,手动创建或使用 Autokey 自动创建的 CMEK 的运行方式相同。

  • 具有 CMEK 集成功能的 Cloud 服务会使用您在 Cloud KMS 中创建的密钥来保护您的资源。

  • 与 Cloud KMS 集成的服务使用对称加密。

  • 您可以选择密钥的保护级别

  • 所有密钥都是 256 位 AES-GCM 密钥。

  • 密钥材料永远不会离开 Cloud KMS 系统边界。

  • 您的对称密钥用于信封加密模型中的加密和解密。

与 CMEK 集成的服务会跟踪密钥和资源

  • 受 CMEK 保护的资源具有一个元数据字段,用于保存加密密钥的名称。一般来说,这将在资源元数据中向客户显示。

  • 密钥跟踪功能可让您了解密钥保护哪些资源(对于支持密钥跟踪的服务)。

  • 可以按项目列出密钥

与 CMEK 集成的服务处理资源访问

在集成 CMEK 的服务中创建或查看资源的主账号不需要用于保护资源的 CMEK 的 Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) 角色。

每个项目资源都有一个特殊的“服务代理”服务账号,该账号使用客户管理的密钥执行加密和解密。在您向服务代理授予对 CMEK 的访问权限后,该服务代理将使用该密钥来保护您选择的资源。

当请求者想要访问使用客户管理的密钥加密的资源时,服务代理会自动尝试解密所请求的资源。如果服务代理有权使用密钥进行解密,并且您尚未停用或销毁该密钥,则服务代理会提供密钥的加密和解密使用权限。否则,请求将失败。

无需额外的请求者访问权限,并且由于服务代理会在后台处理加密和解密,因此用户访问资源时的体验与使用 Google Cloud的默认加密类似。

将 Autokey 用于 CMEK

对于要使用 Autokey 的每个文件夹,都需要执行一次性设置流程。您可以选择一个支持 Autokey 的文件夹来开展工作,以及一个关联的密钥项目,Autokey 会将该文件夹的密钥存储在其中。如需详细了解如何启用 Autokey,请参阅启用 Cloud KMS Autokey

与手动创建 CMEK 相比,Autokey 不需要执行以下设置步骤:

  • 密钥管理员无需手动创建密钥环或密钥,也无需向加密和解密数据的服务代理分配权限。Cloud KMS 服务代理会代表他们执行这些操作。

  • 开发者无需提前规划,在创建资源之前请求密钥。他们可以根据需要自行从 Autokey 请求密钥,同时仍能保持职责分离

使用 Autokey 时,只需执行一个步骤:开发者在创建资源时请求密钥。返回的键与预期资源类型一致。

对于以下功能,使用 Autokey 创建的 CMEK 的行为与手动创建的密钥相同:

  • 与 CMEK 集成的服务的行为方式相同。

  • 密钥管理员可以继续通过 Cloud KMS 控制台和密钥使用情况跟踪功能监控创建和使用的所有密钥。

  • 组织政策在 Autokey 中的运作方式与在手动创建的 CMEK 中的运作方式相同。

如需查看 Autokey 概览,请参阅 Autokey 概览。如需详细了解如何使用 Autokey 创建受 CMEK 保护的资源,请参阅使用 Cloud KMS Autokey 创建受保护的资源

手动创建 CMEK

手动创建 CMEK 时,您必须先规划并创建密钥环、密钥和资源位置,然后才能创建受保护的资源。 然后,您可以使用密钥来保护资源。

如需了解启用 CMEK 的确切步骤,请参阅相关Google Cloud 服务的文档。某些服务(例如 GKE)具有多个 CMEK 集成,可保护与该服务相关的不同类型的数据。您可能会遵循类以下的步骤:

  1. 创建 Cloud KMS 密钥环或选择现有密钥环。创建密钥环时,请选择在地理位置上靠近您要保护的资源的位置。密钥环可以位于您要保护的资源所在的同一项目中,也可以位于不同项目中。使用不同的项目可让您更好地控制 IAM 角色,并有助于实现职责分离

  2. 在所选密钥环中创建或导入 Cloud KMS 密钥。此密钥是 CMEK。

  3. 您可以将 CMEK 的 CryptoKey Encrypter/Decrypter IAM 角色 (roles/cloudkms.cryptoKeyEncrypterDecrypter) 授予该服务的服务账号。

  4. 创建资源时,将资源配置为使用 CMEK。例如,您可以配置 BigQuery 表,以保护表中的静态数据

请求者无需直接访问 CMEK 即可获取数据访问权限。

只要服务代理具有 CryptoKey Encrypter/Decrypter 角色,该服务就可以加密和解密其数据。如果您撤消此角色,或者停用或销毁 CMEK,则无法访问这些数据。

CMEK 合规性

某些服务具有 CMEK 集成,可让您自行管理密钥。不过,有些服务提供 CMEK 合规性,这意味着临时数据和临时密钥永远不会写入磁盘。如需查看集成服务和兼容服务的完整列表,请参阅兼容 CMEK 的服务

密钥使用情况跟踪

密钥使用情况跟踪功能可显示贵组织中受 CMEK 保护的 Google Cloud 资源。借助密钥使用情况跟踪功能,您可以查看受保护的资源、项目和使用特定密钥的独特 Google Cloud 产品,以及密钥是否正在使用。如需详细了解密钥使用情况跟踪,请参阅查看密钥使用情况

CMEK 组织政策

Google Cloud 提供组织政策限制条件,以帮助确保在整个组织资源中一致地使用 CMEK。这些限制为组织管理员提供了以下控制措施:要求使用 CMEK,并指定对用于 CMEK 保护的 Cloud KMS 密钥的限制和控制措施,包括:

后续步骤