与另一个账户共享AWS管理的KMS密钥

时间:2020-08-14 22:27:28

标签: amazon-web-services aws-kms

我有一个s3文件夹,其中包含加密的对象。它是使用AWS KMS托管密钥而不是自定义密钥加密的。我需要另一个AWS帐户才能从该存储桶中复制文件。据我所知,我无法在各个帐户之间共享此KMS密钥。我也不能轻易更改此存储桶以使用自定义键,因为这会影响客户。这里有什么已知的好的解决方法吗?

1 个答案:

答案 0 :(得分:1)

我对我的两个帐户进行了实验

我发现通过使用存储桶策略,您只能为以下用户启用对其他帐户的访问权限:

  • 未加密的存储桶/对象
  • 由AWS拥有的密钥管理的AES256加密。

但是,如果您使用AWS Managed CMK,则不适合使用存储桶策略。

相反,您可以使用cross-account roles 启用对存储桶和对象的访问。我验证它可以正常工作。

帐户A

在Acc A(其中一个具有AWS-KMS加密的存储桶中,我创建了一个名为kmss3bucket的角色

  • 信任策略-Acc B(将承担角色并访问对象)
  • AmazonS3ReadOnlyAccess托管策略
  • AWS / S3 KMS密钥的内联策略:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "kms:Decrypt",
            "Resource": "arn:aws:kms:us-east-1:xxxxxx:key/b811de9a-150a-4d89-8a9a-03e1b878737d"
        }
    ]
}

Acccunt B

帐户B中的用户使用STS承担角色:

aws sts assume-role --role-arn arn:aws:iam::xxxxx:role/kmss3bucket --role-session-name cross-account-s3

这将生成新的临时AWS凭证。使用凭证,Acc B将能够从使用AWS-KMS加密的Acc A中复制对象。