本页面介绍了如何管理加密的 Google Distributed Cloud (GDC) 气隙存储分区。
准备工作
项目命名空间用于管理 Management API 服务器中的存储桶资源。您必须拥有一个项目才能使用存储分区和对象。
您还必须拥有相应的存储桶权限才能执行以下操作。请参阅授予存储桶访问权限。
对于双区域存储分区,请配置 kubectl 以访问全球 API 服务器。按照全局 API 服务器资源中的步骤操作,并将 GLOBAL_API_SERVER 环境变量设置为 kubeconfig 文件。
管理加密资源
采用 v2 加密的存储桶会创建一个 Secret kekRef 和多个 AEADKey,其中 kekRef 用于引用正在使用的有效默认 AEADKey,而 AEADKey 包括属于相应存储桶的有效密钥和归档密钥。
刷新存储桶的有效默认 AEADKey
最佳做法是,在写入大约 420 亿个对象后,刷新相应存储桶的默认 AEADKeys。这一主动防御措施可提高安全性并防止密钥耗尽。刷新过程将创建新的 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。