我有在laravel框架中编写的后端API。每个客户端请求都通过单个AWS api网关。该网关仅验证用户身份(身份验证)并将其代理到php后端API。网关没有针对每个资源(如用户,产品,订单等)的API。AWS用户池中有两种类型的用户。管理员和普通用户。现在,我想将某些php API端点(编辑,删除)限制为非管理员用户。 一种方法是在数据库中维护用户信息及其角色和权限,并处理php代码本身的逻辑。当我阅读AWS文档时,它说它可以控制对API的访问。正如我已经提到的那样,每种资源都没有单独的api-gateway,我不知道是否可以在网关本身中控制访问。有人可以帮助我使用哪种方法。是在php代码中维护RBAC逻辑是正确的方法,还是只是矫kill过正。
答案 0 :(得分:0)
最简单的方法可能是使用标准IAM角色和策略:https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html
要允许API调用者调用API或刷新其缓存,必须创建IAM策略,以允许指定的API调用者调用启用了IAM用户身份验证的API方法。 API开发人员将方法的authorizationType属性设置为AWS_IAM,以要求调用方提交要进行身份验证的IAM用户的访问密钥。然后,将策略附加到代表API调用者的IAM用户,包含该用户的IAM组或该用户承担的IAM角色。
您可以在official documentation中找到更多信息,但这是一个IAM策略示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Permission",
"Action": [
"execute-api:Execution-operation"
],
"Resource": [
"arn:aws:execute-api:region:account-id:api-id/stage/METHOD_HTTP_VERB/Resource-path"
]
}
]
}