2

我正在使用Djangodjango-storages库将我的模型文件上传到 S3,并且需要添加一个策略来阻止从存储桶的 URL 直接下载。

我通过设置下面的策略(检查Referer)实现了这一点,但是当我使用库的自动重命名功能时,这导致了一个问题。我目前的政策:

{
    "Version": "2012-10-17",
    "Id": "Policy1542209806458",
    "Statement": [
        {
            "Sid": "Block access globally except by the indicated referers.",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::my-bucket/subfolder/*",
            "Condition": {
                "StringNotLike": {
                    "aws:Referer": [
                        "http://ref.localhost:8000/*",
                        "http://localhost:8000/*"
                    ]
                }
            }
        }
    ]
}

通过调试,我发现当库尝试执行HEAD请求以获取现有文件信息(这将表明需要重命名)时,响应是 HTTP 403 错误。我尝试包括以下Actions(来自其他来源和文档)以获得更宽松的访问权限,但同样的问题仍然存在。

"Action": [
    "s3:GetObject",
    "s3:GetObjectVersion",
    "s3:GetObjectAcl",
    "s3:PutObject",
    "s3:PutObjectAcl",
    "s3:DeleteObject",
    "s3:DeleteObjectVersion"
]

添加具有唯一名称的新文件时,我没有这样的问题,只有在需要重命名时。

4

0 回答 0