2

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

我已经使用以下方法进行了这项工作:

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

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

在此处输入图像描述

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

4

1 回答 1

2

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

注意:要从 Compute Engine 实例或 Google Kubernetes Engine 节点(也是一个 Compute Engine 实例)中访问 Secret Manager API,该实例必须具有云平台 OAuth 范围。如需详细了解 Compute Engine 中的访问范围,请参阅 Compute Engine 文档中的服务帐号权限。

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

可能的替代方案

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

定制服务帐户

于 2020-10-23T20:27:46.857 回答