如何防止目录浏览s3桶?

时间:2012-03-04 21:08:34

标签: amazon-s3

我的s3存储桶上有大量文件并添加存储桶策略以使它们全部公开。 现在,当我浏览根目录时,它会列出整个目录(或前1000个项目)。 如何防止目录浏览。

5 个答案:

答案 0 :(得分:73)

应该注意的是,将index.html文件添加到存储桶中绝对没有任何意义。浏览存储桶根目录时,此文件将与所有其他文件一起列出。

此外,在存储桶上设置访问级别以便“每个人”都无法读取,这意味着您上传到存储桶的每个新文件都需要将其权限设置为“每个人”才能浏览。如果您要定期添加文件,这是不切实际的。

最佳解决方案是首先在存储桶上设置访问级别以拒绝“每个人”的读访问权限,然后创建一个存储桶策略,允许每个人读取存储桶中的内容。这样,没有人能够列出您的存储桶的内容,但是您添加的任何新文件都将被具有该文件链接的每个人读取。

以下是存储桶策略的外观。用你的水桶名称替换'my_bucket',你很高兴。

{
    "Version": "2008-10-17",
    "Statement": [
        {
        "Sid": "AddPerm",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::my_bucket/*"
        }
    ]
}

答案 1 :(得分:5)

您可以单独在目录和单个文件上设置ACL,不要对目录赋予读取权限,但允许单个文件使用。有许多工具可以帮助解决这个问题,包括bucket explorer或s3 fox。

答案 2 :(得分:2)

据我所知,不应再需要一个存储桶策略(当问题的答案首次发布时,它可能已经回来了。)

现在,只需将您的存储桶设置为公共访问权限,但关闭“列出对象”权限。

答案 3 :(得分:1)

最简单的方法可能是编辑设置: enter image description here

答案 4 :(得分:0)

截至 2020年5月

,您可以应用四种s3安全和策略类型
  • IAM政策
  • 时段政策
  • 对象访问控制列表(ACL)
  • 桶访问控制列表(ACL)

其中您可以使用用户存储桶策略来应用策略

要聚焦的线只需将/*放在资源中的bucket_name之后,如下所示

 "Resource": "arn:aws:s3:::my_bucket/*"

{
    "Version": "2012-10-17",
    "Id": "Policy212127",
    "Statement": [
        {
            "Sid": "Stmt112121212",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my_bucket/*"
        }
    ]
}

Bucket policy