【问题标题】:How to restrict Amazon S3 API access?如何限制 Amazon S3 API 访问?
【发布时间】:2011-07-22 01:41:15
【问题描述】:

有没有办法创建一个不同的身份(访问密钥/秘密密钥)以通过 REST API 访问 Amazon S3 存储桶,我可以在其中限制访问(例如只读)?

【问题讨论】:

    标签: amazon-s3


    【解决方案1】:

    推荐的方法是使用 IAM 创建一个新用户,然后apply a policy 给该用户。

    【讨论】:

      【解决方案2】:

      是的,你可以。 S3 API 文档描述了可供您使用的Authentication and Access Control 服务。您可以设置一个存储桶,以便另一个 Amazon S3 账户可以读取但不能修改存储桶中的项目。

      【讨论】:

      • 所以我设置了另一个 S3 帐户并使用它的凭据(密钥/秘密)然后呢?
      • 这将限制他们(即拥有其他帐户凭据的人)操纵该共享存储桶,但他们不会不受限制地访问该 S3 帐户和存储吗?意思是,他们可以通过 API 创建存储桶并将内容上传到他们心中的内容?我正在专门寻找一种方法,让客户端应用程序可以使用 restful API 与 S3 对话,但在使用这些凭据可以做什么方面受到限制。即只读。这可能吗?
      • 您是对的,使用另一个 S3 帐户可以让该其他帐户创建新的存储桶。我能想到的执行您建议的唯一方法是使用 anonymous 访问您的 S3 存储桶。如果您选择足够随机的对象名称,那么人们就不太可能猜到您的对象的名称。但是,您需要负责匿名下载所产生的带宽成本,并且对您的对象的访问不仅限于经过身份验证的帐户。
      • 我不担心人们下载东西......只是不希望他们做任何其他事情。只读,原来如此。因此,如果使用 REST API,是否始终适用于对商店具有完全访问权限的用户?这样做的唯一方法是通过对象的公共 URL 使用正常的 HTTP 下载?
      • 为了使用 REST API,其他用户必须经过身份验证。要进行身份验证,他们必须拥有自己的 Amazon AWS 账户。由于帐户是独立的,因此您不能限制他们可以使用自己的帐户执行的操作。因此,您唯一的选择似乎是公共下载访问权限。
      【解决方案3】:

      查看http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/index.html?UsingAuthAccess.html 的详细信息(点击“使用查询字符串身份验证”的链接)——这是 Greg 发布的子文档,描述了如何动态生成访问 URL。

      这使用散列形式的私钥并允许过期,因此您可以短暂访问存储桶中的文件,而不允许不受限制地访问 S3 存储的其余部分。

      构建 REST URL 相当困难,我花了大约 3 个小时的编码才把它弄好,但这是一种非常强大的访问技术。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-20
        • 2021-08-14
        • 2018-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多