aws cognito-允许群聊参与者访问s3存储桶

问题描述 投票:1回答:1

我正在实现一个支持群组聊天的iOS应用,用户可以在其中添加照片和其他文件。

[确定为AWS S3作为存储后端,使用Cognito联合身份验证上载/下载-数据从S3泵送入S3 /从S3泵中提取,而不通过我们的服务器。

到目前为止

我的实现允许用户/身份将其上载并下载到S3存储桶上的自己的文件夹中(示例策略arn:aws:s3:::mybucket/users/${cognito-identity.amazonaws.com:sub}/*变量为identityID / user_id)。

但是

我无法找到一种安全的方式,该方式仅允许小组讨论中的参与者从S3上该小组讨论的文件夹中上载/下载。

有什么想法吗?

关于可能的流程的一些想法:

  1. 首先,用户将照片上传到自己的文件夹,[我知道]
  2. 然后,系统将照片复制到群组聊天的文件夹中[我知道]
  3. 与参加者身份关联的小组聊天文件夹[不确定]]-可能有成千上万的小组和参加者]
  4. 任何赞扬/想法赞赏

我正在实现一个支持群组聊天的iOS应用,用户可以在其中添加照片和其他文件。决定将AWS S3作为存储后端,使用Cognito联合身份验证上载/ ...的身份。...] >>

您的问题可以归结为:

“鉴于用户是组的一部分,我如何基于组成员身份授予用户访问特定于组的子目录的权限?”

据我所见,您有两个选择:

  1. 为每个用户提供其所属成员的所有目录的“密钥”。这可能意味着向该用户添加每个组的权限,或向他们提供对每个组的新IAM角色的访问权限。这是“提出一种对S3具有细粒度权限的策略”。

  2. 不分发任何目录特定的键。相反,当用户请求某个目录时,请检查他们是否在该目录所属的组中。这是“围绕S3构建细粒度的数据存储系统”策略。

  3. 我建议使用后一种方法,因为您没有为每个用户或每个组分配IAM角色或凭据,而是给all

    用户一个凭据:发出S3包装程序请求所需的凭据。如果要跟踪用户所在的组,则包装器所需要做的就是检查user -> groups映射以查看是否应满足请求。前端可以使用相同的映射来美化UI:仅向用户显示从其所属组中进行上传/下载的选项。在这种情况下,我将映射映射为Dynamo表,只要用户注册,加入组,离开组或删除其帐户,该表就会更新。您可以通过用户的Cognito凭据来识别用户,其中包括用户特定的字段。
amazon-s3 amazon-cognito federated-identity groupchat
1个回答
0
投票

您的问题可以归结为:

© www.soinside.com 2019 - 2024. All rights reserved.