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

时间:2019-09-24 12:57:44

标签: amazon-web-services amazon-s3

我是存储桶所有者。存储桶中的某些文件不是我所有或不完全控制它。我想要完全访问这些文件。不幸的是,没有文件的所有者,也无法跟踪文件如何上传到存储桶。

  • 如何覆盖存储桶中不属于我的文件的权限?
  • 展望未来,我如何确保我可以完全控制自己存储在存储桶中的文件。

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

这是存储桶策略

{     “ Version”:“ 2012-10-17”,     “ Id”:“ abcd”,     “声明”:[         {             “ Sid”:“ 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 个答案:

答案 0 :(得分:2)

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

来自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错误。

参考文献: