【问题标题】:Make s3 file in bucket public as default将存储桶中的 s3 文件设为默认公开
【发布时间】:2022-02-25 15:20:22
【问题描述】:

我的 s3 存储桶 sertting Accesspublicblock public aceessoff

现在我通过 aws-web 控制台上传了文件。

该文件已被禁止公开。

我在这里检查page并设置

Bucketpolicy 如下所示。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:GetBucket*",
            ],
            "Resource": [
                "arn:aws:s3:::si12-s3-resource-up",
                "arn:aws:s3:::si12-s3-resource-up/*"
            ]
        }
    ]
}

但是,还是一样。

我应该在哪里检查更多?


手动上传文件后。

来到每个对象页面并将ACL设置为对所有人公开。

可以看到文件。

所以,,,,在我看来。

已设置存储桶策略,但以某种方式优先考虑 ACL 或忽略存储桶策略???


解决方案

我关闭 ACL 并设置

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket--name/*"
        }
    ]
}

它有效,我不确定为什么以前的存储桶策略不起作用

但非常感谢您的评论。

【问题讨论】:

  • 您的存储桶策略非常不安全,不应使用。它允许世界上任何人删除您的对象。
  • 谢谢我删除了GetBucket以外的东西,但问题还是一样。
  • 您能否在目标对象中尝试使用 'acl': 'public-read'。
  • 是的,它有效。 @Jiji Alexander,但是如何将其设为默认公开?
  • 我将 ACL 设置为无效,看起来只有存储桶策略有效,,,但情况仍在继续...

标签: amazon-web-services amazon-s3


【解决方案1】:

在 Bucket 中使用此策略使对象公开,请不要允许具有公开访问权限的 DELETE 操作,如果您的应用程序想要以编程方式删除,那么最好为此创建 ROLE 并将该应用程序正在运行的计算机分配给您。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action":["s3:GetObject"],
            "Resource":[ 
                "arn:aws:s3:::si12-s3-resource-up",
                "arn:aws:s3:::si12-s3-resource-up/*"
            ]
        }
    ]
}

另外,使用在 django-s3direct 的目标对象中添加 ACL

S3DIRECT_DESTINATIONS = {
    'example_destination': {
        'key': 'uploads/images',
        'acl': 'public-read', # [optional] Custom ACL for object is 'private'
        'server_side_encryption': 'AES256',
    }
} 

【讨论】:

  • 只需要其中一种方法 - 存储桶策略或设置 ACL=public-read。没有必要同时使用这两种方法。
猜你喜欢
  • 2013-10-11
  • 2019-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2018-10-26
  • 1970-01-01
相关资源
最近更新 更多