【问题标题】:How to properly deploy node apps to GAE with secret keys?如何使用密钥将节点应用程序正确部署到 GAE?
【发布时间】:2018-01-13 08:40:53
【问题描述】:

我正在使用 nconf 探索 GAE,我想知道在我部署应用程序后以下设置是否安全。

我担心的是我的“config.dev.json”和“config.prod.json”文件都部署了,尽管它们包含在“.gitignore”中。

我不确定在我这样做之后将哪些信息传递给 gae(我不希望我的配置密钥暴露):

$ git add .
$ git commit -m 'Commiting'
$ glcoud app deploy

我的 Node 应用程序结构如下所示:

 - /myProject
   - /node_modules
   - .gitignore
   - app.js
   - app.yaml
   - config.js
   - keys.dev.json
   - keys.prod.json
   - package-lock.json
   - package.json

// .gitignore

 node_modules
 keys.dev.json
 keys.prod.json

// config.js:

 const nconf = require("nconf");
 nconf.argv().env();

 if (nconf.get("NODE_ENV") === "production") {
     nconf.file("keys.prod.json");
 } else {
     nconf.file("keys.dev.json");
 }
 ...

【问题讨论】:

    标签: google-app-engine deployment secret-key nconf


    【解决方案1】:

    .gitignore 中包含文件对在GAE 上的部署没有任何影响,该文件仅供git 使用。

    如果您想阻止将文件部署到 GAE,您需要在 app.yaml 文件的 General settings 中使用 skip_files 选项:

    skip_files

    可选。 skip_files 元素指定在 应用程序目录不得上传到 App Engine。价值 是正则表达式或正则表达式列表。任何 匹配任何正则表达式的文件名被省略 上传应用程序时要上传的文件列表。

    例如,要跳过名称以 .bak 结尾的文件,请添加 skip_files 部分,如下所示:

    skip_files:
    - ^(.*/)?\.bak$
    

    旁注

    • 如果我理解正确,您的应用会使用这些文件,因此在我看来,您将必须将它们与您的应用一起部署。
    • 即使文件部署在 GAE 上,您的应用也有责任(和完全控制)决定该文件是否暴露给外部请求。
    • 如果您想确切了解部署中包含哪些文件,可以使用gcloud app deploy 命令的--verbosity 选项在部署期间查看它们的显示。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 2012-11-26
    • 2015-09-25
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多