我想将一些有关移动应用程序使用情况的分析信息存储到 Amazon DynamoDB 中。我有以下要求:
- 每个移动应用程序只有一个 DynamoDb 表
- 应用只能执行
PutItem
方法 - 应用的所有用户都未经身份验证(来宾)
为了向移动应用程序提供一种访问 DynamoDb 中表的方法,我看到了两个选项:
- 将具有有限权限的凭据硬编码到应用中(对特定表执行
PutItem
的权限); - 使用 Amazon Cognito 在运行时获取未经身份验证的用户的临时凭证。
亚马逊强烈建议使用第二种选择,因为它更安全。就我而言,恶意用户可以访问硬编码的凭证或硬编码的身份池 ID,结果相同:访问 AWS 资源。
问题:在我的情况下使用 Cognito 是否会带来任何安全改进,如果是,如何?
Cognito身份是完全免费的 - 您无需支付任何费用。
您认为使用 Cognito 不会为未经身份验证的请求添加任何安全性的观点不正确。从认知常见问题解答:
<小时 />问:Cognito Identity 如何帮助我安全地访问 AWS 服务?
Cognito Identity 为您的用户分配一组临时的有限权限凭证,以访问您的 AWS 资源。您可以使用 Cognito Identity 从您的移动应用程序安全地访问其他 AWS 服务,而无需您的 AWS 账户凭证。您还可以在身份和访问管理策略中使用为应用程序用户生成的唯一标识符。例如,您可以为 S3 存储桶创建一个策略,仅允许特定用户访问其自己的文件夹。
<小时 />S3 描述的相同事情可以用 dynamo 完成 - 有关详细信息,请参阅此博客文章。