允许dynamodb只读用户的秘密密钥公开是错误的吗?

is it wrong to allow a secret key for dynamodb read only user to be made public?

本文关键字:错误 秘密密钥 dynamodb 只读 用户 允许      更新时间:2023-09-26

所以我有一个dynamodb表,我已经使用iam控制台在一个对表具有只读访问权限的组中创建了一个用户。

在客户端javascript中拥有此用户私钥的问题是什么,因此我可以向表签署GET请求并使用ajax直接从表中拉?我的意思是,如果表中的所有信息都是公开的那么只读访问键是否已知就无关紧要了,不是吗?

我知道我可以设置一个令牌自动售货机,但我想知道对一个表的全部内容都是公开的只读访问,我可以绕过TVM而不关心暴露私钥吗?

这似乎是一个非常糟糕的主意。你应该在javascript和Dynamo之间实现一个webservice。这将提供一些好处:

  • 您将对最终用户隐藏DB凭据
  • 您可以控制服务器的CORS策略,以实际允许跨域请求
  • 您可以控制验证请求是否来自有效用户,以便您应该将请求传递给Dynamo
  • 你可以用一种最方便在javascript中使用的方式来格式化对客户端的响应
  • 你可以在适当的时候引入响应缓存来进一步减少Dynamo上的读取
  • 可以将数据库交互逻辑放在服务器上,这样更容易维护/改进和向客户端推出更改。

你可能成为DoS攻击的受害者,这将是一个痛苦的防御。

假设攻击者获得了您的密钥并开始发出大量的请求:您可能会消耗所有的读单元,这将给其他客户端带来问题。如果您取消该令牌,那么所有其他合法用户也会遇到问题。最后,如果您使用自动缩放功能,您可能会收到一大笔账单。