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

时间:2021-07-18 07:16:51

标签: amazon-web-services amazon-s3 amazon-iam

假设我有 1k 个用户(不是 AWS 用户),每个用户都有自己的 S3 存储桶。我将为他们使用签名 URL 来访问他们的数据。出于安全原因,我想在创建签名 URL 时扮演一个角色,这样只有当他们开始弄乱 URL 时,它才会被限制在他们的存储桶中。

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

另一种方法是将所有数据混合在一起,而不是按用户划分。您的应用程序应维护每个对象的数据库,以及元数据,例如“所有者”、创建时间、任何共享权限等。然后,您的应用程序可以使用 Amazon S3 pre-signed URLs 为用户提供对其数据的访问权限.这样,您的应用就可以控制访问。

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

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