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

Accessing Google Secrets from an application running on a Google Cloud VM instance - Assigning Cloud APIs to VM

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

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

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

TLDR - 我需要向哪个云 API(s) 授予我的 Google 计算 VM 实例访问权限,以便它可以访问 Google 机密而不授予它访问所有权限的权限云 APIs?

根据 Secret Manager documentation,您需要 cloud-platform OAuth 范围。

Note: To access the Secret Manager API from within a Compute Engine instance or a Google Kubernetes Engine node (which is also a Compute Engine instance), the instance must have the cloud-platform OAuth scope. For more information about access scopes in Compute Engine, see Service account permissions in the Compute Engine documentation.

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

可能的选择

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