来自身份提供商的开放 ID 令牌示例(本例中为 Cognito 用户池):
{
"cognito:groups": [
"testers",
"admins",
],
"email_verified": false,
...
}
我想使用ABAC,就像这里给出的例子一样:https://docs.aws.amazon.com/cognito/latest/developerguide/using-attributes-for-access-control-policy-example.html https://docs.aws.amazon.com/cognito/latest/developerguide/using-attributes-for-access-control-policy-example.html
这样我就可以将策略语句添加到与具有条件的 Cognito 身份池关联的角色,例如:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "rds-db:connect",
"Resource": "arn:aws:rds-db:eu-west-1:123456789012:dbuser:cluster-teapot/db-user",
"Effect": "Allow",
"Condition": {
"ForAnyValue:StringLike": {
"aws:PrincipalTag/groups": "admins"
}
}
}
]
}
如果您使用单值自定义声明(例如上面的“email_verified”),那么它就像一个魅力,但如果我尝试映射数组值声明(例如“cognito:groups”)
aws cognito-identity get-credentials-for-identity...
失败并显示:身份池配置无效。检查为此池分配的 IAM 角色。
这不是信任问题,因为它已经通过单值声明进行了尝试和测试,所以我想知道是否有人知道语法是否错误,或者这是否是一个缺失的功能?