我在不同组的cognito用户池中有一组用户。示例:管理员组中有5个用户,主管组中有20个用户。我已经在cognito中创建了应用客户端,并启用了一些内置的Oauth2作用域和自定义作用域。 现在我有了API Gateway API,其中已启用COGNITO AUTHORIZER进行身份验证。这些API可以正常工作。
面临的问题: 使用上述方法,我可以访问我的api,但是如何根据用户范围控制API访问。 池中的所有用户都启用了所有作用域。唯一可以区分用户的是cognito:group,在api auth设置中,我只能设置作用域,在这种情况下,所有用户(无论组如何)都具有所有作用域,因此它们正在通过身份验证。如何根据用户类型控制流量?
答案 0 :(得分:0)
创建用户组时,您将具有一个IAM角色。
基于此,您可以通过在execute api上设置权限来控制对API的访问:
arn:aws:execute-api:{region}:{account}:{apiId}/{stage}/{method}/{ressource}
所有{parameter}都可以是通配符*以匹配所有
。您可以在用户组的描述中找到其用户组的IAM角色ARN,然后进入IAM控制台并更新此角色权限
因此您的政策可以是这样的:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:eu-central-1:1564543246:badfg687e/*/*/petstore"
},
{
"Effect": "Deny",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:eu-central-1:1564543246:badfg687e/*/*/*"
}
]
}
例如,此权限允许该IAM角色所属组的用户中的一部分在API badfg687e的资源petstore上执行所有方法,并拒绝所有其他访问。