Amazon web services 与其他帐户共享AWS管理的KMS密钥

Amazon web services 与其他帐户共享AWS管理的KMS密钥,amazon-web-services,aws-kms,Amazon Web Services,Aws Kms,我有一个s3文件夹,里面有加密的对象。它使用AWS KMS托管密钥加密,而不是自定义密钥。我需要另一个AWS帐户才能从这个存储桶复制文件。据我所知,我无法在多个帐户之间共享此KMS密钥。我也不能轻易地将这个bucket更改为使用自定义密钥,因为这会影响客户。这里有什么好的解决办法吗?我在两个账户上做了一些实验 我发现,通过使用bucket策略,您可以仅在以下情况下启用对其他帐户的访问: 未加密的bucket/object AES256加密,由AWS拥有的密钥管理 但是,如果使用AWS管理的C

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

我在两个账户上做了一些实验

我发现,通过使用bucket策略,您可以仅在以下情况下启用对其他帐户的访问:

  • 未加密的bucket/object
  • AES256加密,由AWS拥有的密钥管理
但是,如果使用AWS管理的CMK,则不适合使用bucket策略

相反,您可以使用启用对bucket和对象的访问。我验证了它是否有效

帐户A 在Acc A(带有
AWS-KMS
加密的存储桶的存储桶)中,我创建了一个名为
kmss3bucket
的角色:

  • 信任策略-Acc B(将承担角色并访问对象)
  • AmazonS3ReadOnlyAccess管理策略
  • AWS/S3 KMS密钥的内联策略:
会计科目B Acc B中的用户使用STS担任该角色:

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

这将生成新的temp aws凭据。使用这些凭据,Acc B将能够从Acc A复制使用aws-KMS加密的对象。

如何复制到另一个s3,在那里您可以使用另一个KMS加密并共享。。?
aws sts assume-role --role-arn arn:aws:iam::xxxxx:role/kmss3bucket --role-session-name cross-account-s3