如何将规则应用于服务帐户Firebase

问题描述

如何将Cloud-Firestore规则应用于服务帐户?就像从Java admin API一样,与数据库建立连接的唯一方法是使用绕过所有规则的服务帐户。我想念什么没有任何意义?还是有一些不使用这种服务帐户的方式来建立与数据库的连接的方法

FirebaSEOptions options = new FirebaSEOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(ServiceAccount.json))
.setDatabaseUrl("DataBaseURL")
.build();

FirebaseApp.initializeApp(options);

我想将其添加一个开源项目中,因此每个人都具有对数据库的完全访问权限并不理想。所以我想应用规则,但idk怎么做?如果您只能使用服务帐户。

如果无法将规则应用于服务帐户,那么如何在没有服务帐户的情况下建立连接?如果那也是不可能的,那么规则的意义是什么

编辑:无法将规则应用于服务帐户,这在Java-Admin SDK中也是一个遗憾REST API,您可以在其中发送请求,该请求将执行。

解决方法

安全规则适用于直接从客户端SDK(例如Android,iOS和客户端JavaScript的SDK)对Firestore的任何访问。

无法将安全规则应用于通过服务帐户访问Firestore的客户端,例如Java,Go和Node.js的Admin SDK。此类客户端在假定为特权环境(例如您的开发计算机,您控制的服务器或云功能)中以管理特权运行。根据定义,这些连接会绕过安全规则,因此无法更改此行为。