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

cross account access for decrypt object with default aws/S3 KMS key

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

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

我试图在帐户 A 中创建一个角色,该角色具有所有 KMS 和 S3 权限,并信任来自帐户 B 的帐户 B.Then 中的角色,我在 A 中担任此角色。但仍然得到

Access denied error in GetObject

我可以在这里做什么来从帐户 A.Please 指南中读取对象。

账户 A 中的角色

statement
{
   Action: kms:*
   Resource : "*"
   Effect: allow
}
{
  Action: S3:*
   Resource : 
      arn:aws:s3:::my-s3
      arn:aws:s3:::my-s3/*
   Effect: allow
}

aws/s3是一个AWS managed key. As the docs说明,不能跨账号使用。

Because AWS managed KMS key policies can't be updated, cross-account permissions also can't be granted for those key policies. Additionally, objects that are encrypted using an AWS managed KMS key can't be accessed by other AWS accounts.

您必须使用 customer managed keys (CMK) 进行跨账户访问。