Bucket Policy 允许写入访问,尽管策略中只有 getObject

Bucket Policy allows for write access despite only having getObject in policy

我正在开发 Django 应用程序并通过该应用程序上传文件。我已经使用 django-storages 和 boto3 包正确连接了我的凭据,并且可以通过应用程序上传文件。

存储桶是所有者强制文件所有权,我的存储桶策略应该是只读但允许文件上传:

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

我是一个 IAM 用户,具有 AdministratorAccess 策略,但我认为 S3 策略具有两者中最严格的权限。

我仔细检查过我使用的是正确的存储桶策略。

GetObject 是否也允许文件上传?或者什么的...

我如何确定 Internet 上没有陌生人可以修改我的文件?

but believed S3 policies to go with the most restrictive permission of the two

遗憾的是,它不是那样工作的。 Allow 权限是累积的,因此无论存储桶策略如何,您的 IAM 用户都可以写入 S3 存储桶。

更改它的唯一方法是添加 explicit deny 用于写入您的存储桶策略。这是因为显式 Deny “总是胜过”任何 Allow.