Google Cloud Platform 和 FireBase 中 .json 私钥的生产安全性

Production security for .json private keys in Google Cloud Platform and FireBase

我们正在开发一个全栈平台,通过 AppEngine 和 Firebase (Firestore + RealTimeDb) 作为 noSql Db 模块部署在 GCP 上。

我们要直播了,但我有疑问。现在我们正在使用 Firebase private-key.json 将我们的软件连接到 Firebase 并将其保存到项目中的文件夹中,如 src/firebase 并通过以下方式绑定到我们的代码:

admin.credential.cert(require(path))

API键和路径保存到.env文件。

我们使用相同的技术来使用 GCP 客户端库(例如日志系统)。 我还看到 GCP 客户端库 Google 建议使用环境变量,但也表明它们仅在会话期间处于活动状态。

无论如何,为了尊重和优化我们系统的安全性:我们应该使用这些配置还是必须更改它们?拜托,您有什么建议可以避免暴露凭据并且没有易受攻击的系统吗?

谢谢大家

将 John Hanley、guillaume blaquiere、al-dann 和 Alex L 的评论发布为社区 Wiki 以提高可见度。

App Engine 和 Firebase 是不同的服务。他们的配置文件有区别

App Engine 不需要 service-account.json 文件。使用应用程序默认凭证 (ADC)。 在您的应用程序源代码中部署 service-accout.json 文件是不安全的。

AppEngine 服务具有使用 Firebase 产品(Firestore、Firebase 功能)的权限,这应该足够了。这意味着您在 Node.js 后端中并不真正需要 API 密钥和 Firebase 私钥。

App Engine 在服务帐户下运行。可以向该帐户授予相关的 IAM 角色(即 roles/datastore.user),因此它可以与 Firestore 服务一起使用。如果您愿意 - 您可以将它们保存在不同的项目中。

在这种情况下,您可以参考 Node.js quickstart 的指导。