如何为用户配置Cloud Build仅查看权限?需可查看构建详情
解决方案:创建自定义IAM角色实现细粒度权限
要解决权限过窄或过宽的矛盾,最佳方案是创建自定义IAM角色,仅包含查看Cloud Build构建及测试详情所需的最小权限,避免授予过宽的项目访问权限。
所需核心权限
以下是实现目标必须的权限:
cloudbuild.builds.get:允许获取单个构建的完整详情(包括测试运行相关元数据)cloudbuild.builds.list:允许列出项目内的所有构建记录cloudbuild.builds.logs.get:允许查看构建的完整日志(测试运行的具体输出通常包含在日志中)logging.logEntries.list:若测试详情需从Cloud Logging读取(部分场景下Cloud Build日志会同步到Logging),需添加此权限
创建自定义角色的步骤
方式1:通过gcloud命令行创建
替换YOUR_PROJECT_ID为你的项目ID,执行以下命令:
gcloud iam roles create cloudbuild.test.viewer \ --project=YOUR_PROJECT_ID \ --title="Cloud Build Test Viewer" \ --description="仅查看Cloud Build构建及测试详情,无项目其他资源访问权限" \ --permissions=cloudbuild.builds.get,cloudbuild.builds.list,cloudbuild.builds.logs.get,logging.logEntries.list
方式2:通过GCP控制台创建
- 进入GCP控制台的IAM与管理 > 角色页面
- 点击创建角色,填写名称、描述
- 在添加权限中搜索并添加上述四个权限
- 保存角色后,将其分配给目标用户/用户组
可选:添加权限条件(限定GitHub相关构建)
如果仅需要让用户查看GitHub触发的构建,可以给自定义角色添加条件绑定,过滤特定来源的构建:
- 匹配指定GitHub触发器的条件表达式:
resource.labels.trigger_id == "YOUR_GITHUB_TRIGGER_ID" - 宽泛匹配GitHub来源的条件表达式:
(注:需替换resource.name.contains("github")YOUR_GITHUB_TRIGGER_ID为你的GitHub触发器ID)
验证权限
分配角色后,让用户尝试:
- 访问Cloud Build控制台的构建列表
- 点击单个构建查看详情及日志
- 确认无法访问项目内其他资源(如Compute Engine、Storage等)
内容的提问来源于stack exchange,提问作者Aleksander Lipka
相关产品推荐
相关产品推荐

