问题描述
我正在使用Google Secrets存储API密钥和其他特定于应用程序的“秘密”。当我使用docker容器将应用程序部署到VM实例时,我希望它使用与VM关联的服务帐户访问Google Secrets。
我已经使用以下方法进行了这项工作:
从安全性角度和建议的最佳实践来看,我不想授予对所有API的访问权限。默认访问选项不起作用,我无法从列表中找出启用哪些选项以允许从我的VM访问Google Secrets。
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访问,如下所示: