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 的指导。
我们正在开发一个全栈平台,通过 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 的指导。