我正在编码Firebase应用程序。 用户只能读取数据库,所有者可以在数据库中写入内容以添加一些内容。
所有者需要一个管理桌面应用程序才能在数据库(存储和数据库)上上传数据。 由于该应用程序是C ++应用程序,因此我将使用python与Firebase通信。
我想使用Pyrebase或python-firebase,但不幸的是,这些项目似乎不支持新的数据库Firestore…
其余API可以使用,但是...仅适用于Firestore数据库部分...
然后,将内容添加到Firestore和存储的唯一方法就是使用admin SDK。
我知道C ++应用程序将仅在所有者计算机上使用,但我担心会获得服务帐户文件。
安全使用服务帐户文件的最佳方法是什么?
我想:
答案 0 :(得分:0)
为了对项目使用Admin SDK,您必须有权访问该项目的服务帐户凭据。有了这些凭据,您就可以完全无限制地访问该项目。您应该仅将服务帐户凭据分发给应该具有这种访问权限的用户,通常是项目中的协作者。
对于不是项目合作者的应用程序级管理员,我通常建议设置一个包含服务器端和客户端组件的管理仪表板。
服务器端组件在受信任的环境中运行,对我而言,它通常是Cloud Functions,但也可以是您控制的服务器,甚至是您的开发机器。在这里,您可以使用Admin SDK来执行应用程序管理操作,然后将其暴露在客户端应用程序可以调用的经过身份验证的端点中。
客户端组件是应用程序管理员使用的。对我来说,这通常是一个非常简单的网页,但也可以是您喜欢的任何其他技术,只要它可以调用您在服务器上公开的端点即可。
这里的关键是服务器在代表他们执行管理操作之前,先验证调用它的用户是否有权这样做。使用这种方法,您不必将服务帐户凭据提供给非协作者,并且可以在需要时撤消管理员的凭据。