Google 台机器中的环境变量 "GOOGLE_APPLICATION_CREDENTIALS"

The environment variable "GOOGLE_APPLICATION_CREDENTIALS" in Google machines

背景

我有一个虚拟机 运行 一个使用 Google SDK 的代码用于不同的产品(比如 Google PubSub)。根据 Google 文档,我的机器应该有一个名为 GOOGLE_APPLICATION_CREDENTIALS 的环境变量,它的值应该指向一个包含应用程序服务帐户的明文文件。

我已经做到了,而且对我有用。

问题

将这样的密钥以纯文本形式存储在虚拟机中听起来是一种不安全的做法。如果机器被黑客入侵,这个密钥将成为攻击者的首要目标之一。

我应该找到一个解决方案来“隐藏”这个密钥文件,或者只是用我的应用程序能够读取的密钥对其进行加密。

我找到了一些代码示例 (C#),它们允许程序员手动将凭据传递给 SDK 函数。但是,这不是一种标准的方法,它正在从一种产品更改为另一种产品(在某些产品中似乎是不可能的)。

最好的做法是什么?

好好阅读以下内容:

https://cloud.google.com/docs/authentication/production

这描述了一个名为“应用程序默认凭据”的概念。这里的概念是计算引擎(虚拟机)有一个与之关联的默认服务帐户(您可以配置)。因此,计算引擎上的应用程序 运行 可以从该计算引擎向其他 GCP 服务发出请求,并且对这些服务的请求将隐式显示为来自针对计算引擎配置的服务帐户。

文章中的关键词是:

If the environment variable GOOGLE_APPLICATION_CREDENTIALS isn't set, ADC uses the default service account that Compute Engine, Google Kubernetes Engine, App Engine, Cloud Run, and Cloud Functions provide.