当前位置: 首页 > 知识库问答 >
问题:

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

强安和
2023-03-14

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

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

我该怎么做?我应该使用IAM策略还是应该检查Cognito中的id是否等于Lambda中的DB表行id?

共有1个答案

浦思源
2023-03-14

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

你可以在下面的博文中找到完成这项工作的完整步骤。

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

 类似资料:
  • 我遵循的方法是,我为每组用户创建一个单独的Cognito用户池。 当用户登录时,他将通过适当的用户池进行身份验证。 为了调用后续的API,我计划使用Lambda Authorizer。 我遇到了下面的链接,以验证ID令牌。 https://github.com/awslabs/aws-support-tools/blob/master/cognito/decode-verify-jwt/decod

  • 问题内容: 我看过许多类似的问题,因此表明我已经检查了基础知识。当然,这并不意味着我没有错过任何显而易见的东西。:-) 我的问题是:为什么我拒绝具有特权的用户访问权限,而我却已经在其中输入密码并被授予访问权限?(为了完整起见,我尝试输入错误的密码只是为了确保MySQL客户端在程序启动时拒绝我访问。) 背景: 通过ssh登录到运行MySQL服务器的计算机的外壳,我以root用户身份登录: 太棒了 我

  • 我在node.js中通过以下路径生成访问令牌 https://login.microsoftonline.com/{租户-ID}/oauth2/v2.0/token 之后,我得到access_token,但没有范围参数。 当我尝试点击添加了授权标头的 https://graph.microsoft.com/v1.0/users?$filter=startswith(给定名称,“J”)网址时,我得到

  • 我有下面的CloudFormation堆栈。2个lambda(问候和Auth),API网关配置为使用Auth lambda进行授权。 我的lambdas的代码如下: 我尝试在GET请求的头中发送此输入。响应为“未经授权”,没有来自Auth lambda CloudWatch日志中的任何日志。 发生什么事了?

  • 我正在尝试制作一个使用数据库的java应用程序。我已经下载了db2并创建了一个用户'student'。我的程序中有以下几行: 显然,我几乎不知道我在做什么,我不知道如何给予“学生”必要的特权。也就是说,我不知道什么用户可以给他特权,因为我从来没有创建过另一个用户。我看到有人提到过'db2admin'(我使用的是windows),但我不知道该如何处理这段信息。我不知道如何检查现有用户,也不知道对db