【问题标题】:Allowing temporary access to DynamoDB允许临时访问 DynamoDB
【发布时间】:2020-11-28 18:06:04
【问题描述】:

我有一个连接到 Elastic Beanstalk 服务器应用程序的客户端应用程序。我的一些用户需要注册。但是,当注册表单加载时,它需要从 DynamoDB 获取一些数据,以便用户可以在几个选项之间进行选择。

问题是我设置我的服务器的方式是,对服务器的任何未经身份验证的请求(客户端应用程序以前从 Cognito 获得的没有身份验证令牌)都会被拒绝。当然,如果一个人要注册,他们没有经过身份验证,这意味着他们无法从 DynamoDB 访问他们需要注册的信息。这只是我需要的几条信息,所以非常令人沮丧。

我对如何解决这个问题的想法:

  1. 将一长串字符放入客户端应用程序中,当仅对我需要的几条信息发出请求时,该字符串会发送到服务器。服务器还将相同的字符串存储在某个地方,然后将它们进行比较。如果它们匹配,则返回请求的信息。正如我所说,这只会针对我需要的 2 条信息进行,其他一切仍然是安全的。

  2. 在我的 API 中公开两条路由,这些路由指向我需要的信息(我知道,这是个坏主意)。

最好的方法是什么?

【问题讨论】:

  • 为什么 2 是个坏主意?
  • 我认为这可能会导致滥用或 DDoS 攻击

标签: amazon-web-services amazon-dynamodb amazon-cognito


【解决方案1】:

假设您使用的是 cognito,还有一个匿名访客用户的概念,可以分配自己的角色。

您可以将anonymous guest user 视为普通的认知用户(它可以分配一个角色),但是您可以将其权限范围缩小到执行这些操作所需的最低限度。

或者使用选项 2,API 可以调用 Lambda,该 Lambda 只需读取数据即可返回必要的信息。您可能还想查看缓存结果以避免您的 API 网关端点被滥用。

【讨论】:

  • 如果我让它保持打开状态,那么选择#1 不是更好吗?谢谢!
  • 个人而言,选项 2 更简单,如果启用 API 网关端点缓存,则无需过多担心性能。因为它不包含任何敏感的东西就可以了
猜你喜欢
  • 2015-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 2019-07-09
相关资源
最近更新 更多