我制作了一个面板,用户可以在其中上传文件。我想让用户只能访问S3 URL,这些URL是他们上传的文件。我怎样才能做到这一点?
用户是基于应用程序的,这意味着在我的案例中,他们是Django用户。
谢谢!任何帮助!!
由于这完全是基于应用程序的,因此可以采取一些步骤来尝试和减轻意外暴露。
首先,以使用用户名前缀的方式组织S3文件夹结构,从层次结构的角度来看,可以限制用户对象的存储范围。我所说的前缀是指密钥可能看起来像users/$USERNAME/file.txt
,其中$USERNAME
实际上是用户的用户名。
您可以在您的应用程序中通过扩展使用Cognito来增强这一点,您创建的每个用户都有一个单独的用户。当用户登录到您的应用程序时,您也可以通过Cognito用户进行登录(这可以通过编程实现(。
成功登录后,您将获得IAM的临时凭据,所有用户都可以分配到Cognito组,该组可以附加IAM角色。当您登录时,它将承担此角色,这允许IAM中支持一些特殊属性。
通过使用${cognito-identity.amazonaws.com:sub}
,您实际上可以将IAM权限限制为仅访问S3存储桶的前缀。这将责任从您的应用程序转移到Cognito和IAM。
有关这方面的更多信息,请访问:Amazon S3:允许Amazon Cognito用户访问其Bucket中的对象。