Cloud Build 中的 CMEK 合规性

Cloud Build 通过使用为每个构建生成的临时密钥加密构建时永久性磁盘 (PDEK),来提供客户管理的加密密钥 (CMEK) 合规性。无需进行任何配置。该密钥是针对每个构建生成的唯一密钥。

一旦构建完成,就会从内存中擦除并销毁密钥。该密钥不会存储在任何位置,就连 Google 工程师或支持人员也无法访问,并且无法恢复。使用此类密钥保护的数据将永久无法访问。

临时密钥加密的工作原理是什么?

Cloud Build 通过使用临时密钥来支持 CMEK,从而使其与支持 CMEK 的设置完全一致且兼容。

Cloud Build 会执行以下操作来确保使用临时密钥加密构建时永久性磁盘:

  1. Cloud Build 在本地 RAM 中创建一个随机的 256 位加密密钥,用于加密每个构建时永久性磁盘。

  2. Cloud Build 利用永久性磁盘的 CSEK(客户提供的加密密钥)功能,将这个新的加密密钥用作永久性磁盘加密密钥。

  3. 在开始构建之后,Cloud Build 会立即从本地 RAM 中擦除它为构建临时生成的密钥。系统绝不会将该密钥记录或写入到任何永久性存储器,并且该密钥现在无法恢复。

  4. 构建完成后,系统会删除永久性磁盘,此时,Google 基础架构中的任何位置都不会保留该密钥的跟踪记录或加密的永久性磁盘数据。

临时密钥加密何时不适用?

在以下情形中,临时密钥加密不适用:

  • 当您使用源镜像(不通过 GitHub 应用触发器)创建或触发构建时,您的源代码会存储在 Cloud Storage 或 Cloud Source Repositories 中。您可以完全控制代码存储位置,包括控制其加密方式。

  • 您为 Cloud Build 构建日志指定自己的存储分区并提供加密的日志存储分区时,必须停用 Stackdriver 日志记录功能,然后停用 Cloud Build 日志流式传输选项,如 BuildOptions 中所述。

  • 当您通过 Cloud Build GitHub 应用触发构建时,Cloud Build 会从 GitHub 拉取您的源代码,接着创建一个具有一天对象 TTL 的存储分区,然后将代码存放在该存储分区。 您无权访问此存储分区,也无法控制它。

  • 当您居住在受当地加密限制影响的地理区域(例如巴西或印度)时,Cloud Build 无法对永久性磁盘应用临时密钥加密。