【问题标题】:How to keep google-cloud-auth.json securely in app.yaml as an environmental variable?如何将 google-cloud-auth.json 作为环境变量安全地保存在 app.yaml 中?
【发布时间】:2020-01-16 03:52:45
【问题描述】:

我是部署/保护密钥的新手,我不确定如何在源代码之外安全地存储 google-cloud-auth.json(创建 API 客户端所需的身份验证)以防止凭据泄漏。

我目前在我的 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
});

【问题讨论】:

  • 为什么要使用服务帐号?你有使用它的特殊需要吗?有没有特别的?

标签: node.js google-app-engine google-cloud-platform google-bigquery


【解决方案1】:

根据Setting Up Authentication for Server to Server Production Applications

  1. GCP 客户端库将利用 ADC(应用程序默认凭据)来查找应用程序使用的凭据。
  2. ADC 所做的基本上是检查GOOGLE_APPLICATION_CREDENTIALS env 变量是否设置了服务帐户文件的路径。
  3. 如果未设置 env 变量,ADC 将使用 App Engine 提供的默认服务帐户。

有了这些信息,我可以建议几个解决方案来安全地提供这些凭据:

  • 如果您需要使用特定的服务帐户,请使用GOOGLE_APPLICATION_CREDENTIALS 设置文件的路径。 This section 解释了如何做到这一点。
  • 如果您不喜欢移动凭据文件,我建议您尝试使用 App Engine 提供的默认服务帐户。

我刚刚创建了一个新项目并通过混合这两个指南部署了一个基本应用程序:

我的 app.yaml 仅包含 runtime: nodejs10 行,我仍然能够使用默认服务帐户通过 BigQuery 客户端库进行查询。

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

【讨论】:

    猜你喜欢
    • 2014-05-05
    • 2021-02-13
    • 1970-01-01
    • 2022-10-02
    • 2021-12-27
    • 2018-09-05
    • 2019-06-05
    • 2019-01-05
    • 1970-01-01
    相关资源
    最近更新 更多