如何安全下载和使用Firebase admin SDK服务帐户

如何安全下载和使用Firebase admin SDK服务帐户,firebase,google-cloud-firestore,google-cloud-storage,firebase-admin,Firebase,Google Cloud Firestore,Google Cloud Storage,Firebase Admin,我正在编写一个Firebase应用程序。 用户只能读取数据库,所有者可以在数据库中写入以添加一些内容 所有者需要一个管理桌面应用程序来上传数据库(存储和数据库)上的数据。 由于应用程序是C++应用程序,所以我将使用Python与FielBase./P>进行通信。 我想使用或,但不幸的是,这些项目似乎不支持新的数据库Firestore RESTAPI可以工作,但是。。。仅使用Firestore数据库部分 我向Firestore和storage添加内容的唯一方法是使用AdminSDK 我知道C++应

我正在编写一个Firebase应用程序。 用户只能读取数据库,所有者可以在数据库中写入以添加一些内容

所有者需要一个管理桌面应用程序来上传数据库(存储和数据库)上的数据。 由于应用程序是C++应用程序,所以我将使用Python与FielBase./P>进行通信。 我想使用或,但不幸的是,这些项目似乎不支持新的数据库Firestore

RESTAPI可以工作,但是。。。仅使用Firestore数据库部分

我向Firestore和storage添加内容的唯一方法是使用AdminSDK

<>我知道C++应用程序只在所有者计算机上使用,但我担心获得服务帐户文件。< /P> 安全使用服务帐户文件的最佳方式是什么

我想:

  • 使用密码加密文件,然后每隔一天询问密码 时间C++需要使用管理员SDK(哪个技术将是) 这样更好吗?)
  • 每次应用程序需要时下载服务帐户文件(但在哪里 将其安全地存储在云中?)

  • 为了在项目中使用Admin SDK,您必须有权访问该项目的服务帐户凭据。有了这些凭证,您就可以完全且无限制地访问该项目。您应该只将服务帐户凭据分发给应该具有此类访问权限的用户,通常是项目上的协作者

    对于不是项目合作者的应用程序级管理员,我通常建议使用服务器端和客户端组件设置管理仪表板

    服务器端组件在可信环境中运行,对我来说,可信环境通常是云功能,但也可以是您控制的服务器,甚至是您的开发机器。在这里,您可以使用AdminSDK执行应用程序管理操作,然后在客户端应用程序可以调用的经过身份验证的端点中公开这些操作

    客户端组件是应用程序管理员使用的组件。对我来说,这通常是一个非常简单的网页,但它也可以是您喜欢的任何其他技术,只要它可以调用您在服务器上公开的端点


    这里的关键是,服务器在代表调用它的用户执行管理操作之前,验证调用它的用户是否有权这样做。使用这种方法,您不必将服务帐户凭据提供给非合作者,并且可以在需要时撤销管理员的凭据。

    如果您使用谷歌云功能,您不需要生成服务密钥文件,如果您计划使用其他工具,任何秘密管理工具都会执行“所有者”的把戏在你的场景中?因为如果他们是该项目的开发人员,他们也可以通过Firebase控制台访问大多数资源。@andresmijares它将被用于桌面应用程序,因此不幸的是,它不是google云功能。。。你说的秘密管理工具是什么?“我很想知道这件事。”店主弗兰克万帕夫伦是我的客户。此应用程序的目的是让他为歌曲设置一些设置(音频效果、歌词等),当他对这些设置满意时,他可以将其上传到Firebase Firestore和storage上,所有用户都可以使用这些新设置。因为他是一个非技术人员,所以对他来说,在Firebase控制台上下载json等可能会很复杂。。。所以我想把这个服务账号嵌入到这个应用程序中(只供他使用),但为了避免任何泄密问题,最好还是确定一下。这就是为什么我想加密它或者在需要的时候下载它。如果你认为它有效,它确实有效,而且听起来你已经知道了。谢谢你的解释。事实上,我不认为像这样使用云功能。我仍然需要桌面C++应用程序(内部的音频处理工具),但它将调用我的自定义Python函数,因为它是C++应用程序。这样,所有者仍然需要使用id/密码来调用它,而我不需要共享服务帐户。所以,如果他的电脑被偷了或是其他坏东西,就没有什么商业问题了。