为什么 Google 在自己的多租户应用程序文档中不推荐 Google Firebase?

问题描述

Firebase 最佳实践文档中有一条关于将 Firebase 用于多租户应用程序的警告:https://firebase.google.com/docs/projects/learn-more#multi-tenancy

这是我最关心的:“多租户可能会导致严重的配置和数据隐私问题,包括分析聚合、共享身份验证、过于复杂的数据库结构以及安全规则困难等意外问题。” Identity Platform 看起来应该涵盖除分析聚合和数据库结构之外的所有内容,但我可以控制分析日志记录,而且我的数据库结构足够简单,按租户划分干净。我的应用程序是一种常见应用程序,但包含租户数据和用户(通过 Google Identity Platform 管理)。

还有大量 Google 官方文档支持使用 Firebase 进行多租户:https://cloud.google.com/identity-platform/docs/multi-tenancy-authentication。还有很多关于如何使用 Firebase 和 Google 身份提供商设置多租户的示例。

你知道为什么他们会有这些相互矛盾的建议和例子吗?使用 Google Identity Platform 是否可以修复警告中提到的核心安全缺陷?这让我强烈考虑放弃 Firebase,鉴于它为我提供的功能,这将是一种耻辱。

解决方法

该建议不绑定到 Firebase、GCP 或 Google。这是通用的。如果你把所有的数据放在同一个包里,只做逻辑隔离,那只是逻辑上的,不像不同的项目那么强。

因此,很容易在所有租户数据中犯错误和使用、删除、更新、弄乱。万一发生攻击、泄露、重大BUG,可以通过几个小租户来减少爆炸半径。

这是在执行更多管理(因为您有很多租户)和更高风险(多租户项目,崩溃是戏剧性的)之间的权衡。它还取决于您的应用程序类型和上下文。这是推荐,不是义务!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...