【问题标题】:Sharing an AWS managed KMS key with another account与另一个账户共享 AWS 托管 KMS 密钥
【发布时间】:2020-12-04 19:29:01
【问题描述】:

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

【问题讨论】:

  • 如何复制到另一个 s3,在那里你用另一个你可以共享的 kms 加密..?

标签: amazon-web-services aws-kms


【解决方案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"
        }
    ]
}

账户 B

Acc 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 中复制对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-27
    • 2021-03-21
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 2017-09-14
    • 2015-11-24
    • 1970-01-01
    相关资源
    最近更新 更多