如何跨账户共享使用AWS托管密钥加密的AWS EC2镜像
AWS托管密钥加密EC2镜像跨账户共享操作说明
核心结论
使用AWS托管密钥(默认aws/ebs这类由AWS官方维护的KMS密钥)加密的EC2镜像,不支持直接跨账户共享。
原因是AWS托管密钥的资源策略由AWS官方统一管理,用户无权修改策略为外部账户添加访问权限,这一点和支持自定义权限策略的客户托管密钥存在本质差异。
可行的迁移操作步骤
如果需要将这类镜像转移到其他账户,可以按照以下流程操作:
- 第一步:在源账户中,使用待迁移的加密镜像启动一台临时EC2实例,选择最低配置即可,不需要运行业务
- 第二步:将临时实例停止后,为该实例创建新的AMI镜像,加密方式选择你自行创建的客户托管KMS密钥(提前确认你持有该密钥的权限修改权限)
- 第三步:修改上述客户托管密钥的资源策略,为目标账户添加
kms:DescribeKey、kms:CreateGrant、kms:Decrypt、kms:GenerateDataKey*等必要访问权限 - 第四步:将使用客户托管密钥加密的新AMI共享给目标账户
- 第五步:目标账户接收共享AMI后可直接使用,也可重新加密为目标账户自己的托管/自定义密钥,操作完成后可删除源账户的临时实例和中间AMI节约成本
注意事项
操作前需要确认源账户和目标账户处于同一AWS分区(比如同属aws标准分区、同属aws中国区),跨分区的场景需要额外添加跨分区镜像拷贝的步骤。
临时实例仅用于生成新镜像,全程不需要开机运行业务,避免产生不必要的费用。
内容的提问来源于stack exchange,提问作者Gene9y
相关产品推荐
相关产品推荐

