授予对AWS S3的读取/读取访问权限以认知用户

时间:2020-06-08 12:19:40

标签: amazon-web-services spring-boot amazon-s3 amazon-cognito

我有一个Web应用程序(使用Spring的Angular +后端)。

TOTO用户创建帐户时,我使用Aws cognito来创建帐户和验证他的电子邮件。 帐户通过验证后,cognito会将用户的信息(ID +身份验证令牌)发送给我。我使用此ID在后端创建该用户。 为了访问后端的API,我在其前面放置了一个链接到cognito的网关API,该网关API会检查令牌和用户身份。

          The use case above works well and I managed to implement it.

          The problematic case is below:

在应用程序中,TOTO必须创建一家公司。 该公司是一种商人帐户,是一个组织,在后台通过名称和ID来实现。用户可以创建任意数量的公司。 公司收集内容。例如,我创建了一家名为“ Pokemon”的公司,在Web应用程序中进行的所有操作,从apk上传,上传图像等...都将存储在S3存储桶中,其URL为/ name-of-the-bucket -of-images / companyId / images / images.jpg。最终用户(也包括其他Cognito用户)将可以转到应用程序的非管理员部分,并在“口袋妖怪”中查看此文件夹中的图像,apk等

我希望能够做三件事: -将存储桶设为私有,也就是说,仅授予创建该存储桶的Cognito用户读写权限...

          As a Toto user, I can add Tony (who is also a cognito user) in my company so that Tony can help me upload my images and administrate

-如何在AWS下为该用户(以TONY身份)授予对该公司S3文件夹的读写访问权限?

  • 我如何做到这一点,以便最终用户可以仅查看该公司的图像和内容而对该文件夹具有读取权限?

我已经将它屏蔽了几天,但在互联网上却找不到一个有趣的答案。知道我可以从后端控制角色和其他角色的创建。

谢谢您的回答。

1 个答案:

答案 0 :(得分:1)

在Cognito内,用户可以属于一个或多个组。这些组中的每个组都可以具有IAM角色assigned to it

每当用户登录IAM密钥时,都会返回IAM秘密密钥和会话密钥,可用于与其他AWS服务进行交互。

在策略中,您可以引用cognito-identity.amazonaws.com:sub值,以增强对特定“文件夹”的访问限制。

通过确保所有相关S3对象的文件夹前缀都以前导cognito-identity.amazonaws.com:sub创建,它将满足您的要求。

可以找到其他信息here