AWS S3拒绝除1个用户 - 桶策略之外的所有访问权限

时间:2016-10-04 14:51:51

标签: security amazon-s3 bucket

我在AWS S3中设置了一个存储桶。我使用ALLOW策略(使用存储桶策略编辑器)授予我的IAM用户访问存储桶的权限。我能够与用户一起将文件保存到存储桶中。我以前一直在处理媒体服务的存储桶,所以看起来默认操作是授予公众查看文件(图像)的权限,这对于大多数网站来说都很好。

在我的新项目中,我希望能够使用IAM用户访问S3存储桶,但是想要拒绝所有其他访问。没有公共读取访问权限,除了应该具有完全访问权限的IAM用户之外没有任何访问权限保存/删除任何内容。

我应该做什么,我正在阅读here。它表示使用Deny属性创建NotPrincipal策略,这样它仍然允许该用户,但拒绝其他所有人。为了更好地衡量,我还为我想要的用户添加了Allow政策:

{
    "Version": "2012-10-17",
    "Id": "Policy**********",
    "Statement": [
        {
            "Sid": "Stmt**********",
            "Effect": "Deny",
            "NotPrincipal": {
                "AWS": "arn:aws:iam::*********:user/my_user"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my_bucket/*"
        },
        {
            "Sid": "Stmt*************",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::**********:user/my_user"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my_bucket/*"
        }
    ]
}

但是,即使my_user,也拒绝访问所有人。我再次确认,当我刚刚使用上述策略的Allow部分时,我可以访问,但是公众也有读访问权限,我试图关闭它。

如何设置我的存储桶策略,以便只对唯一的IAM用户提供完全访问权限,并拒绝对任何其他用户的所有访问权限?

感谢。

2 个答案:

答案 0 :(得分:2)

这很简单:

  • 默认情况下,存储桶具有无公共访问权限
  • 不要添加广告投放管理政策,因为您不想授予访问权限公共访问权限
  • 相反,向IAM用户添加政策授予他们访问权限

要实现的主要事情是IAM用户无法通过未经身份验证的URL(例如s3.amazonaws.com/bucket/file.jpg)访问内容,因为S3不知道他们是谁。当IAM用户访问内容时,他们需要使用经过身份验证的访问,以便S3知道他们是谁,例如:

IAM用户的政策如下所示:

{
  "Effect": "Allow",
  "Action": "s3:*",
  "Resource": [
    "arn:aws:s3:::my_bucket",
    "arn:aws:s3:::my_bucket/*"
  ]
}

答案 1 :(得分:0)

如果我理解正确,只允许 1 个 IAM 用户访问 buket。我们可以使用桶策略。我在 netApp 文档中得到了这个。

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-user/Bob"
      },
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Deny",
      "NotPrincipal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-user/Bob"
      },
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    }
  ]
}