关于GCP中KEK密钥轮换及旧密钥管理的技术问询
GCP BYOK/EKM模式下KEK轮换后旧密钥的处理说明
一、未来GCP服务是否仍需使用旧密钥?
是的,必须保留旧密钥的可用性,直到所有用旧KEK加密的底层数据密钥(DEK)都完成重新加密,换成新KEK加密的版本,具体原因和涉及服务的情况如下:
- GCP采用“KEK加密DEK、DEK加密业务数据”的分层加密模型。轮换KEK后,GCP不会自动批量重加密所有存量DEK,只有当数据被重新写入或显式触发重加密操作时,才会用新KEK生成并加密新的DEK。
- 针对你用到的服务:
- GCS:未被修改的存量对象会一直使用旧KEK加密的DEK,读取时必须用旧KEK解密DEK才能获取原始数据。
- GCE/GKE:磁盘、镜像等存量资源,只要没执行重加密或重新创建操作,仍依赖旧KEK解密对应DEK。
- Cloud SQL:备份数据、旧实例快照,以及未触发重加密的存量数据,都会持续依赖旧KEK。
如果直接禁用旧密钥,所有依赖它的存量数据都会变成不可访问状态,触发解密失败错误。
二、能否从我方密钥管理系统中删除旧密钥?
暂时不能删除,必须满足以下条件后才能安全操作:
- 确认所有旧KEK加密的DEK都已重加密为新KEK版本。你可以通过GCP各服务的工具触发存量数据重加密:
- GCS:对存储桶执行
gsutil rewrite操作批量重加密对象,或开启存储桶自动轮换配置。 - GCE/GKE:对磁盘执行重加密操作,或重新创建磁盘、实例。
- Cloud SQL:创建新实例快照替换旧快照,对现有实例执行加密重配置操作。
- GCS:对存储桶执行
- 验证所有服务访问日志中已无旧KEK的调用记录。可以通过GCP云监控或外部密钥管理系统的日志,确认连续7-14天内没有旧KEK的解密请求。
只有完成上述步骤,确保无任何存量数据依赖旧KEK后,才能从你的密钥管理系统中安全删除旧密钥。
内容的提问来源于stack exchange,提问作者MaXbeMan
相关产品推荐
相关产品推荐

