繁体   English   中英

用于云构建的跨项目服务帐户模拟

[英]Cross project service account impersonation for cloud build

我们有一个用例,其中project A有一些不能移动到另一个项目的秘密和数据库。 我们有一个project B ,它使用project A的秘密和数据库。

Project A有一个访问机密和数据库的service account X

Project B有一个service account Y ,没有权限访问机密和数据库。 目标是让service account Y在连接到推送到 github 的构建触发器期间模拟service account X Project B有一个云构建管道,需要在 CICD 过程中临时访问Project A中的机密和数据库。

根据这个:https://cloud.google.com/build/docs/cloud-build-service-account ,用户指定的服务帐户部分......您可以创建具有模拟权限的自定义 IAM 角色或使用预定义的角色允许委托人模拟服务帐户。

我创建了一个service account X并授予service account Y模拟它的权限(如在策略分析器中检查的那样)但是,当我尝试在project B的云运行触发器中使用service account X时,我得到(如预期的那样):

Failed to update trigger: generic::permission_denied: user does not have impersonation permission on the trigger service account specified: projects/redacted/serviceAccounts/service@project-A.com
  1. 这是指什么“用户”? 使用控制台的那个? 构建服务代理?

  2. 是否可以在构建步骤过程中获取Project B中的service account Y来模拟Project A中的service account X

根据这个https://cloud.google.com/build/docs/securing-builds/configure-user-specified-service-accounts ...要使用 Google Cloud 控制台中的触发器页面,用户指定的服务帐户并且构建触发器必须在同一个项目中。

是否有解决方法,例如是否需要使用gcloud来模拟帐户? 或者有没有办法使用cloudbuild.yaml执行跨项目帐户模拟(用于触发器)或以某种方式告诉触发器所使用的服务帐户必须模拟另一个?

你有2个解决方案:

  • 使用项目 A 中的服务帐户 X 作为 Cloud Build 用户托管服务帐户。 您必须授予 Cloud Build Service Agent 服务帐户在项目 A 中模拟服务帐户 X 的权限。此外,此服务帐户 X 还必须有权访问您的项目 B 资源才能与它们进行交互。 此解决方案很方便,因为您可以使用与秘密管理器的内置连接
  • 使用当前配置,但当您想要获取秘密时(使用代码,而不是使用 Cloud Build 与秘密管理器的内置集成)在 Cloud Build 管道中执行手动模拟。

问题未解决?试试以下方法:

用于云构建的跨项目服务帐户模拟

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM