首页 > 解决方案 > 使用 Cognito 从 API 网关方法调用 Lambda 函数时,如何仅授予对用户特定资源(DynamoDB、S3)的访问权限

问题描述

我正在使用 AWS(Lambda、Cognito、API Gateway、DynamoDB 和 S3)创建一个无服务器后端。

我在 DynamoDB 上有一个用户表和一个用于访问该数据的 API(Lambda 和 API 网关)。我想根据 Cognito 用户凭据在行级别授予对表的访问权限。

我怎样才能做到这一点?我应该使用 IAM 策略还是应该检查来自 Cognito 的 id 是否等于 Lambda 中的 DB Table 行 id?

标签: amazon-web-servicesaws-lambdaamazon-dynamodbaws-api-gatewayamazon-cognito

解决方案


您可以使用 cognito 授予对 s3 和 DynamoDb 中用户特定数据的访问权限。您的身份池中的变量(不同于用户池中的子变量)可以动态写入您的身份验证角色策略。因此,如果您的 dynamodb 文档中有 sub 变量并作为 s3 对象的前缀(基本上是保存文件的“文件夹”名称),您可以使用单个策略根据登录的用户授予访问权限。

您可以在以下博客文章中找到执行此操作的完整步骤。

https://aws.amazon.com/blogs/mobile/building-fine-grained-authorization-using-amazon-cognito-user-pools-groups/


推荐阅读