如何解决拒绝访问 aws s3 文件?

Posted

技术标签:

【中文标题】如何解决拒绝访问 aws s3 文件?【英文标题】:How do I resolve access denied aws s3 files? 【发布时间】:2019-05-22 19:30:54 【问题描述】:

我试图让运行在 heroku 中的 Django 应用程序可以访问我的 s3 存储桶上的文件(CSS JS 文件)。

我认为我的 settings.py 配置正确。

但是,当我尝试更改 S3 存储桶中的权限时,我被拒绝访问。

我添加了 cors 并且存储桶策略设置为公开。

最终,当我从 heroku 加载应用程序时,我在尝试访问静态文件时遇到 403 错误。

存储桶策略:


    "Version": "2012-10-17",
    "Statement": [
        
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": 
                "AWS": "*"
            ,
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::NameOfBucket/*"
        
    ]

CORs 配置:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>

请问如何获得在 s3 存储桶中进行更改的权限?

【问题讨论】:

您是否配置了 Block S3 Public Access 设置?它是全新的,并为存储桶添加了另一层保护,您需要禁用它以允许公共访问。 编辑问题以显示公共访问设置,谢谢 收到拒绝访问消息时点击了什么?如果您有授予访问权限的存储桶策略,则无需使用 Make Public 功能。如果您在单击 Make Public 时收到错误消息,则该错误是因为 S3 Block Public Access 当前正在阻止 ACL。如果您有存储桶策略,这很好。 我点击了访问控制列表>>公共访问。如果我尝试公开单个文件,也会发生这种情况。我试图创建一个使其公开的存储桶策略,但也失败了。 arn:aws:s3:::nameOfBucket, arn:aws:s3:::nameOfBucket/* 尝试关闭 S3 Block Public Access 中的第四个选项。 【参考方案1】:

该选项称为如果存储桶具有公共策略,则阻止公共和跨账户访问。如果为 TRUE,则表示存储桶策略仅适用于存储桶所有者。

详情请参考:Using Amazon S3 Block Public Access - Amazon Simple Storage Service

这四个新设置可能被认为很烦人,因为它们是尝试公开内容的额外障碍,但它们可能会通过防止意外公开数据来为许多组织节省很多尴尬。

【讨论】:

【参考方案2】:

新的 S3 功能 - S3 公共块可能会阻止您的请求。您可以查看您的 cloudtrail 日志以获取更多详细信息。 更多详情:https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html

同时查看您的策略,您允许对所有 AWS 委托人的存储桶前缀执行 s3:* 操作。 通常,向所有 AWS 委托人开放所有 S3 操作并不是一个好习惯。请查看您的需求并缩小策略范围,以提高存储桶对象的安全性。

【讨论】:

以上是关于如何解决拒绝访问 aws s3 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 AWS S3 上的拒绝访问错误中恢复?

AWS CloudFront 拒绝访问 S3 存储桶

在不同账户的 Lambda 中从 AWS Athena 查询 S3 文件时访问被拒绝

AWS S3 存储桶策略编辑器访问被拒绝

Spring Boot Amazon AWS S3 存储桶文件下载 - 拒绝访问

Rails:回形针上传时 AWS S3 访问被拒绝错误