Amazon S3存储桶策略,我做错了什么?

时间:2018-04-19 15:22:00

标签: json amazon-web-services amazon-s3

我使用Policy Generator为我的桶创建一个简单的规则;规则应该允许以下预期效果:

  • root access
  • 限制对给定IAM用户的访问
  • 允许对所有人进行只读访问

为此我编写了以下规则,但是有些东西没有按预期工作,特别是,我完全失去了对存储桶元素的访问权限,在所有情况下都获得了“拒绝访问”,包括root:

enter image description here

编辑:使用@jarmod回答我能够设置预期的功能,但它会触发警告,关于存储桶是公开的,我没有看到差异方面没有策略,存储桶仍然可以以只读方式公开访问。有什么区别?

enter image description here

1 个答案:

答案 0 :(得分:1)

也许你可以这样做:

  1. 对于所有用户,允许操作s3:GetObject
  2. 对于除root和您的特定IAM用户之外的所有用户,拒绝除s3:GetObject
  3. 之外的所有操作

    您可以使用以下政策执行此操作:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": "*",
                "Action": "s3:GetObject",
                "Resource": [
                    "arn:aws:s3:::mybucket/*"
                ]
            },
            {
                "Effect": "Deny",
                "Principal": "*",
                "NotAction": "s3:GetObject",
                "Resource": [
                    "arn:aws:s3:::mybucket/*"
                ],
                "Condition": {
                    "StringNotLike": {
                        "aws:userId": [
                            "iam-userid-here",
                            "root-userid-here"
                        ]
                    }
                }
            }
        ]
    }
    

    要获取iam-userid-here,请运行aws iam list-users并检索IAM用户的UserId。

    同样,要获取root-userid-here,只需从上一个aws iam list-users输出的Arn中检索帐号。 root帐户userId 是AWS账号。

    iam-userid-here指示的IAM用户可以拥有允许S3访问的IAM策略。