Amazon S3 - 每个人都可以下载私有文件吗?

qua*_*nta 4 amazon-s3 s3cmd

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

s3cmd setacl --acl-private s3://bucket/some/path/*.ext
Run Code Online (Sandbox Code Playgroud)

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

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

我缺少什么?

qua*_*nta 5

通过转到存储桶检查您的存储桶策略,然后单击属性和编辑存储桶策略。如果你有这样的事情:

    {
        "Sid": "Stmt1391783519913",
        "Effect": "Allow",
        "Principal": {
            "AWS": "*"
        },
        "Action": [
            "s3:GetObject",
        ],
        "Resource": "arn:aws:s3:::bucket/*"
    },
Run Code Online (Sandbox Code Playgroud)

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

根据文件

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

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

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

    {
        "Sid": "Stmt1395306106592",
        "Effect": "Deny",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::bucket/some/path/*.ext"
    },
Run Code Online (Sandbox Code Playgroud)