使用默认 aws/S3 KMS 密钥进行解密对象的跨账户访问

AWS*_*nar 1 amazon-s3 amazon-web-services amazon-iam aws-lambda amazon-kms

在我的账户 A 中,我有 S3 存储桶,其中对象是加密的默认 AWS 托管密钥 aws/s3。

我想从帐户 B lambda 读取这些对象。但与帐户 A 中的对象一样,对象是使用 AWS 托管密钥 aws/s3 加密的,我无法在此处修改 KMS 密钥策略。

我尝试在帐户 A 中创建一个角色,该角色拥有所有 KMS 和 S3 权限,并信任帐户 B 中的角色。然后从帐户 B 我在 A 中承担此角色。但仍然得到

Access denied error in GetObject

我可以在这里做什么来从帐户 A 读取对象。请指导。

账户 A 中的角色

statement
{
   Action: kms:*
   Resource : "*"
   Effect: allow
}
{
  Action: S3:*
   Resource : 
      arn:aws:s3:::my-s3
      arn:aws:s3:::my-s3/*
   Effect: allow
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*cin 5

aws/s3AWS 托管密钥。正如文档所解释的,您不能将它们用于跨帐户访问。

由于 AWS 托管的 KMS 密钥策略无法更新,因此也无法为这些密钥策略授予跨账户权限。此外,其他 AWS 账户无法访问使用 AWS 托管 KMS 密钥加密的对象。

您必须使用客户管理密钥 (CMK)进行跨账户访问。