具有服务帐户的Firestore中的细粒度权限

时间:2018-12-25 00:58:08

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

我正在写一个从诊断包中收集信息的工具。该工具的结果将写入Firestore进行分析。该工具使用Python编写,并作为软件包分发,包括服务帐户的.json。该服务帐户用于验证从数据库进行的读写操作。以下是每个程序包中使用的数据库组件的片段:

    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还是陌生的,所以我可能朝着完全错误的方向前进!

谢谢!

1 个答案:

答案 0 :(得分:2)

Firestore当前尚无法使用服务帐户将连接范围限定为某些有限权限。使用Admin SDK时,您将始终具有对整个数据库的完全读写访问权限。这是一项普遍要求的功能,如果对您也有用,则应该file a feature request