使用IAM条件

时间:2016-12-06 15:33:23

标签: amazon-iam amazon-cognito

根据使用Condition元素的cognito-identity.amazonaws.com:sub键,我很难为用户分配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"
        }
      }
    }
  ]
}

应用-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"
        }
      }
    }
  ]
}

问题是无论谁登录,他总是获得 app-authenticated 角色,也是一个用户“555540a6-cd49-44b2-bbd8-02cfa73b3510”(从userPool复制 - >用户 - >用户详细信息 - > sub)我希望获得 app-authenticated_admin 角色。是否有人期待类似的东西,或者我错过了这样一个简单场景的一些基本概念?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

是的,这似乎是您可以使用新Cognito用户池组功能的一个很好的示例。