S3 Bucket Policy允许访问特定用户并限制所有用户

时间:2016-03-24 18:24:01

标签: amazon-web-services amazon-s3

我搜索了现有的问题而无法找到答案。因此在这里张贴。

我想限制所有用户访问S3存储桶,除了使用S3 Bucket策略选择少数用户。我理解IAM策略易于管理和管理,我不想为这个特定情况创建角色和组,并希望创建S3存储桶策略。

这是我到目前为止所尝试的内容,并不是按预期限制对用户的访问。

{
  "Version": "2012-10-17",
  "Id": "bucketPolicy",
  "Statement": [
    {

      "Effect": "Allow",
      "Principal": {
        "AWS": ["arn:aws:iam::1234567890:user/allowedusername"]
      },
      "Action": "s3:*",
      "Resource": ["arn:aws:s3:::examplebucket",
                   "arn:aws:s3:::examplebucket/*"]
    },
    {

      "Effect": "Deny",
      "Principal": {
        "AWS": ["arn:aws:iam::1234567890:user/denieduser"]
      },
      "Action": "s3:*",
      "Resource": ["arn:aws:s3:::examplebucket",
                   "arn:aws:s3:::examplebucket/*"]
    }

  ]
}

我试图拒绝以下所有内容,但明确的拒绝优先于允许而我自己现在无法访问存储桶;-(这是另一个问题我有

{

          "Effect": "Deny",
          "Principal": {
            "AWS": ["*"]
          },
          "Action": "s3:*",
          "Resource": ["arn:aws:s3:::examplebucket",
                       "arn:aws:s3:::examplebucket/*"]
        }

1 个答案:

答案 0 :(得分:4)

要实现您想要的效果,请使用" NotPrincipal"政策要素。以下策略将确保除了" NotPrincipal"中列出的用户之外,没有其他用户可以访问存储桶。元件。

    {
            "Id": "bucketPolicy",
            "Statement": [
                    {
                            "Action": "s3:*",
                            "Effect": "Deny",
                            "NotPrincipal": {
                                    "AWS": [
                                            "arn:aws:iam::1234567890:user/alloweduser"
                                    ]
                            },
                            "Resource": [
                                    "arn:aws:s3:::examplebucket",
                                    "arn:aws:s3:::examplebucket/*"
                            ]
                    }
            ],
            "Version": "2012-10-17"
    }