Amazon S3-私人文件仍然可供所有人下载吗?

Amazon S3-私人文件仍然可供所有人下载吗?

我有一些秘密文件,我想限制匿名用户查看/下载。我尝试通过运行以下命令将其设为私密:

s3cmd setacl --acl-private s3://bucket/some/path/*.ext

然后我转到 S3 管理控制台,选择文件,然后单击“属性”,我确定每个人的“打开/下载”权限都未选中。

但是复制链接https://s3-us-west-2.amazonaws.com/bucket/some/path/blah.ext并粘贴到新的浏览器中,它仍然可以打开/下载。

我错过了什么?

答案1

转到存储桶,然后单击“属性”和“编辑存储桶策略”,检查存储桶策略。如果您有类似以下内容:

    {
        "Sid": "Stmt1391783519913",
        "Effect": "Allow",
        "Principal": {
            "AWS": "*"
        },
        "Action": [
            "s3:GetObject",
        ],
        "Resource": "arn:aws:s3:::bucket/*"
    },

这意味着您允许每个人下载此存储桶中的所有文件。

根据文档

如果账户有权访问 ACL 或策略指定的资源,则他们能够访问所请求的资源。

这就是匿名用户仍然可以打开/下载您的文件的原因。

您可以通过添加如下新策略来阻止此情况:

    {
        "Sid": "Stmt1395306106592",
        "Effect": "Deny",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::bucket/some/path/*.ext"
    },

答案2

在 S3 中创建文件后private,您可能仍可以下载它,但您的浏览器已缓存该文件。一旦您将文件设为私密,它将403在任何其他浏览器(或私密/隐身窗口)中返回,但在一定时间内仍可通过原始浏览器访问。

如果您想确认该文件是私密的,请尝试使用其他浏览器(或curl等)下载。

相关内容