适用于aws:username

时间:2018-09-21 00:55:12

标签: amazon-web-services amazon-s3 amazon-cognito

我正在使用AWS Cognito用户池编写一个用户策略,该应用程序需要与以前使用IAM在S3上使用的旧的临时用户管理系统兼容,同时我们要使用Cognito过渡到更好的用户管理模型。

旧系统在组策略中使用arn:aws:s3:::[Our Bucket Name]/${aws:username}/*仅允许用户使用其用户名访问对象。我以为在Cognito中使用相同的用户名将使我们能够使用重复的角色策略,以允许Cognito用户具有相同的访问权限,但是根据thisaws:username对于Cognito不存在;仅有aws:userid,如果我没看错,它实际上是随机生成的唯一字符串,与用户名无关,因此不能用于此目的。

是否还有其他方法可以通过角色策略为Cognito用户授予S3中基于相同名称的给定IAM用户名文件夹的访问权限?我能想到的唯一方法是基于每个用户制定自定义策略,但我希望将对我们现有用户创建系统的更改减到最少。

1 个答案:

答案 0 :(得分:0)

简短答案:请勿将IAM与Cognito混合使用。编写一个app / service / api,以将对象提供给授权用户。

长答案:IAM适用于AWS的管理员或服务。请勿将其与Cognito混合使用。 Cognito用于存储令牌并将其提供给您的用户。您可能会问如何在bucket-name/user-testuser-test中提供对象:

  1. 在S3中存储用户访问权限:对于每个用户,都有一个存储桶access-rights/user-test。它应该缔结用户权利;例如,您可以作为Json:

    {   用户名:字符串,   access-bucket-name:字符串 }

  2. 附加服务:您可以使用身份验证服务来检查用户是否已通过身份验证(使用Cognito),然后根据令牌的主体获取用户名;并检查其权限(第一步),应用程序应从用户想要访问的初始存储桶中提供对象。