管理加密的存储分区

本页面将引导您了解如何管理加密的存储分区,重点介绍如何刷新和轮换 v2 加密的 AEADKey。本文介绍了使用 kubectl 命令管理 AEADKey 和 kekRef 密文的前提条件和步骤。借助这些信息,您可以实施强大的数据安全措施,并通过有效的生命周期管理来最大限度地降低加密密钥泄露的风险。

本页面面向基础设施运维人员群组中的 IT 管理员或应用运维人员群组中的开发者等受众群体,他们负责管理 Google Distributed Cloud (GDC) 气隙环境中存储分区的加密设置。如需了解详情,请参阅 GDC 气隙环境文档的受众群体

准备工作

项目命名空间用于管理 Management API 服务器中的存储桶资源。您必须拥有项目才能使用存储分区和对象。

您还必须拥有相应的存储桶权限才能执行以下操作。请参阅授予存储桶访问权限

管理加密资源

采用 v2 加密的存储桶会有一个 Secret kekRef 和多个已创建的 AEADKey,其中 kekRef 用于引用正在使用的有效默认 AEADKey,而 AEADKey 包括属于相应存储桶的有效 AEADKey 和归档 AEADKey。

刷新存储桶的有效默认 AEADKey

最佳做法是,在写入大约 420 亿个对象后,刷新相应存储桶的默认 AEADKey。这一主动防御措施可提高安全性并防止密钥耗尽。刷新过程将创建新的 kekRef 并停用之前的 AEADKeys。如需开始刷新流程,请删除与相应存储桶关联的 kekRef 密钥。

您可以通过运行以下命令来检索之前的 kekRef:

kubectl get secrets -n NAMESPACE_NAME -l  object.gdc.goog/bucket-name=BUCKET_NAME

然后,您可以运行以下命令来删除现有的 kekRef:

kubectl delete secrets OLD_KEKREF_NAME -n  NAMESPACE_NAME

成功删除后,您可以运行以下命令来确认是否已基于 AGE 创建新的 kekRef:

kubectl get secrets -n NAMESPACE_NAME -l  object.gdc.goog/bucket-name=BUCKET_NAME

验证是否已基于 AGE 创建新的默认 AEADKey:

kubectl get aeadkeys -n NAMESPACE_NAME -l  cmek.security.gdc.goog/resource-name=BUCKET_NAME

轮替存储桶的默认 AEADKey

如果存储桶的 AEADKey 遭到破解,您必须手动轮替与该存储桶关联的密钥加密密钥。

如需开始此流程,您必须先刷新有效默认密钥。这会创建新的有效默认 AEADKey,并将之前的密钥加密密钥标记为已停用。默认密钥刷新后,后续的对象上传操作会使用新的 AEADKeys 作为密钥加密密钥。之前的 AEADKey 不会被销毁,因此您仍然可以解密之前使用这些密钥加密的现有对象。

接下来,按照步骤下载并重新上传存储桶中的对象,然后删除旧对象

重新上传存储桶中的所有对象后,您可以清理不活跃的 AEADKey 和旧对象。根据 AGE 识别已停用的 AEADKey:

kubectl get aeadkeys -n NAMESPACE_NAME -l  cmek.security.gdc.goog/resource-name=BUCKET_NAME

最后,按照步骤删除 AEADKeys