【问题标题】:Pass context value into firestore document add/set/update from Admin SDK从 Admin SDK 将上下文值传递到 firestore 文档添加/设置/更新
【发布时间】:2020-11-05 15:33:09
【问题描述】:

我希望使用https.onCall 接受来自用户的一些输入(例如关于另一个用户的数据)。然后,我想对该数据进行一些高级处理,包括从我的 Firestore 上不应公开的其他条目中检索敏感数据。根据该分析的结果,我将更新数据库中的其他位置。但是,我担心原始呼叫及其来源的安全性。我知道我在onCall 上有context 参数来验证源是否已登录,但我想根据提供给云功能的context.auth 将安全规则应用于最终写入。

对于正常的数据库操作,安全规则是直截了当的,但如果我正在执行通过 Admin SDK 路由的操作(由普通用户播种),则不是。

想法?

【问题讨论】:

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


    【解决方案1】:

    但我想根据提供给云功能的 context.auth 将安全规则应用于最终写入

    正如您所知,您可以识别调用函数的用户以及 Admin SDK 对数据库具有超级访问权限的情况,一般流程应该是编写函数,使它们只编辑应该编辑的文档可由用户编辑。

    如果您仍想缩小访问范围,可以在初始化管理应用程序时通过 databaseAuthVariableOverride 为 firebase 数据库执行此操作。

    Read more on authenticating with limited privileges

    【讨论】:

    • 也许我读错了,但看起来“使用有限权限进行身份验证”仅适用于实时数据库?我在 Firestore 中没有看到类似的文档?
    【解决方案2】:

    当您使用管理 SDK 或任何服务器 SDK 时,它始终会绕过所有安全规则。规则仅适用于使用客户端 SDK 直接来自网络和移动客户端的访问。

    如果您需要对从后端写入的数据应用某种排序或限制,则需要将其编码到后端代码的逻辑中。安全规则将无济于事。

    【讨论】:

      猜你喜欢
      • 2022-01-07
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 2019-07-29
      • 2019-09-01
      相关资源
      最近更新 更多