Graphql 如何向DynamoDB/AppSync添加访问规则?

Graphql 如何向DynamoDB/AppSync添加访问规则?,graphql,amazon-dynamodb,aws-amplify,aws-appsync,Graphql,Amazon Dynamodb,Aws Amplify,Aws Appsync,我正在聊天项目中使用Amplify、AppSync、GraphQL和DynamoDB。 我的目标是构建一个类似于facebook messenger的聊天应用程序。 是否有方法创建对某些DynamoDB文档的访问规则(类似于Firebase中的Firestore规则)?。 换句话说,是否可以仅以安全的方式向特定用户显示特定文档?此主题不时出现,必须认识到安全性可以(也可能应该)发生在应用程序的不同层中 在AWS工作时,理解这一点很重要。IAM是AWS用来定义整个AWS生态系统中资源访问策略的工具

我正在聊天项目中使用Amplify、AppSync、GraphQL和DynamoDB。
我的目标是构建一个类似于facebook messenger的聊天应用程序。
是否有方法创建对某些DynamoDB文档的访问规则(类似于Firebase中的Firestore规则)?。

换句话说,是否可以仅以安全的方式向特定用户显示特定文档?

此主题不时出现,必须认识到安全性可以(也可能应该)发生在应用程序的不同层中

在AWS工作时,理解这一点很重要。IAM是AWS用来定义整个AWS生态系统中资源访问策略的工具

IAM非常强大,甚至可以用来定义每个用户都可以访问哪个DynamoDB分区!这似乎是你问题的解决办法。然而,您的应用程序用户不太可能直接访问DynamoDB。相反,他们正在调用一个API,该API使用与您的用户不同的IAM角色执行Lambda。那么,你是做什么的

还记得我说过安全应该发生在应用程序的不同层吗?好吧,这是其中一次!您的应用程序代码应该根据访问应用程序的用户做出决定,并采取适当的操作来允许/拒绝该访问

例如,您的应用程序可能决定用户只能向他们的朋友发送消息。我不会帮你的。相反,您需要实现逻辑以直接在应用程序代码中强制执行此业务规则

这个故事的寓意是,没有内置的机制来强制执行应用程序可能拥有的所有类型的业务规则

如果您使用的是Amplify,您应该从查看开始。Cognito将帮助您使用IAM角色(例如未经验证、已验证、管理员等)为应用程序的用户设置权限。这些角色将允许您定义不同的IAM策略,为用户授予各种权限(例如访问API网关端点、特定S3存储桶和DynamoDB表等)。

如果我使用lambda函数创建自己的解析程序(即AppSync/GraphQL解析程序),这是创建DynamoDB资源访问规则的好方法吗?