我已经阅读了大量的帖子,这些帖子涉及我认为应该是一个非常常见的用例 - 但却没有找到我想要的内容,或者为什么无法完成它的简单原因。
我在S3上有一些文件。我希望能够通过我构建的前端授予某些用户访问某些文件的权限。
到目前为止,我已经这样做了:
这是有效的,但并不理想,也感觉不对。我必须保留桶的镜像,当AWS已经内置了所有内容时,我还必须维护自己的用户/密码和权限列表。
我真正想要的是简单地在IAM中创建用户并在IAM中使用组权限来控制对S3存储桶的访问。没有重复的数据或功能。我的应用程序将从用户请求UN / PW并使用它连接到IAM / S3以提取存储桶和文件列表,然后显示指向用户的链接。简单。
我怎么能,或为什么不能?
我是以错误的方式看待这个吗?
"对"是什么?解决这个问题的方法(我假设)是非常常见的用例?
答案 0 :(得分:1)
你的想法是正确的,让我们来看看替代方案:
您的应用会存储所有用户的api密钥和密码,并将所有内容委托给AWS IAM权限系统。 虽然在架构上更简单的解决方案,细节可以杀死它。 您的应用应该非常安全,并以非常安全的方式托管秘密API密钥。 这实际上取决于用例:
您的应用使用单个“强”api密钥连接到AWS - 但如果允许特定用户对该资源执行该操作,则查询AWS API。 可悲的是,我不熟悉类似的AWS api - 所以也许其他一些读者想对此发表评论。 这(如果可能的话)将是最简单和最安全的解决方案。
扩展现有解决方案以使用存储在AWS上的数据:用户,组,用户 - >分组,并使用用户/组策略作为权限检查的数据源。 通过这种方式,您可以与AWS进行一些逻辑重复(这很好),但不会出现数据重复,这是真正的痛苦。
答案 1 :(得分:1)
您应该考虑使用Amazon Cognito(2014年发布)为您的用户创建唯一身份,并对其进行身份验证,以便安全访问您的AWS资源,如Amazon S3或DynamoDB。
您可以利用AWS IAM身份,自定义开发者身份,亚马逊IAM,Facebook,Twitter,Google或任何OpenID Connect兼容提供商等公共身份提供商。
此处的常见问题解答 - https://aws.amazon.com/cognito/faqs/