【问题标题】:what the ideal way to query dynamoDB from web app?从 Web 应用程序查询 dynamoDB 的理想方法是什么?
【发布时间】:2015-01-25 21:10:34
【问题描述】:

我正在尝试从我的 Web 应用程序中查询 DynamoDB。

在使用 IAM 并创建 3rd 方角色并让用户通过 Facebook 或 Google 登录我的网络应用程序后,我成功地做到了,我的应用程序获得了一个令牌并创建了 AWS 凭证。

现在,我希望我网站的任何用户都能够查询我的一个 dynamoDB 表,该表应该是一个公共表,我尝试使用 Roles 进行此操作 - 模拟以前的方式 - 但我总是收到错误“配置中缺少凭据”?

如何避免这种情况?有没有办法在没有来自第 3 方的令牌的情况下创建 AWS 凭证并将它们附加到 IAM 角色,或者我是否必须使用密钥创建一个 IAM 用户,或者有其他更好的方法吗?

【问题讨论】:

  • 不确定为什么要使用 IAM 角色。您的 Web 应用程序服务器是否有 Fix IP,设置在 security group 中,并且只允许该 IP 可以访问 DynamoDB。
  • 我正在尝试学习 AWS,但我没有太多经验。我只在本地运行网站。你能进一步解释一下你的想法吗?
  • 据我所知,DynamoDB 没有“公共”表。此外,如果您直接从 Web 应用程序查询 DynamoDB,则用户将有权访问您作为网站一部分提供的任何凭据。
  • 在我的网络应用程序中创建了一个对我的 DynamoDB 具有只读权限的 IAM 用户以及硬编码关联的 accessKey 和 sercreteAccessKey 之后,我能够成功地做到这一点。通过阅读 AWS IAM,我了解到用户是一个用户或一个实体,例如:我或你,并且关系是一对一的,但我可以假设用户是指 web_user,在这种情况下,这将是关系一-to-many 或任何使用我的网站的人都将使用这些相同的凭据,如果我假设,这会产生任何问题吗?它是否与任何 IAM 最佳实践相矛盾?
  • 在您所描述的情况下,这将是 web_user 方案。您需要小心您将向您的 web 应用程序的用户公开哪些权限和凭据。您的 IAM 用户应非常限制其拥有的任何权限,因为恶意用户可以获取这些凭证并滥用您授予他们的任何权限。有一些policy keys that are specific to DynamoDB 可用于进一步限制访问。

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


【解决方案1】:

听起来您需要 Amazon Cognito。如果您正在寻找示例 Web 应用程序,最近发布了一篇关于示例应用程序的博文,该示例应用程序使用 Amazon Cognito 对用户进行身份验证以访问 DynamoDB 表。 http://www.infoq.com/articles/mars-rover-application-DynamoDB

具体来说,您可能会发现“应用程序通过 Amazon Cognito 对用户进行身份验证”部分很有用。

希望对您有所帮助!祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 2019-11-22
    • 2014-09-21
    • 2014-09-01
    • 2010-09-08
    • 2011-07-03
    相关资源
    最近更新 更多