本页面将指导您如何管理加密的存储分区,重点介绍如何刷新和轮替 v2 加密的 AEADKeys。其中介绍了使用 kubectl 命令管理 AEADKeys 和 kekRef Secret 的前提条件和步骤。借助这些信息,您可以通过有效的生命周期管理来确保强大的数据安全性,并最大限度地降低加密密钥泄露的风险。
本页面面向基础架构运维人员组中的 IT 管理员或应用运维人员组中的开发者等受众群体,他们负责管理 Google Distributed Cloud (GDC) 气隙环境中的存储分区的加密设置。如需了解详情,请参阅 GDC 网闸隔离配置文档的受众群体。
准备工作
项目命名空间用于管理 Management API 服务器中的存储桶资源。您 必须拥有项目才能使用存储分区和对象。
您还必须拥有相应的存储桶权限才能执行以下操作。请参阅授予存储桶访问权限。
对于双区域存储分区,请配置 kubectl 以访问 Global API 服务器。按照 Global API 服务器资源 中的步骤操作,并将 GLOBAL_API_SERVER 环境变量设置为 kubeconfig 文件。
管理加密资源
使用 v2 加密的存储桶会创建 Secret kekRef 和多个 AEADKeys,其中 kekRef 用于引用正在使用的活跃默认 AEADKeys,而 AEADKeys 包括属于存储桶的活跃 AEADKeys 和归档 AEADKeys。
刷新存储桶的活跃默认 AEADKeys
最佳做法是,在写入大约 420 亿个对象后,刷新存储桶的默认 AEADKeys。这种主动措施有助于提高安全性并防止密钥耗尽。刷新过程会创建新的 kekRef 并停用之前的 AEADKeys。如需开始刷新过程,请删除与存储桶关联的 kekRef Secret。
您可以通过运行以下命令来检索之前的 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 创建新的默认 AEADKeys:
kubectl get aeadkeys -n NAMESPACE_NAME -l cmek.security.gdc.goog/resource-name=BUCKET_NAME
轮替存储桶的默认 AEADKeys
如果存储桶的 AEADKey 遭到入侵,您必须手动轮替与该存储桶关联的密钥加密密钥。
如需开始此过程,您必须先刷新活跃默认密钥。这会创建新的活跃默认 AEADKeys,并将之前的密钥加密密钥标记为已停用。刷新默认密钥后,后续对象上传会使用新的 AEADKeys 作为密钥加密密钥。之前的 AEADKeys 不会被销毁,因此您仍然可以解密之前使用这些密钥加密的现有对象。
接下来,按照以下步骤下载并重新上传存储桶中的对象,然后删除旧对象。
重新上传存储桶中的所有对象后,您可以清理不活跃的 AEADKeys 和旧对象。根据 AGE 识别已停用的 AEADKeys:
kubectl get aeadkeys -n NAMESPACE_NAME -l cmek.security.gdc.goog/resource-name=BUCKET_NAME
最后,按照以下步骤删除 AEADKeys。