如何使用自定义授权者lambda函数生成的策略文档?

时间:2016-07-27 20:29:42

标签: amazon-web-services amazon-s3 amazon-dynamodb aws-lambda aws-api-gateway

假设我有这个用例,允许用户从某个dynamodb表中读取getObject和putObject权限。

以下项目我已经能够建立 - :  1.用户通过认证用户池进行身份验证  2.成功验证后,访问令牌发送到API网关  3.自定义身份验证蓝图用于验证和生成策略文档

现在我无法理解的是在哪里以及如何提及表/ S3权限细节。

我浏览了以下文档/博客

https://aws.amazon.com/blogs/compute/introducing-custom-authorizers-in-amazon-api-gateway/

http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html

https://mobile.awsblog.com/post/Tx3JK25U7Z9EUIU/Integrating-Amazon-Cognito-User-Pools-with-API-Gateway

但是,我仍然对使用自定义身份验证lambda创建的策略文档的方式和时间感到困惑?并且对该流程的澄清将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

我们实际上刚刚启动了对Cognito用户池的本机支持,这将验证Cognito出售的JWT。然而,这只会做一个简单的ALLOW / DENY决定(允许令牌有效),因此没有细粒度权限的概念。

对于自定义授权程序,您生成的策略将被缓存,并且可以应用于整个RestApi(或使用相同授权程序的所有方法)。该策略允许您像使用IAM用户/角色一样设置细粒度权限。

一个用例是基于组的权限设置,其中自定义授权者确定调用者是谁,并在对第一个API调用的响应中分配组策略(例如admin,readonly,blocked等)令牌。这些策略将为API中的特定资源/方法设置细粒度的权限。然后,在对该共享中的任何其他资源/方法的后续API调用中,将应用组策略。

所以好处是:

  1. 与用户关联的细粒度权限策略,如IAM用户/角色。
  2. 缓存整个RestApi的策略可减少Lambda调用(成本和延迟优势)。