使用 IAM 条件根据已知的用户子 (userId) 分配 IAM 角色
Assign IAM role depending on cognito user-sub (userId) using IAM Condition
根据使用条件元素的 cognito-identity.amazonaws.com:sub 密钥,我很难将 IAM 角色分配给用户。
使用 AWS Cognito 设置身份池时,您可以在我选择 app-authenticated 角色的地方指定一个 «Authenticated role»。
我有两个 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"
}
}
}
]
}
问题是无论谁登录,他总是获得 app-authenticated 角色,也是具有子 «555540a6-cd49-44b2-bbd8-02cfa73b3510» 的用户(从 userPool -> users -> user detail -> sub 复制)我希望获得 app-authenticated_admin 角色。有没有人期待类似的东西,或者我是否遗漏了这种简单场景的一些基本概念?
在未经身份验证的用户中尝试 Deny
而不是 Allow
。
您是否也尝试过用户池中的用户组。
根据使用条件元素的 cognito-identity.amazonaws.com:sub 密钥,我很难将 IAM 角色分配给用户。
使用 AWS Cognito 设置身份池时,您可以在我选择 app-authenticated 角色的地方指定一个 «Authenticated role»。
我有两个 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"
}
}
}
]
}
问题是无论谁登录,他总是获得 app-authenticated 角色,也是具有子 «555540a6-cd49-44b2-bbd8-02cfa73b3510» 的用户(从 userPool -> users -> user detail -> sub 复制)我希望获得 app-authenticated_admin 角色。有没有人期待类似的东西,或者我是否遗漏了这种简单场景的一些基本概念?
在未经身份验证的用户中尝试 Deny
而不是 Allow
。
您是否也尝试过用户池中的用户组。