覆盖不属于存储桶所有者的 S3 对象文件的权限

Posted

技术标签:

【中文标题】覆盖不属于存储桶所有者的 S3 对象文件的权限【英文标题】:Overwrite the permissions of the S3 object files not owned by the bucket owner 【发布时间】:2020-01-24 14:39:49 【问题描述】:

我是存储桶所有者。我存储桶中的某些文件不属于我或无法完全控制它。我希望拥有对文件的完全访问权限。不幸的是,没有文件的所有者,也无法追踪文件是如何上传到存储桶的。

如何覆盖我存储桶中不属于我的文件的权限? 接下来,我如何确保上传到我的存储桶中的文件是我可以完全控制的。

我尝试将文件复制并粘贴到同一个 s3 存储桶中以覆盖权限,但失败了。

这是存储桶策略

“版本”:“2012-10-17”, “身份证”:“abcd”, “陈述”: [ “席德”:“abcd”, “效果”:“允许”, “主要的”: “AWS”:[ “arn:aws:iam::123456789012:user/xxx” ] , “行动”: [ "s3:GetObject", "s3:GetBucketLocation", "s3:ListBucket", "s3:PutObject", “s3:PutObjectAcl” ], “资源”:[ "arn:aws:s3:::xyz/*", “arn:aws:s3:::xyz” ] ]

我想从我的 s3 存储桶访问/下载不属于我的文件

【问题讨论】:

【参考方案1】:

如何覆盖我存储桶中不属于我的文件的权限?

来自 AWS 文档:

默认情况下,S3 对象归上传它的 AWS 账户所有。即使存储桶由另一个帐户拥有也是如此。要访问对象,对象所有者必须明确授予您(存储桶所有者)访问权限。

对象所有者可以授予存储桶所有者对对象的完全控制权 通过更新对象的访问控制列表 (ACL)。物体 所有者可以在放置或复制操作期间更新 ACL,或者 将对象添加到存储桶后。

目前,您唯一的解决方案是通过从对象所有者的帐户或从对象所有者的 S3 控制台运行类似于以下命令的 cli 命令来更改现有文件的访问控制列表 (ACL)。

aws s3api put-object-acl --bucket destination_awsexamplebucket --key keyname --acl bucket-owner-full-control

接下来,我如何确保上传到我的存储桶中的文件是我可以完全控制的?

您可以创建一个存储桶策略,强制其他用户上传到您的存储桶,以授予您对这些对象的完全访问权限。这可以通过将对象的access control list 设置为bucket-owner-full-control 来完成。

类似于下面的存储桶策略可以解决问题:


    "Id": "Policy1541018284691",
    "Version": "2012-10-17",
    "Statement": [
        
            "Sid": "Stmt1541018283275",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::awsexamplebucket/*",
            "Condition": 
                "StringEquals": 
                    "s3:x-amz-acl": "bucket-owner-full-control"
                
            ,
            "Principal": 
                "AWS": [
                    "arn:aws:iam::111122223333:user/ExampleUser"
                ]
            
        
    ]

这将确保上传到您的存储桶的任何人都需要将acl 设置为bucket-owner-full-control,否则上传将失败并出现 AccessDenied 错误。

参考资料:

AWS Documentation: Changing Object Access AWS Documentation: Enforcing Bucket Owner Full Control for Uploads

【讨论】:

以上是关于覆盖不属于存储桶所有者的 S3 对象文件的权限的主要内容,如果未能解决你的问题,请参考以下文章

使用 Amazon S3 阻止公有访问

将数据附加到 S3 对象

存储桶之间的 AWS S3 同步覆盖较新的目标文件

S3 存储桶策略可以覆盖 IAM 策略吗?

列出具有公共读取权限的 S3 对象(在私有存储桶中)

amazon s3 重命名和覆盖文件、建议和风险