Node.js 如何将google-cloud-auth.json作为环境变量安全地保存在app.yaml中?

Node.js 如何将google-cloud-auth.json作为环境变量安全地保存在app.yaml中?,node.js,google-app-engine,google-cloud-platform,google-bigquery,Node.js,Google App Engine,Google Cloud Platform,Google Bigquery,我不熟悉部署/安全密钥,不知道如何在源代码之外安全地存储google-cloud-auth.json(创建API客户端所需的auth)以防止凭据泄漏 我目前已经在app.yaml文件中保护了API密钥和令牌,并将它们指定为环境变量,这些变量成功地按照预期工作,如下所示 accessruntime: nodejs10 env_variables: SECRET_TOKEN: "example" SECRET_TOKEN2: "example2" 但是,我的google-cloud-aut

我不熟悉部署/安全密钥,不知道如何在源代码之外安全地存储google-cloud-auth.json(创建API客户端所需的auth)以防止凭据泄漏

我目前已经在app.yaml文件中保护了API密钥和令牌,并将它们指定为环境变量,这些变量成功地按照预期工作,如下所示

accessruntime: nodejs10
env_variables:
  SECRET_TOKEN: "example"
  SECRET_TOKEN2: "example2"
但是,我的google-cloud-auth.json保留为自己的文件,因为用于创建客户端的参数需要路径字符串

const {BigQuery} = require('@google-cloud/bigquery');
...
const file = "./google-cloud-auth.json"; 

// Creates a BigQuery client
const bigquery = new BigQuery({
                projectId: projectId,
                datasetId: datasetId,
                tableId: tableId,
                keyFilename: file
});
根据报告:

  • GCP客户端库将使用ADC(应用程序默认凭据)查找应用程序要使用的凭据
  • ADC所做的基本上是检查
    GOOGLE\u应用程序\u凭证
    env变量是否设置了服务帐户文件的路径
  • 如果未设置env变量,ADC将使用App Engine提供的默认服务帐户
  • 有了这些信息,我可以推荐几种安全提供这些凭证的解决方案:

    • 如果需要使用特定的服务帐户,请使用
      GOOGLE\u应用程序\u凭据设置文件路径。解释了如何做到这一点
    • 如果您不喜欢移动凭证文件,我建议您尝试使用应用程序引擎提供的默认服务帐户
    我刚刚创建了一个新项目,并通过混合以下两个指南部署了一个基本应用程序:

    我的app.yaml只有
    运行时:nodejs10
    行,我仍然能够使用默认服务帐户通过BigQuery客户端库进行查询


    此帐户附带项目/编辑角色,您可以添加所需的任何其他角色。

    为什么要使用服务帐户?你对使用它有特殊需要吗?它特别吗?