我们正在开发一个通过AppEngine部署在GCP上的全栈平台,并使用Firebase (Firestore + RealTimeDb)作为noSql Db模块。
我们要直播了,但我有个疑问。现在我们使用Firebaseprivate-key.json
来连接我们的软件Firebase它被保存到项目中的一个文件夹中,比如src/firebase
它通过
admin.credential.cert(require(path))
API密钥和路径保存到.env
文件中。
我们使用相同的技术来使用GCP客户端库(例如,Logging system)。我还看到,对于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 Key和Firebase私钥。
App Engine在服务帐户下运行。可以将相关的IAM角色授予该帐户(即roles/datastore.user
),因此它可以与Firestore服务一起工作。如果你愿意,你可以把它们放在不同的项目中。
在这种情况下,你可以参考Node.js快速入门。