【问题标题】:allow open access to S3 bucket with certain restrictions允许在某些限制下开放访问 S3 存储桶
【发布时间】:2018-12-05 21:56:59
【问题描述】:

如何设置权限,让任何人都可以将文件上传到我的存储桶?

这是一个具有这 3 个功能的示例:

  1. 我可以上传任何文件,也可以从任何地方下载我的文件。
  2. 但是我无法下载别人上传的文件。
  3. 但是,我可以删除其他人上传的文件。

我想知道这个存储桶 (abc) 是如何设置的以及谁拥有它。

1) 我可以上传:

[root@localhost ~]# aws s3 cp test.txt s3://abc/
upload: ./test.txt to s3://abc/test.txt

2) 我可以列出内容:

[root@localhost ~]# aws s3 ls s3://abc | head
                           PRE doubleverify-iqm/
                           PRE folder400/
                           PRE ngcsc/
                           PRE out/
                           PRE pd/
                           PRE pit/
                           PRE soap1/
                           PRE some-subdir/
                           PRE swoo/
2018-06-15 12:06:27       2351 0Sw5xyknAcVaqShdROBSfCfa7sdA27WbFMm4QNdUHWqf2vymo5.json

3) 我可以从任何地方下载我的文件:

[root@localhost ~]# aws s3 cp s3://abc/test.txt .
download: s3://abc/test.txt to ./test.txt

4) 但不能下载别人的文件

[root@localhost ~]# aws s3 cp s3://abc/zQhAqmwIUfIeDnEEHpiaGhXuERgO3bR84jkjhbei1aLiV1758t.json .
fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden

5) 但是,我可以删除不是我上传的文件:

[root@localhost ~]# aws s3 rm s3://abc/zQhAqmwIUfIeDnEEHpiaGhXuERgO3bR84jkjhbei1aLiV1758t.json
delete: s3://abc/zQhAqmwIUfIeDnEEHpiaGhXuERgO3bR84jkjhbei1aLiV1758t.json

我不知道如何设置这样的存储桶。

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    不建议以这种方式设置存储桶。

    任何人都可以上传到存储桶的事实意味着有人可以存储潜在的 TB 数据,将承担费用强>。例如,有人可以托管大型视频文件,使用您的存储桶获取免费存储空间和带宽。

    同样,授予任何人列出您存储桶内容的权限也不是一种好的安全做法。他们可能会发现不打算发布的敏感数据。

    允许任何人从您的存储桶中删除对象也是不明智的,因为有人可以删除所有内容!

    授予对象访问权限的主要方法有两种:

    存储桶政策

    存储桶策略可以授予对整个存储桶或存储桶内特定路径的权限。例如,将GetObject 授予整个存储桶意味着任何人都可以下载任何对象。

    见:Bucket Policy Examples - Amazon Simple Storage Service

    对象级权限

    也可以按对象授予基本权限。例如,将对象复制到存储桶时,访问控制列表 (ACL) 可以指定谁可以访问该对象。

    例如,这会将对象的所有权授予存储桶所有者:

    aws s3 cp foo.txt s3://my-bucket/foo.txt --acl bucket-owner-full-control
    

    如果排除了--acl,则该对象“属于”上传文件的身份,这就是您下载自己的文件的原因。不建议这样做,因为它可能导致存储桶所有者无法访问(甚至可能无法删除!)对象。

    底线:在实施授予其他人或任何人对您的存储桶权限的规则之前,请考虑您的安全性。

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 2021-10-09
      • 2018-05-29
      • 2023-04-05
      • 1970-01-01
      • 2018-10-27
      • 2019-06-12
      • 2014-10-21
      • 2019-04-13
      相关资源
      最近更新 更多