Google 机器中的环境变量“GOOGLE_APPLICATION_CREDENTIALS”

时间:2020-12-28 14:36:37

标签: google-cloud-platform google-cloud-storage google-cloud-sdk google-iam

背景

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

我已经做到了,它对我有用。

问题

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

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

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

最好的做法是什么?

1 个答案:

答案 0 :(得分:5)

请仔细阅读以下内容:

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

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

文章中的关键词是:

<块引用>

如果环境变量 GOOGLE_APPLICATION_CREDENTIALS 未设置,ADC 将使用 Compute Engine、Google Kubernetes Engine、App Engine、Cloud Run 和 Cloud Functions 提供的默认服务帐号。