首页 > 解决方案 > 使用 Firestore REST API 进行管理访问

问题描述

我们发现,在我们的用例中,Firestore REST API 比使用firebase-admin的默认数据库连接读取数据的性能要高得多。

我们在服务器上使用 Firestore,我们使用read/write: false规则存储了一些敏感数据。这样,只有服务器可以从我们的服务帐户中读取这些数据。

由于 Firestore 握手过程的性能原因,我们(因为我们使用 lambda)使用 REST API 从数据库请求数据要快得多。

但是,我们在访问处于锁定状态的数据时遇到了问题,因为似乎授权 REST API 的唯一方法是使用客户端的授权令牌。

我们需要一种通过 REST API 进行管理数据库访问的方法,是否有一些特殊的授权标头或 API 密钥我们找不到允许这样做的地方?

标签: firebasegoogle-cloud-firestorefirebase-admin

解决方案


您需要使用有权访问数据库的服务帐户的凭据进行身份验证。根据文档

如果您使用服务帐号和 Google Identity OAuth 2.0 令牌对请求进行身份验证,Cloud Firestore 会假定您的请求代表您的应用程序而不是单个用户执行操作。Cloud Firestore 允许这些请求忽略您的安全规则。相反,Cloud Firestore 使用 Cloud Identity and Access Management (IAM) 来确定请求是否获得授权。

您项目的默认 App Engine 服务帐户应该已经能够执行此操作。获得服务帐户的令牌后,您可以在Authorization请求的标头中传递它,文档中也提到了这一点。


推荐阅读