【问题标题】:How to safely download and use Firebase admin SDK service account如何安全下载和使用 Firebase admin SDK 服务帐号
【发布时间】:2019-06-09 22:51:20
【问题描述】:

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

所有者需要一个管理桌面应用程序来上传数据库(存储和数据库)上的数据。 由于该应用程序是 C++ 应用程序,因此我将使用 python 与 Firebase 进行通信。

我想使用Pyrebasepython-firebase,但不幸的是这些项目似乎不支持新的数据库 Firestore...

其余的 API 可以工作,但...仅适用于 Firestore 数据库部分...

我将内容添加到 Firestore 和存储的唯一方法是使用 admin sdk。

我知道 C++ 应用程序只能在所有者计算机上使用,但我担心获取服务帐户文件。

安全使用服务帐户文件的最佳方式是什么?

我想:

  1. 用密码加密文件,然后每次询问密码 c++ 需要使用 admin sdk 的时间(哪种技术是 更好吗?)
  2. 每次应用需要时下载服务帐户文件(但在 将其安全地存储在云端?)

【问题讨论】:

  • 如果您使用谷歌云功能,则不需要生成服务密钥文件,如果您打算使用其他东西,任何秘密管理工具都可以解决问题
  • 您的场景中的“所有者”是什么?因为如果他们是项目的开发人员,他们也可以通过 Firebase 控制台访问大部分资源。
  • @andresmijares 它将被用于桌面应用程序,所以不幸的是它不是谷歌云功能......你在谈论什么秘密管理工具?我很想知道。
  • @FrankvanPuffelen 所有者是我的客户。这个应用程序的目的是让他为一首歌设置一些设置(音频效果、歌词等),当他对它们没问题时,他可以将它们上传到 Firebase Firestore 和存储,所有用户都可以使用它新设置。由于他是一个非技术人员,因此他在 Firebase 控制台上下载 json 等可能会很复杂......所以我想将服务帐户嵌入到应用程序中(仅供他使用),但最好确定而不是哭泣我想避免任何泄漏问题。所以这就是为什么我想加密它或在需要时下载它。
  • 如果你认为它有效,它确实有效,而且听起来你已经想通了

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


【解决方案1】:

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

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

服务器端组件在受信任的环境中运行,对我来说通常是 Cloud Functions,但也可以是您控制的服务器,甚至是您的开发机器。这是您使用 Admin SDK 执行应用程序管理操作的地方,然后您将其公开在客户端应用程序可以调用的经过身份验证的端点中。

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

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

【讨论】:

  • 感谢您的解释。确实,我不认为使用这样的云功能。我仍然需要桌面 C++ 应用程序(里面有音频处理的东西),但会调用我的自定义 Python 函数using HTTP,因为它是一个 C++ 应用程序。这样,所有者仍然需要使用 id/password 来调用它,而我不需要共享服务帐户。因此,如果他的计算机被盗或其他问题,则不会出现任何业务问题。
猜你喜欢
  • 2018-10-30
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
  • 2017-04-29
  • 2019-01-15
  • 1970-01-01
  • 2019-05-20
相关资源
最近更新 更多