【问题标题】:Granular permissions in Firestore with service accountsFirestore 中具有服务帐号的精细权限
【发布时间】:2018-12-25 00:58:08
【问题描述】:

我正在编写一个从诊断包中收集信息的工具。该工具的结果被写入 Firestore 进行分析。该工具用 Python 编写并作为包分发,包括服务帐户的 .json。该服务帐户用于验证来自数据库的读取 + 写入。下面是每个包中使用的数据库组件的 sn-p:

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore

    cred=credentials.Certificate(os.path.join(os.path.dirname(os.path.abspath(__file__), 'name_of_file.json'))
    firebase_admin.initialize_app(cred)

    db = firestore.client()

我希望缩小 Firestore 的权限,因为目前,拥有这些凭据的所有用户都可以完全访问 Firestore。查看文档,这似乎是不可能的:

目前无法将使用 Firebase Admin SDK 和服务帐号访问 Firestore 的代码限定为特定用户 ID 以执行安全规则。使用 Admin SDK 进行的所有访问都将绕过安全规则并完全控制数据库。

有人知道这种用例的解决方法吗?作为替代方案,是否可以对 Firebase 用户帐户进行“硬编码”?如果是这样,最直接的实现是什么?

如果有什么我可以澄清的,请告诉我,我对 Firebase 还很陌生,所以我可能走错了方向!

谢谢!

【问题讨论】:

    标签: python firebase google-cloud-firestore firebase-admin


    【解决方案1】:

    Firestore 目前无法将使用服务帐号的连接限定为某些有限权限。使用 Admin SDK 时,您将始终拥有对整个数据库的完全读写权限。这是一个经常请求的功能,如果这对您也有用,您应该file a feature request

    【讨论】:

    • 感谢您的回复,我会收到提交的功能请求!您知道任何硬编码非服务帐户以供使用的方法吗?我正在查看文档,但不够完善。这听起来很简单,可以实现,但我似乎找不到。非常感谢任何建议/见解!
    • admin SDK 没有办法模拟用户登录。
    • 现在有什么新的或有可能做到这一点吗?
    猜你喜欢
    • 2019-09-07
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 2020-04-02
    相关资源
    最近更新 更多