繁体   English   中英

How to build a secure Firestore API for 3rd party developers: SDK vs Firebase REST API vs https functions?

[英]How to build a secure Firestore API for 3rd party developers: SDK vs Firebase REST API vs https functions?

我必须使用 Firebase 构建一个 API,并且需要一些设计选择方面的帮助。 我希望能够将 API 出售给用户,然后用户可以使用它来构建/集成自己的应用程序。 用户将具有读取和写入权限。

一般信息:

  • 我正在使用带有 email 和密码身份验证的 Firestore db。
  • 只有特别指定的用户可以使用 API
  • 每个用户只能访问与他们有关的特定文档。

我注意到可以将 API 提供给我的 Firestore 数据库用户的 3 种不同方式:

  1. https 触发云函数( https://firebase.google.com/docs/functions/http-events
  2. 使用 SDK ( https://firebase.google.com/docs/firestore/client/libraries )
  3. 使用 Firbase 提供的 REST API ( https://firebase.google.com/docs/firestore/use-rest-api )

API 要求:

  • 仅由我特别授予访问权限的用户使用(电子邮件和密码登录)
  • 我想将这些用户限制在他们能够执行的几个读/写任务中。
  • 它需要是安全的。

我目前的做法是:

  • 使用第 3 个选项 - REST API 由 Firebase 提供(从而为用户提供 projectId 和 ZDB9464ZADE1)
  • 将授权用户添加到 Firbase 上的授权帐户列表,并使用自定义声明和数据库规则限制访问。

我的问题:

  • 似乎 https 函数(选项 1)通常用于 API 构建。 选项 2 和 3 不安全吗?
  • 3个选项的正常用例是什么? 什么时候应该使用,什么时候应该避免?
  • 我选择的选项 3 有什么明显的缺陷吗?
  • 非常感谢有关做出这些设计决策的任何其他有用信息。

先感谢您

TL;DL:这取决于你想用这个 API 做什么,以及有多少和什么类型的设备/用户将调用它。

在回答您的问题之前,我将在下面列出每种方法的优点:

  • 云功能:

Cloud Function 是一种功能即服务解决方案,因此它也是您的 API 的托管服务,因此您无需配置、管理或升级服务器,ZDB974238714CA8DE634A7CE1D083A14 将根据负载自动扩展。 此选项还考虑了 SDK 和客户端库的优点,因为无论如何您的代码都必须使用它来连接到 Firestore。

  • SDK 和客户端库:

这是访问 Firestore 的最简单且更优化的方式,但是,无法运行本机库的环境(例如 IOT 设备)将被排除在您的解决方案之外,因此在实施此选项时请考虑这一点。

  • 云防火墙 REST API:

每台正确授权访问 Firestore 的设备都可以这样做。

NOTE : For both SDK and REST API you will need to consider hosting of your API, either on Cloud Functions, as mentioned, App Engine Standard, App Engine Flex or a Compute Engine Server Instance.

话虽如此,您和您的 API 的使用和要求决定哪个选项是最好的,考虑到上述几点。

根据安全性,如果 firebase 规则和 firebase 身份验证设置正确,所有选项都是安全的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM