当前位置: 首页 > 知识库问答 >
问题:

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

阎晋
2023-03-14

我是水桶主人。我的bucket中的某些文件不属于我,或者对它没有完全的控制权。我想要完全访问这些文件。不幸的是,没有文件的所有者,无法跟踪文件是如何上载到bucket的。

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

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

这是桶策略

{“版本”:“2012-10-17”,“ID”:“ABCD”,“语句”:[{“SID”:“ABCD”,“效果”:“允许”,“主体”:{“AWS”:[“arn:aws:IAM::123456789012:User/xxx”]},“操作”:[“S3:GetObject”,“S3:GetBucketLocation”,“S3:ListBucket”,“S3:PutObject”,“S3:PutObjectCl”],“资源”:[“arn:aws:s3:::XYZ/*”,“arn:aws:s3:::XYZ”]

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

共有1个答案

裴存
2023-03-14

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

来自AWS文档:

默认情况下,S3对象由上载它的AWS帐户所有。即使桶由另一个帐户拥有,也是如此。要获得对对象的访问权限,对象所有者必须显式地授予您(bucket所有者)访问权限。

对象所有者可以通过更新对象的访问控制列表(ACL)授予bucket所有者对对象的完全控制权。对象所有者可以在put或copy操作期间更新ACL,也可以在对象添加到存储桶之后更新ACL。

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

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

接下来,我如何确保我的桶中上传的文件是我完全控制它的?

您可以创建一个bucket策略,强制其他用户上载到您的bucket以授予您对这些对象的完全访问权限。这可以通过将对象的访问控制列表设置为bucket-owner-full-control来实现。

类似于下面的bucket策略将会起作用:

{
    "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文档:更改对象访问
  • AWS文档:强制桶所有者对上载的完全控制
 类似资料:
  • 根据我的理解,在没有给出访问权限的情况下,任何IAM用户都不能访问S3桶/对象。但是在我的用例中,我能够访问它。 我误解了S3的安全策略吗?这是我的用例我有根帐户在AWS,说根用户。这个用户创建了两个IAM用户,比如管理员和测试用户。并且root用户对两个IAM用户都给予了S3FullAccess权限。 现在我以管理员身份登录并创建了一个Bucket(比如Test)。并启用“阻止所有公共访问”。

  • 问题内容: 使用Java获取S3存储桶中所有项目列表的最简单方法是什么? 本示例仅返回1000个项目。 问题答案: 可能是一种解决方法,但这解决了我的问题:

  • 我是新来的aws cli,我花了相当多的时间在留档,但我不知道如何设置权限的文件后,我已经上传他们。所以如果我上传了一个文件: aws s3 cp资产/js/d3-4.3.0。js s3://示例。实例com/assets/js/ 没有设置访问权限,我需要一种方法来设置它们。aws cli中是否有与chmod 644相当的版本? 就这一点而言,有没有办法查看访问权限? 我知道我可以使用标志与但是如

  • 问题内容: 是否有任何适用于Node.js的Amazon S3客户端库,允许列出S3存储桶中的所有文件? 最著名的aws2js和knox似乎没有此功能。 问题答案: 实际上,aws2js支持通过方法调用以较低级别列出存储桶中的对象。为此,必须传递在Amazon S3 REST API页面 上记录的参数: 上面片段中的变量包含存储桶中所有对象的列表。

  • 我最近通过控制台在AWS上创建了一个S3桶,带有默认settigns(显然除了名称)。我尝试编辑桶策略,但得到这个错误:"错误访问拒绝",与我的管理IAM用户和根帐户。 如何获得编辑S3 Bucket策略的权限?

  • 问题内容: 我正在使用Firebase和angular进行测验。在测验的最后,我想使用以下代码将新属性保存到users对象: 它可以工作,但也可以覆盖用户对象的所有属性。因此,该对象曾经像名称,用户名,电子邮件,密码等一样保存,但是当我按下topscore时,它成为该对象的唯一属性。为什么? 问题答案: 你为什么在这里使用?仅在将其三向绑定到Angular视图时才有用。如果您使用的是常规JavaS