S3 存储桶策略允许任何人查看(但不能列出)存储桶中的所有文件?

use*_*745 5 amazon-s3 amazon-web-services

我猜想公共 S3 存储桶的一个极其常见的模式是允许任何人(即公众)在获得该对象的 URL 的情况下查看存储桶中的每个文件,但不允许公众列出存储桶中的项目(即他们不应该能够生成存储桶中每个项目的列表)。

对于许多公共网站来说,这可能是相当常见的配置,这些网站永远不会向公众隐藏任何资产。

我做的第一件事是转到 S3 -> 单击存储桶 -> 权限 -> '阻止公共访问' -> 编辑 -> 取消选中所有框(从而允许完全公开访问存储桶中的项目)。

在此输入图像描述

但是当我使用浏览器直接访问图像 URL 时,它仍然是“访问被拒绝”,我怀疑这是因为我尚未允许通过Policy.

问题

允许任何公众成员查看(也称为“读取”)S3 存储桶1中的任何对象,但不允许列出(即查看所有对象的列表)存储桶中的最简单的策略是什么?

1他们需要一个 URL 才能执行此操作,除非他们猜到了。

Jat*_*tra 8

是的,你是对的,你仍然被拒绝访问,因为没有政策。

一个简单的反对政策GET是。参考文档

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::Bucket-Name/*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

注意:这里没有使用ListObject,它不会授予用户列出存储桶中对象的权限