将private_key用作环境变量时,正确的格式是什么?

时间:2019-08-17 05:31:57

标签: google-cloud-platform google-cloud-functions google-cloud-iam google-auth-library-nodejs

我正在尝试将private_key用于某些GCP服务nodejs客户端库,例如@google-cloud/pubsub@google-cloud/trace-agent

我从服务帐户凭据json文件中获得了private_key,如下所示:

enter image description here

我正在尝试将其用作云函数的环境变量。

.env.yaml

enter image description here

并像这样使用它:

// ...

  credentials: {
        private_key: envs.private_key,
        client_email: envs.client_email
  },
  projectId: envs.X_GOOGLE_GCLOUD_PROJECT

但是出现错误:

  

错误:错误:0906D06C:PEM例程:PEM_read_bio:无起始行

我检查stackdriver日志,这是我得到的private_key环境变量:

enter image description here

我的猜测是private_key的格式不正确。这可能是由换行符\n引起的。那么,像这样使用private_key时正确的格式是什么?

2 个答案:

答案 0 :(得分:1)

在.env.yaml文件中设置密钥不是一个好主意。的确,您可以将其提交到git中,甚至可以在公共存储库中进行提交,并将其以纯文本格式设置为函数的环境变量。

如果将文件设置在存储桶中并在运行时加载它会更好。顺便说一句,您将在项目文件中保持秘密。

另一种解决方案是使用kms加密密钥,并在运行时对其进行解密。这次,您的项目文件中仍然包含秘密,但是已加密。

但是,您需要另一个服务帐户吗?这个在功能上还不够吗?

答案 1 :(得分:0)

GCLOUD_KEY='{"private_key_id":"XXX", "private_key":"YYY",
             "client_email":"ZZZ@ZZZ.COM", "client_id":"ABC123",
             "type":"service_account"}'