我有与此处提到的问题相同的问题:使用app.yaml在GAE中安全地存储环境变量 - 即:
"我需要在app.yaml中存储API密钥和其他敏感信息作为环境变量,以便在GAE上进行部署.问题在于,如果我将app.yaml推送到GitHub,这些信息就会公开(不好)."
另外我想查看以下方框:
- 防止供应商锁定(尽可能多)以及将dockerfile带到别处的能力.
- 使用GitHub轻松部署.我希望推动一个触发构建的主人.
- 独立开发人员或小团队的最小设置或适当的工作量和工作流程.
我的研究得出以下结论:
使用app.yaml在GAE中安全地存储环境变量
如何在Google App Engine中设置环境变量/应用程序机密
GAE:如何部署各种秘密环境?
appengine和OS环境变量
如何使用云构建将环境变量传递给app.yaml
来自GAE的很多好消息:如何部署各种秘密环境?
作者列出了三种解决方法及其不使用的原因:
- 使用Google KMS - 允许我们将加密的秘密直接放入项目中,但它要求我们在我们的应用程序中放置自定义代码来解密它们.它在本地,登台和生产之间创建了不同的环境管理.由于复杂性,它增加了错误的风险.
- 在Google Datastore中存储机密 - 我试过了,我创建了一个帮助程序,在proccess.ENV中搜索env变量,然后在缓存中搜索,最后在Datastore中搜索.但是像KMS一样,它会增加复杂性.
- 将秘密存储在JSON文件中并放入Google云端存储:再次,它需要通过检查env变量的帮助程序加载env变量,然后加载文件等...
然而,对我来说最好的解决方案来自如何使用云构建将环境变量传递给app.yaml
它允许我使用GAE灵活环境为nodejs提供以下部署流程:
- 合并到我的Github主分支会触发云构建
- 我的cloudbuild.yaml中的第一步使用gsutil构建器来源我的app.yaml文件,因为app.yaml不在源代码管理中
- 我的app.yaml指向我的运行时的dockerfile并且有我的env变量
这会检查我的所有盒子并且是一个相当简单的解决方案但是,这绝对不是一个流行的解决方案,所以我在这里遗漏了什么?
最重要的是有任何安全问题吗?