【发布时间】:2020-06-12 22:23:05
【问题描述】:
我正在实现一个支持群聊的 iOS 应用,用户可以在其中添加照片和其他文件。
决定使用 AWS S3 作为存储后端,使用 Cognito Federated Identities 对上传/下载进行身份验证 - 向/从 S3 抽取数据,而不是通过我们的服务器。
到目前为止
我的实现允许用户/身份上传和下载到他们自己的 S3 存储桶上的文件夹(示例策略 arn:aws:s3:::mybucket/users/${cognito-identity.amazonaws.com:sub}/* 变量是 identityID/user_id)。
然而
我无法找到一种安全方式,仅允许群聊中的参与者从 S3 上的群聊文件夹上传/下载。
有什么想法吗?
关于可能流程的一些想法:
- 首先,用户上传照片到自己的文件夹,[我知道怎么做]
- 然后,系统将照片复制到群聊文件夹中[我知道怎么做]
- 将群组聊天文件夹与参与者的身份相关联 [不确定如何 - 可能有数千个群组和参与者]
- 编辑 1:正如@MyStackRunnethOver 建议的那样,可以使用一个 IAM 角色/凭据来管理用户(属于所述组)的所有上传/下载请求 [重大安全问题,如果凭据泄露]。
-
编辑 1:可以使用预签名 URL:文件上传到用户自己的文件夹,预签名 URL 存储在群聊条目中 [尽管最大 url-life 7 天]
- 客户端缓存有助于参与者频繁加入/离开群组
- 需要服务器端计划作业来更新过期的预签名 URL
任何赞扬/想法表示赞赏
【问题讨论】:
标签: amazon-s3 amazon-cognito federated-identity groupchat