使用Appsync / Firebase的细粒度访问控制

时间:2018-12-20 08:43:17

标签: firebase aws-lambda google-cloud-functions serverless aws-appsync

当需要细粒度的访问控制时,使用Appsync / Firebase创建一个完全“无服务器”的应用程序是一个好主意吗?

我尝试使用Firebase构建一个应用程序,然后再使用AppSync构建一个应用程序,感觉这些解决方案让我很吃力,我开始认为也许我仍在思考解决问题的“旧”方式,并且那就是让我瘫痪的原因,而不是工具。

在访问控制方面遇到麻烦的地方。 Firebase具有“ Firebase规则”,而AppSync具有“ VTL”(Apache Velocity模板语言),两者均提供了相对较好的解决方案,“ Firebase规则”更容易且更干净,但是VTL更加健壮,因为它基本上是一种编程语言。

问题是我试图根据权限的“集合/表”授予用户访问数据库上文档的权限。因此,每个用户在该“集合/表”中都有一个具有细粒度权限的文档,我需要阅读该文档才能知道他是否有权访问他尝试读取/写入的资源。

通过firebase和AppSync,我都可以读取数据库,但是它们都有其局限性:

  • Firebase规则具有请求限制。如果用户 有多个“权限组”。
  • AppSync更加灵活,但仍然受限制,如果要编写一些逻辑,我宁愿使用我选择的语言而不是VTL。另外,我宁愿将代码保存在项目内部,而不是仅通过GUI访问云中的代码。

因此,最终,这两种解决方案都迫使我在它们之前添加另一层以便执行更复杂的工作,因此它既可以是函数也可以是整个应用程序。 但是,为什么我需要它们的所有API?在之前使用Appsync / Firebase,基本上会迫使我重新实现GraphQL / Firebases API,然后,为什么不使用其他工具来构建它呢?

那么,我做错了吗?在AppEngine或类似的解决方案上部署应用程序会更好(从而失去功能的优势)吗?

注意:很抱歉,如果这些阅读仍然不清楚,英语是我的母语。

1 个答案:

答案 0 :(得分:1)

AWS AppSync最近添加了管道解析器,这听起来像是您的用例的理想解决方案。您将GraphQL解析器与一系列解析器函数组成。您对文档收集表的身份验证检查可以实现为可重用功能。

看看Pipeline Resolvers教程,看看它是否满足您的需求。