从在Google Cloud VM实例上运行的应用程序访问Google Secrets-为VM分配Cloud API 可能的选择

问题描述

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

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

  • 为服务帐户分配“机密管理器秘密访问者”权限。

    enter image description here

  • 让我的VM访问所有API:
  • enter image description here

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

enter image description here

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

解决方法

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

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

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

可能的选择

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

Custom Service Account

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...