Google机器中的环境变量“GOOGLE_APPLICATION_CREDENTIALS”
背景
我有一台使用 Google SDK 为不同产品(如 Google PubSub)运行代码的虚拟机。根据谷歌文档,我的机器应该有一个环境变量被调用GOOGLE_APPLICATION_CREDENTIALS
,它的值应该指向一个保存应用程序服务帐户的明文文件。
我已经做到了,它对我有用。
问题
将这样的密钥以纯文本形式存储在虚拟机中听起来是一种不安全的做法。如果机器被黑客入侵,该密钥将成为攻击者的首要目标之一。
我希望找到一个解决方案来“隐藏”这个密钥文件,或者只是用我的应用程序能够读取的密钥对其进行加密。
我找到了一些代码示例 (C#),允许程序员手动将凭据传递给 SDK 函数。但是,这不是一种标准的方法,它正在从一种产品更改为另一种产品(在某些产品中似乎不可能)。
这样做的最佳做法是什么?
回答
请仔细阅读以下内容:
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 提供的默认服务帐号。
THE END
二维码