我对 AWS 相当陌生,尽管搜索和阅读了有关角色和策略的信息。我仍然无法弄清楚如何让用户管理用户组来控制 DynamoDB 表中项目的访问。如果有人能通过给我术语或示例来帮助我搜索,我将不胜感激。
用例示例:
- 用户 1 在名为"组"的表中创建项"Group_A"。
- User2 在名为"组"的表中创建项"Group_B"。
- 另一个名为"消息"的表有一个排序键,可以是任何项目的"组"表。
用户 1 如何在不允许用户 2 访问用户 2 的情况下向用户 3 和用户 4 授予对"Group_A"的"消息"的访问权限。
您的方案无法通过 IAM 策略(附加到用户或角色)与与用户池连接的 DynamoDB 精细粒度访问控制直接实现。
DynamoDB 在其最佳访问控制级别允许通过前导键进行行级别访问控制。例如,在您的情况下,如果消息表中消息项的哈希键是 Cognito 中登录用户的属性,则只能为具有 IAM 策略的该用户授予。
但是,您可以在应用程序级别实现此目的。例如,您可以设置 API 网关和 Lambda,以便在 API 网关上验证 Cognito 颁发的id_token,并在 Lambda 代码中编写查询以根据您的访问控制列表限制和检索数据。