Java DynamoDB用户管理用户组

Java DynamoDB用户管理用户组,java,amazon-web-services,amazon-dynamodb,amazon-iam,Java,Amazon Web Services,Amazon Dynamodb,Amazon Iam,我是AWS的新手,尽管我搜索并阅读了有关角色和政策的内容。我仍然不知道如何让用户管理的用户组控制对DynamoDB表中项目的访问。如果有人能帮我搜索,给我术语或例子,我将不胜感激 用例示例: User1在名为Groups的表中创建项目组。 User2在名为Groups的表中创建项目组。 另一个名为Messages的表有一个排序键,可以是任何项 表组的名称。 User1如何在不允许访问User2的情况下将组A的消息的访问权授予User3和User4。您的场景无法通过IAM策略直接实现,IAM策略附

我是AWS的新手,尽管我搜索并阅读了有关角色和政策的内容。我仍然不知道如何让用户管理的用户组控制对DynamoDB表中项目的访问。如果有人能帮我搜索,给我术语或例子,我将不胜感激

用例示例:

User1在名为Groups的表中创建项目组。 User2在名为Groups的表中创建项目组。 另一个名为Messages的表有一个排序键,可以是任何项 表组的名称。
User1如何在不允许访问User2的情况下将组A的消息的访问权授予User3和User4。

您的场景无法通过IAM策略直接实现,IAM策略附加到与Userpool连接的具有DynamoDB细粒度访问控制的用户或角色

DynamoDB在其最佳访问控制级别允许通过前导键进行行级访问控制。例如,在您的案例中,如果Messages表中消息项的hashkey是Cognito中登录用户的属性,则可以仅为该用户授予IAM策略


然而,您可以在应用程序级别实现这一点。例如,您可以设置一个API网关和Lambda,以便在API网关上验证Cognito发出的id_令牌,并且在Lambda代码中,您可以编写一个查询,根据您的访问控制列表限制和检索数据。

这听起来确实像是您将通过应用程序而不是直接在数据库中控制的类型。类似于使用SQL数据库的典型Web应用程序访问整个数据库,并使用应用程序内置的某种授权系统来控制谁可以访问哪些数据。我知道如何做到这一点并避免人们访问他们不应该访问的数据吗?您是否允许他们访问直接数据库询问?您是否向他们提供登录您的AWS帐户的凭据?通常,应用程序不允许用户直接访问数据库,授权是在应用程序层而不是数据库层处理的。你提到了Java,所以我想看看Spring Security。我非常感谢Mark的帮助。我想我对这一切是如何运作的只有一点点了解。我创建了一个userpool,用户必须进行身份验证,然后通过具有策略的角色获取访问表的凭据。也许我有点偏执,但我的理解是,除非我用策略本身以某种方式阻止对单个项目的访问,否则有人可以制作一个应用程序来验证并访问整个表。我会检查Spring的安全性。谢谢Ashan,我现在正在查看API网关和Lambda,这似乎真的是一条路要走。