根据cognito user-sub(userId)使用IAM分配IAM角色条件

问题描述:

根据cognito-identity.amazonaws.com:sub Key,使用Condition元素很难为用户分配IAM角色。根据cognito user-sub(userId)使用IAM分配IAM角色条件

使用AWS Cognito设置标识池时,您可以指定一个“已认证角色”,其中我选择了应用程序认证的角色。

我有两个IAM角色:

应用验证的

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Principal": { 
     "Federated": "cognito-identity.amazonaws.com" 
     }, 
     "Action": "sts:AssumeRoleWithWebIdentity", 
     "Condition": { 
     "StringEquals": { 
      "cognito-identity.amazonaws.com:aud": "eu-central-1:fa078075-9622-4f0d-8789-700105a9e612" 
     }, 
     "StringNotEquals": { 
      "cognito-identity.amazonaws.com:sub": "eu-central-1:555540a6-cd49-44b2-bbd8-02cfa73b3510" 
     }, 
     "ForAnyValue:StringLike": { 
      "cognito-identity.amazonaws.com:amr": "authenticated" 
     } 
     } 
    } 
    ] 
} 

APP-authenticated_admin

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Principal": { 
     "Federated": "cognito-identity.amazonaws.com" 
     }, 
     "Action": "sts:AssumeRoleWithWebIdentity", 
     "Condition": { 
     "StringEquals": { 
      "cognito-identity.amazonaws.com:aud": "eu-central-1:fa078075-9622-4f0d-8789-700105a9e612", 
      "cognito-identity.amazonaws.com:sub": "eu-central-1:555540a6-cd49-44b2-bbd8-02cfa73b3510" 
     }, 
     "ForAnyValue:StringLike": { 
      "cognito-identity.amazonaws.com:amr": "authenticated" 
     } 
     } 
    } 
    ] 
} 

存在的问题是叔不管谁登录,他总是获得应用程序认证的角色,也是具有sub«555540a6-cd49-44b2-bbd8-02cfa73b3510»的一个用户(从userPool - > users - > user detail - > sub)复制我期望得到app-authenticated_admin的角色。有人期待类似的东西,还是我错过了这样一个简单场景的一些基本概念?

尝试使用Deny而不是Allow未经身份验证的用户。 还有你尝试过用户池中的用户组。

+0

感谢您将我推向正确的方向。我最终使用了新的组功能(重要的是:不要忘记在链接您的Cognito用户池的联合身份管理控制台的“身份验证提供程序”部分中定义«选择标记»,不需要IAM中的其他配置。 – wittwermic

是的,这似乎是您可以使用新Cognit用户池组功能的好例子。