使用AWS apigateway限制php终端节点

时间:2019-09-22 11:54:34

标签: laravel amazon-web-services aws-api-gateway

我有在laravel框架中编写的后端API。每个客户端请求都通过单个AWS api网关。该网关仅验证用户身份(身份验证)并将其代理到php后端API。网关没有针对每个资源(如用户,产品,订单等)的API。AWS用户池中有两种类型的用户。管理员和普通用户。现在,我想将某些php API端点(编辑,删除)限制为非管理员用户。 一种方法是在数据库中维护用户信息及其角色和权限,并处理php代码本身的逻辑。当我阅读AWS文档时,它说它可以控制对API的访问。正如我已经提到的那样,每种资源都没有单独的api-gateway,我不知道是否可以在网关本身中控制访问。有人可以帮助我使用哪种方法。是在php代码中维护RBAC逻辑是正确的方法,还是只是矫kill过正。

1 个答案:

答案 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"
      ]
    }
  ]
}