【问题标题】:How to apply rules to service account Firebase如何将规则应用于服务帐户 Firebase
【发布时间】:2020-12-04 12:27:56
【问题描述】:

如何将 Cloud-Firestore 规则应用于服务帐户?与 java admin API 一样,形成与数据库的连接的唯一方法是使用绕过所有规则的服务帐户。我错过了什么没有任何意义?或者是否有一些不同的方法可以在不使用这样的服务帐户的情况下形成与数据库的连接

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

FirebaseApp.initializeApp(options);

我想把它添加到一个开源项目中,这样每个人都可以完全访问数据库并不理想。所以我希望规则适用,但我知道如何?如果您只能使用服务帐户。

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

编辑:没有办法将规则应用于服务帐户,这在 java-Admin SDK 中也是一种耻辱 如果没有服务帐户,您无法直接与数据库建立连接,因此这样做的唯一方法是某种形式您发送请求的 Rest API,它将执行它。

【问题讨论】:

  • 您必须在您的服务器中实施身份验证和授权机制,并在您的云函数中实施您自己的规则(通过定制的业务逻辑),基于每个用户的授权级别类型。

标签: java firebase google-cloud-firestore google-cloud-functions


【解决方案1】:

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

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

【讨论】:

  • 那么使用 Java API 就无法与应用安全规则的数据库建立任何连接?
  • 正确。根据定义,从 Admin SDK 到 Firestore 的连接会绕过安全规则,并且无法更改此行为。
  • 是的。除了 Java 的 Admin SDK 之外,似乎没有任何其他 SDK。该死的
  • 嗯。你知道为什么它首先有规则选项吗?如果您访问数据库的唯一方法是使用服务帐户并且绕过规则
  • “为什么它有规则选项” 在这种情况下,“它”是什么? Firebase 具有服务器端安全规则,因为它允许直接从客户端应用程序访问数据库,而您不能相信代码是正确的。假定使用 Admin SDK 的代码是可信的,因此绕过了安全规则。/
猜你喜欢
  • 2021-02-06
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
  • 2014-06-08
  • 2020-07-20
相关资源
最近更新 更多