AWS-如何为AWS服务分离每个用户的资源

时间:2019-08-08 09:34:10

标签: amazon-web-services amazon-cognito

我正在为我的应用程序的用户打开一个AWS服务(例如:AWS Rekognition)。

问题是:当一个用户(例如:user1)创建资源(例如集合)时,其他用户(例如:user2,user3)也看到由user1创建的资源。

我尝试使用Identity Pool,并从后端服务器上为我的用户获取了Token / Identity,但情况并没有得到改善(我的用户仍然可以看到彼此的资源)

我该怎么做才能让user1仅接收user1的资源?

我已经为这个问题苦苦挣扎了好几天,但似乎无法弄清楚。

致谢

1 个答案:

答案 0 :(得分:1)

此体系结构有两种方法:

选项1:客户端/服务器

在这种体系结构中,客户端应用程序(例如,在移动设备或基于Web的应用程序上)对由后端应用程序托管的API进行调用。然后,后端应用程序将验证请求并代表用户进行呼叫AWS

用户的应用程序永远不会收到AWS凭证。这是非常安全的,因为后端应用程序可以验证所有请求并应用业务逻辑。

选项2:提供AWS凭证

在这种架构中,客户端应用程序会收到临时的AWS凭证,从而使它们能够直接调用AWS服务(与您描述的架构相匹配)。

好处是该应用程序可以直接访问AWS服务(例如Amazon S3)。缺点是您需要严格限制授予他们的权限,以确保它们仅访问所需的资源。

某些服务通过在IAM权限上允许条件来简化此操作,该条件可以限制可以访问的资源,例如通过标签或其他标识符。

但是,基于Actions, Resources, and Condition Keys for Amazon Rekognition - AWS Identity and Access Management,Amazon Rekognition没有这样的功能:

  

Rekognition没有可在策略语句的Condition元素中使用的特定于服务的上下文密钥。

我认为您可以通过在IAM策略中提供一个Resource字符串来限制呼叫,这可以限制他们进行某些呼叫(例如DeleteFaces)的能力,这样只能针对特定的collection

但是,请注意,list之类的ListCollections呼叫已被完全允许或完全不允许。不可能限制返回的集合列表。 (这与大多数AWS服务相同,例如列出EC2实例。)

因此,在使用这种提供凭据的方法时,您应该非常小心授予应用程序的权限。