firebase - 使用 Firestore REST API 进行管理访问
问题描述
我们发现,在我们的用例中,Firestore REST API 比使用firebase-admin
的默认数据库连接读取数据的性能要高得多。
我们在服务器上使用 Firestore,我们使用read/write: false
规则存储了一些敏感数据。这样,只有服务器可以从我们的服务帐户中读取这些数据。
由于 Firestore 握手过程的性能原因,我们(因为我们使用 lambda)使用 REST API 从数据库请求数据要快得多。
但是,我们在访问处于锁定状态的数据时遇到了问题,因为似乎授权 REST API 的唯一方法是使用客户端的授权令牌。
我们需要一种通过 REST API 进行管理数据库访问的方法,是否有一些特殊的授权标头或 API 密钥我们找不到允许这样做的地方?
解决方案
您需要使用有权访问数据库的服务帐户的凭据进行身份验证。根据文档:
如果您使用服务帐号和 Google Identity OAuth 2.0 令牌对请求进行身份验证,Cloud Firestore 会假定您的请求代表您的应用程序而不是单个用户执行操作。Cloud Firestore 允许这些请求忽略您的安全规则。相反,Cloud Firestore 使用 Cloud Identity and Access Management (IAM) 来确定请求是否获得授权。
您项目的默认 App Engine 服务帐户应该已经能够执行此操作。获得服务帐户的令牌后,您可以在Authorization
请求的标头中传递它,文档中也提到了这一点。
推荐阅读
- javascript - 在 Leafletjs(不是子域)中使用多个域更快地加载切片
- ssl - heroku 免费套餐和 SSL 证书解决方法?
- python - colab中关于“libtensorflow_framework”的问题
- database - 如何在GCP(谷歌云平台)中每天重复运行python文件?
- r-markdown - Bookdown:密码保护 HTML 中的*单个*页面/章节
- django - models.OneToOneField(User, on_delete=models.CASCADE) 不工作。用户表正在更新,但 UserModelInfo 表未更新
- javascript - 如何使用 Material UI Fade 淡入文本字段输入的组件?
- android - 挂起函数是否在另一个线程中执行并返回结果?
- reactjs - 当我进行一些输入时,getContext 函数为空
- python - 在 MySQL 中以同步和异步方式分配约会时间