为了在我的AWS API网关中添加安全检查,我做了以下操作:
- 我在Amazon Cognito用户池中创建了两个组:
- 经理
- 基本用户
-
我并行创建了两个角色(manager和basic_user(。经理组映射到经理角色,基本用户组映射到基本用户角色。
-
我创建了一个IAM策略来拒绝特定端点GET工作组管理器对basic_user用户的访问,并将此策略附加到basic_user角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"execute-api:Invoke"
],
"Resource": [
"arn:aws:execute-api:us-east-2:<my_account_id>:<API_ID>/*/GET/crew-manager"
]
}
]
}
- 从Postman,我用basic_user的授权承载令牌向GET/crew经理提出了一个请求。当我解码令牌时,我确认该令牌中唯一的角色是basic_user。然而,响应仍然是200,而不是未经授权的类似响应
我做错了什么吗?
角色映射仅适用于API网关上的AWS IAM授权人。如果使用cognito authorizer,则必须在处理程序中进行授权检查,或者实现自己的自定义authorizer以返回适当的策略。