【问题标题】:Fine grained access control with Appsync/Firebase使用 Appsync/Firebase 进行细粒度访问控制
【发布时间】:2019-05-20 18:21:29
【问题描述】:

当需要细粒度的访问控制时,使用 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 或类似解决方案上会更好吗(从而失去功能的优势)?

注意:如果读了这么多还是不清楚,我很抱歉,英语是我的第一语言。

【问题讨论】:

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


    【解决方案1】:

    AWS AppSync 最近添加了 Pipeline Resolvers,这听起来是您的用例的完美解决方案。您可以使用一系列解析器函数组成 GraphQL 解析器。您对文档集合表的身份验证检查可以实现为可重用功能。

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

    【讨论】:

    • 感谢您抽出宝贵时间阅读和回复!看来我可以解决这个问题。他们上个月及时发布了它:)我有一个问题。亚马逊是否有任何解决方案可以让我在本地编辑架构然后部署?我只是想对此进行版本控制。
    • 是的,您可以使用 CloudFormation 管理模式。最快的入门方法是使用AWS Amplify CLI,它允许您使用声明性 GraphQL 定义后端如果您想要更多控制,那么您可以use CloudFormation directly
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2018-03-23
    • 2021-01-03
    • 2018-03-21
    • 2021-12-23
    相关资源
    最近更新 更多