AWS 角色和策略 - 限制对一个存储桶的访问

AWS roles and policies - limit access to one bucket

假设我有 1k 用户(不是 AWS 用户)并且每个用户都有自己的 S3 存储桶。我将使用已签名的 URL 来让他们访问他们的数据。出于安全原因,我想在创建签名 URL 时承担一个角色,以便仅当他们开始弄乱 URL.

时,它才限于他们的存储桶

最好的方法是什么?为每个用户创建角色和策略?在创建已签名 URL 时,我可以创建一个附加策略的单一角色吗?

谢谢!

您应该为每个用户创建一个存储桶。存储桶不是可扩展资源,因为 AWS 账户中的存储桶数量有限制。

您可以将所有用户数据保存在一个存储桶中。如果您希望按用户隔离,请使用子目录。

另一种方法是将所有数据混合在一起,而不是按用户划分。您的应用程序应维护每个对象的数据库,以及 'owner'、创建时间、任何共享权限等元数据。然后,您的应用程序可以通过使用 [=10] 为用户提供对其数据的访问权限=].这样,您的应用可以控制访问权限。

这种方法的一个好处是可以在用户之间共享数据。例如,假设您有一个照片共享应用程序,并且用户想要与另一个用户共享照片。该应用程序可以维护用户之间共享内容的列表,然后创建预签名 URLs 以允许用户访问由不同用户上传的数据。决定所有权的是应用程序,而不是 'where' 放置文件。

您不必担心预签名 URL 可以访问其他内容。预签名 URL 包含验证对象和到期时间的散列签名。签名不能被逆向工程,也不能用于授予对其他资源的访问权限。无需使用具有部分权限的特定 IAM 角色。