首页 > 解决方案 > 将 S3 存储桶配置为仅在某些目录上允许 getObject 用于匿名

问题描述

我尝试为 Amazon S3 的权限做一些细节配置,但它不起作用。

我使用存储桶 Amazon S3 来存储网站的文件。有些文件是公开的,所以每个人都可以看到它们。但是这些文件的一部分应该是私有的,并且存储在特定的目录中。这些私人文件应根据某些条件提供给网站用户(如果他们购买了图像)。在这种情况下,网站会将文件发送给用户。

目前,尽管存储桶不是公开的,但似乎每个人都可以访问所有文件。在访问控制列表中,我只授予网站使用的用户与 API 通信的权限。

但是,如果您有直接 URL,匿名用户仍然可以看到和下载文件。我觉得这很奇怪,但对于公共文件来说这不是问题,我认为这很正常,我为私有目录更改了 Bucket Policy,如下所示:

{
        "Sid": "Stmt1538509082866",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": [
            "arn:aws:s3:::bucket-name/private/*"
        ]
 }

但是此规则拒绝为我的特定用户查看和下载文件的权利。我试图把允许放在他后面,但它不起作用。我以为我可以使用条件,但显然不适用于特定用户。

我准确地说我从最近开始从事这个项目并且我没有初始化存储桶,所以,也许它有我确实看到的错误配置。

谢谢你。

标签: amazon-web-servicesamazon-s3file-permissions

解决方案


推荐阅读