2016-12-06 105 views
0

根據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的角色。有人期待類似的東西,還是我錯過了這樣一個簡單場景的一些基本概念?

回答

0

嘗試使用Deny而不是Allow未經身份驗證的用戶。 還有你嘗試過用戶池中的用戶組。

+0

感謝您將我推向正確的方向。我最終使用了新的組功能(重要的是:不要忘記在鏈接您的Cognito用戶池的聯合身份管理控制檯的「身份驗證提供程序」部分中定義«選擇標記»,不需要IAM中的其他配置。 – wittwermic

0

是的,這似乎是您可以使用新Cognit用戶池組功能的好例子。