从 Google Cloud VM 实例上运行的应用程序访问 Google Secrets - 将 Cloud API 分配给 VM

Fak*_*all 5 google-compute-engine google-oauth google-cloud-platform google-secret-manager

我使用 Google Secrets 来存储 API 密钥和其他特定于应用程序的“秘密”。当我使用 Docker 容器将应用程序部署到 VM 实例时,我希望它使用 VM 的关联服务帐户访问 Google Secrets。

我已经使用以下方法完成了这项工作:

  • 将“Secret Manager Secret Accessor”权限分配给服务帐户。在此输入图像描述
  • 授予我的虚拟机访问所有 API 的权限:
  • 在此输入图像描述

从安全角度和推荐的最佳实践来看,我不想授予对所有 API 的访问权限。默认访问选项不起作用,我无法从列表中找出启用哪些选项以允许从我的虚拟机访问 Google Secrets。

在此输入图像描述

TLDR - 我需要向我的 Google Compute VM 实例授予访问哪些云 API 的权限,以便它可以访问 Google Secrets,而无需授予其访问所有云 API 的权限?

Dou*_*son 5

根据Secret Manager 文档,您需要云平台OAuth 范围。

注意:要从 Compute Engine 实例或 Google Kubernetes Engine 节点(也是 Compute Engine 实例)内访问 Secret Manager API,该实例必须具有云平台 OAuth 范围。有关 Compute Engine 中的访问范围的更多信息,请参阅 Compute Engine 文档中的服务帐号权限。

我不确定您是否可以在 Web UI 中设置此范围,但您可以通过命令行进行设置。

可能的替代方案

我所做的不是在虚拟机上设置范围,而是专门为虚拟机创建一个服务帐户(而不是使用默认服务帐户),然后授予该服务帐户对特定资源的访问权限(例如它应该有权访问的特定 Secrets,而不是全部)。当您在 Web UI 中执行此操作时,访问范围会消失,并且系统会指示您使用 IAM 角色来控制 VM 访问,如下所示:

定制服务账户

  • 我使用了您的“替代解决方案”,设置了具有所需权限的服务帐户。工作没有任何问题。谢谢。 (2认同)