如何对S3存储桶中的单个对象实施访问控制?

时间:2019-05-08 08:25:50

标签: amazon-s3

我有一个S3存储桶,默认情况下是私有的。 现在,我想对该存储桶的对象实施访问控制。

例如,如果存储桶具有三个对象A,B,C,则对象A,B可以是公共的,而对象C可以是私有的。
应该可以从应用程序中将公共对象设为私有,反之亦然。私有对象只能由选定的应用程序用户访问,而公共对象则可以由所有人访问。 有什么办法可以实现吗?
到目前为止,我已经研究了object tagging。但是我不确定它是否适用于我的情况。

1 个答案:

答案 0 :(得分:0)

您是正确的,默认情况下Amazon S3中的对象是私有的。

然后您可以通过几种方法授予访问权限:

  • 在单个对象上设置访问控制列表(ACL),以将其设置为“公开”(或重新设置为“私有”)
  • 创建桶策略以授予对整个桶或桶中路径的访问权限
  • IAM用户添加策略,以允许该用户访问全部/部分Amazon S3存储桶
  • 创建预签名URL 以授予对私有对象的限时访问权限

因此,您当然可以将特定对象设为“公共”,然后使用ACL将其更改为“私人”。

要使特定对象可供特定用户访问,您应使用预签名URL 。它们的工作方式如下:

  • 用户验证您的应用程序
  • 当用户希望访问私有对象时,应用程序负责确定是否允许他们访问私有对象
  • 如果是,则应用程序会生成一个预先签名的URL 。只需几行代码,不需要对S3的API调用。
  • 然后,应用程序会像其他任何链接一样提供预签名的URL,例如将其放在<a>标记或<img>标记中。就像Internet上的任何其他资源一样,可以在有限的时间内访问该对象。
  • 持续时间到期后,URL将不再起作用(访问被拒绝)

这样,您的应用程序将完全控制谁可以访问哪些对象,并且授权用户可以直接从Amazon S3访问对象。此外,应用程序用户不需要特定于AWS的登录名;他们将对您的应用程序进行身份验证。

请参阅:Share an Object with Others - Amazon Simple Storage Service