Amazon web services AWS-如何为AWS服务分离每个用户的资源
我正在为我的应用程序用户打开一个AWS服务(比如:AWS Rekognition) 问题是:当一个用户(例如:user1)创建资源(例如集合)时,其他用户(例如:user2,user3)也会看到由user1创建的资源 我曾尝试使用Amazon web services AWS-如何为AWS服务分离每个用户的资源,amazon-web-services,amazon-cognito,Amazon Web Services,Amazon Cognito,我正在为我的应用程序用户打开一个AWS服务(比如:AWS Rekognition) 问题是:当一个用户(例如:user1)创建资源(例如集合)时,其他用户(例如:user2,user3)也会看到由user1创建的资源 我曾尝试使用标识池,并从后端服务器为我的用户获取了令牌/标识,但情况并没有好转(我的用户仍然可以看到彼此的资源) 我应该怎么做才能让user1只接收user1的资源 我已经为这个问题挣扎了好几天,但似乎还没弄明白 关于此体系结构,有两种方法: 选项1:客户端/服务器 在此体系结构中
标识池
,并从后端服务器为我的用户获取了令牌
/标识
,但情况并没有好转(我的用户仍然可以看到彼此的资源)
我应该怎么做才能让user1只接收user1的资源
我已经为这个问题挣扎了好几天,但似乎还没弄明白
关于此体系结构,有两种方法: 选项1:客户端/服务器 在此体系结构中,客户端应用程序(如移动设备或基于web的应用程序)调用由后端应用程序承载的API。然后,后端应用程序验证请求,并代表用户呼叫AWS 用户的应用程序从未收到AWS凭据。这是非常安全的,因为后端应用程序可以验证所有请求并应用业务逻辑 选项2:提供AWS凭证 在此体系结构中,客户端应用程序接收临时AWS凭据,使其能够直接调用AWS服务(与您描述的体系结构相匹配) 好处是该应用程序可以直接访问AWS服务,如AmazonS3。缺点是,您需要非常严格地限制授予它们的权限,以确保它们只访问所需的资源 一些服务通过允许IAM权限上的条件来简化此操作,这些条件可以限制可访问的资源,例如通过标记或其他标识符 但是,基于以下情况,亚马逊Rekognion没有此类功能: Rekognion没有可在策略语句的条件元素中使用的特定于服务的上下文键 我认为您可以通过在IAM策略中提供
资源
字符串来限制调用,该字符串可以限制它们进行某些调用的能力(例如DeleteFaces
),以便仅针对特定的集合进行调用
但是,请注意,list
调用,如ListCollections
,要么完全允许,要么根本不允许。无法限制返回的集合列表。(这与大多数AWS服务相同,例如列出EC2实例。)
因此,在使用这种提供凭据的方法时,您应该非常小心授予应用程序的权限。这些是您公司的“用户”员工还是应用程序的用户?这些用户是如何获得凭据以调用您的AWS帐户的?@JohnRotenstein他们是我的应用程序的用户。他们获取凭据的方式:应用程序-->我的后端服务器--(GetOpenIdTokenForDeveloperIdentity)-->AWS Cognito,它将令牌
和标识ID
返回给用户。然后从应用程序中,我请求Rekognition
列出/添加/。。。集合/面。我的型号正确吗?AWS Cognito的位置正确吗?很抱歉,我必须问这些问题,因为我对AWSFYI完全陌生:我的应用程序是用iOS编写的,用Swift编写的,并且遵循以下指导原则:,iOS-Swift
部分。感谢您的快速回复。选项2中的总结(也是我的方法):没有办法限制用户之间的资源(如集合)?i、 e.用户仍然可以看到不是她创建的资源?我想我可以在编程中做一些限制(即控制“谁将看到什么”),但我想首先与您确认是否无法在AWS端进行设置。AWS中的所有资源都属于创建它们的帐户。在任何AWS服务中都没有用户拥有资源的概念。拥有资源的是AWS帐户。通过IAM策略授予对创建/查看/修改/删除资源的访问限制。默认情况下,用户没有权限。他们只能做IAM政策允许他们做的事情。但是,策略因其允许的细粒度控制量而异。