【问题标题】:S3 bucket policy, how to ALLOW a IAM group from another account?S3 存储桶策略,如何允许来自另一个账户的 IAM 组?
【发布时间】:2015-08-20 11:19:26
【问题描述】:

我在一个 AWS 账户(比如 arn:aws:s3:::my-test-bucket)中有一个 S3 存储桶,需要由另一个 AWS 账户(比如 arn:aws:iam::1111222333444:group/mygroup)中定义的 IAM 组访问。以下访问策略拒绝保存,并告诉arn:aws:s3:::my-test-bucket 是一个无效的主体

{
    "Statement": [
        {
            "Action": [
                "s3:ListBucket",
                "s3:PutObject",
                "s3:List*",
                "s3:Get*"
            ],
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::1111222333444:group/mygroup"
            },
            "Resource": [
                "arn:aws:s3:::my-test-bucket",
                "arn:aws:s3:::my-test-bucket/*"
            ],
            "Sid": "allow-put-for-dedicated-group"
        }
    ],
}

我已经通过将组替换为另一个帐户的用户之一进行了测试,这可行:

{
    "Statement": [
        {
            "Action": [
                "s3:ListBucket",
                "s3:PutObject",
                "s3:List*",
                "s3:Get*"
            ],
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::1111222333444:user/me"
            },
            "Resource": [
                "arn:aws:s3:::my-test-bucket",
                "arn:aws:s3:::my-test-bucket/*"
            ],
            "Sid": "allow-put-for-dedicated-user"
        }
    ],
}

该组已存在,我不明白为什么它说它是无效的主体。实际上它不接受我其他帐户的任何组。

有人对此行为有解释(可能还有解决方案)吗?

提前致谢, 干杯

【问题讨论】:

    标签: amazon-web-services amazon-s3 policy bucket


    【解决方案1】:

    IAM 组在 S3 存储桶策略中无效 principals。更多讨论请参见this AWS forum postthis SO post

    这里有一个想法:在账户 #1(具有 S3 存储桶的账户)中创建一个 IAM 角色(例如 cross-account-s3)。该角色应该有一个允许适当的 S3 存储桶访问的策略,并且它应该有一个信任关系,表明帐户 #2 对于sts:AssumeRole 是受信任的。然后在账户 #2 中,将代入cross-account-s3 角色的权限委托给相关的 IAM 组。这需要您信任第二个账户中的 IAM 管理员,以免错误的用户担任跨账户 s3 角色。

    【讨论】:

    • 我注意到了,感谢您的回复。的确,这是一个悲伤的消息。我认为这可能是对组的有用使用,在资源上定义 ACL...我还注意到自 2011 年以来 AWS 论坛上有一个关于此的功能请求...
    • @Danduk82 这是一个可能的想法。在账户 #1(具有 S3 存储桶的账户)中创建 IAM 角色(例如“cross-account-s3”)。该角色应该有一个允许适当的 S3 存储桶访问的策略,并且它应该有一个信任关系,表明账户 #2 中的根用户具有 sts:AssumeRole。然后在账户 #2 中为相关 IAM 组提供一个策略,该策略允许该组中的用户从账户 #1 承担跨账户-s3 角色。我想这需要您信任第二个帐户中的 IAM 管理员,以不允许错误的用户担任跨帐户 s3 角色。
    • 嗯,是的。这是使用策略的明智方式。它仍然有点令人沮丧,因为这并不能通过仅查看存储桶策略来提供"who's allowed to use this resource?" 答案,但至少它使使用组成为可能。非常感谢您的想法。
    猜你喜欢
    • 2016-03-17
    • 2021-06-28
    • 2013-10-25
    • 1970-01-01
    • 2012-11-23
    • 2019-02-26
    • 2019-10-30
    • 2021-04-19
    • 2021-04-25
    相关资源
    最近更新 更多