You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过KMS Grants跨账户共享AWS KMS密钥以共享加密快照?

使用KMS Grants实现加密EBS快照跨账户共享

要通过KMS Grants替代密钥策略实现加密EBS快照的跨账户共享,你需要明确Grant的权限范围和正确参数配置——这和直接修改密钥策略的逻辑存在差异,以下是具体解决方案:

为什么你的尝试失败

  1. CreateGrant不支持授予ListGrants/RevokeGrant:这两个操作属于Grant的管理权限,仅能由KMS密钥管理员或Grant创建者执行,无法通过Grant将这类权限授予其他主体。
  2. 仅传CreateGrant参数无效:单独指定kms:CreateGrant没有实际意义,EBS快照共享需要的是解密、生成数据密钥等核心操作权限,而非创建Grant的权限。

正确的Grant配置

要让目标账户正常使用共享的加密快照,需为其授予以下KMS操作权限,并添加AWS资源绑定约束:

  • kms:Decrypt:解密快照中的加密数据
  • kms:DescribeKey:允许目标账户验证密钥基本信息
  • kms:GenerateDataKey*:从快照创建新卷时,生成新的加密数据密钥

AWS CLI示例

aws kms create-grant \
  --key-id <你的客户托管KMS密钥ARN> \
  --grantee-principal arn:aws:iam::<目标账户ID>:root \
  --operations "kms:Decrypt" "kms:DescribeKey" "kms:GenerateDataKey*" \
  --constraints '{"Bool": {"kms:GrantIsForAWSResource": true}}' \
  --name "EBS-Snapshot-Share-Grant"

参数说明

  • KeyId:替换为加密快照所用的客户托管KMS密钥ARN
  • GranteePrincipal:目标AWS账户的root用户ARN(格式为arn:aws:iam::<账户ID>:root)
  • Constraints:通过kms:GrantIsForAWSResource条件,确保该Grant仅用于AWS托管资源(如EBS),避免权限滥用
  • Name:可选,自定义Grant名称,方便后续管理

关键注意事项

  • 目标账户IAM策略需配合授权:虽然Grant已赋予权限,但IAM的显式拒绝会覆盖Grant权限,需确保目标账户的IAM实体(用户/角色)未被拒绝相关KMS操作。
  • Grant生命周期管理:默认Grant无过期时间,可通过--expiration-date参数设置过期时间,适配临时共享场景。
  • Grant管理操作:你可通过aws kms list-grants查看已创建的Grant,使用aws kms revoke-grant撤销无用权限,这些操作仅能由密钥管理员或Grant创建者执行。

内容的提问来源于stack exchange,提问作者Kerenz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 06:05:31