在app.yaml中存储秘密的最佳实践

时间:2017-04-14 16:20:41

标签: mysql node.js google-app-engine

我正在GAE上部署一个连接到Cloud SQL的Node.js应用程序。

docs之后,我被告知要在app.yaml中存储数据库的用户/密码:

env_variables:
  MYSQL_USER: YOUR_USER
  MYSQL_PASSWORD: YOUR_PASSWORD
  MYSQL_DATABASE: YOUR_DATABASE
  # e.g. my-awesome-project:us-central1:my-cloud-sql-instance
  INSTANCE_CONNECTION_NAME: YOUR_INSTANCE_CONNECTION_NAME

这真的是存储密码的好地方吗?

4 个答案:

答案 0 :(得分:0)

是。我们也这样做。在环境变量或文件中存储凭据没有太大区别。将它们存储在文件中,我发现更方便(通过它完全主观)。在安全问题方面,您始终可以使用文件权限。您可以创建一个将运行app的用户,并授予该用户读取权限。

答案 1 :(得分:0)

app.yaml中存储秘密可能会泄露它们(例如,在github上意外检查它们并不罕见)。将秘密存储在您在部署时编织到.gitignore的{​​{1}} d文件中是一种方法。另一种方法是将秘密存储在数据存储区中的实体中。

对于我的许多应用程序,我将秘密存储在名为app.yaml的实体中,该实体存储字符串化的JSON。这简化了管理UI,将其编辑为单个Config,从而推迟了对更复杂UI的需求。

有关具有功能更全面的用户界面的此方法示例,请查看可汗学院的“代码段”应用。 https://github.com/Khan/snippets

答案 2 :(得分:0)

Google尚未为此事提供服务(尚未)。我之前询问了对此的支持,他们的建议是将数据存储在数据存储区(加密)

答案 3 :(得分:0)

您应该做什么:

  1. app.yaml放入.gitignore,然后
  2. app.yaml中设置您的秘密,然后
  3. 执行gcloud app deploy

您无需在版本控制中使用app.yaml即可在GAE中“设置”环境变量。