| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 15 天前 |
CodeArts Pipeline 安全能力指南
概述
CodeArts Pipeline 是华为云软件开发生产线 CodeArts 中的持续交付服务,以阶段(Stage)为编排单元,通过任务插件组合构建、检查、测试、部署等活动。围绕流水线的交付过程,平台在门禁拦截、敏感参数保护、代码与制品扫描、权限与审计四个层面提供安全能力。
本文档梳理 CodeArts Pipeline 各安全能力的机制、配置入口与使用限制。除流水线自身的门禁能力外,部分能力(代码检查、制品扫描)通过与 CodeArts 其他服务集成实现,文中一并说明其归属关系。
| 安全能力域 | 核心机制 | 主要配置入口 |
|---|---|---|
| 门禁安全 | 阶段准出条件、阶段准入、合并请求流水线门禁、手动放行 | 流水线任务编排、代码仓策略设置 |
| 私密参数配置 | 私密参数加密存储、服务扩展点凭据管理 | 流水线参数设置、项目通用设置 |
| 敏感信息扫描 | Check 代码检查插件、制品安全扫描 | 流水线任务编排、制品仓库服务 |
| 权限与审计 | 三层权限模型、人工审核、云审计服务(CTS) | 租户设置、项目权限管理、云审计控制台 |
门禁安全
阶段准出条件
准出条件是配置在流水线阶段上的质量指标卡点,通过规则和策略实现阶段准出校验并控制流水线执行。机制分两层:
规则是租户级资源,基于扩展插件的输出阈值设置比较关系和阈值条件。规则类型与插件类型对应,支持构建、代码检查、测试、部署、通用五种;代码检查类规则可对缺陷数、通过率等指标设阈值(检查项为通过率时取值范围 0~1),还支持代码度量指标(平均圈复杂度、代码重复率)。
策略是一系列规则的集合,分租户级与项目级两种:租户级策略应用于租户下所有流水线,默认存在一条只读的「系统策略」;项目级策略应用于当前项目。单个策略中最多可配置 20 个规则,每条规则可单独开关,关闭后应用到准出条件时自动不做拦截校验。
配置入口:
- 租户级规则/策略:右上角头像 → 租户设置 → 策略管理
- 项目级策略:项目下流水线「策略」页签
- 流水线准出条件:流水线编辑 → 任务编排 → 单击阶段下方「准出条件」→ 添加并选择策略
使用限制:当前仅支持「标准策略准出条件」;各阶段可单独设置准出条件且只对当前阶段有效;同一阶段可配置多个准出条件;一条流水线最多可配置 16 个阶段(含后处理阶段)。阶段编排与准出条件配置需要「项目管理员」或「流水线创建者」角色。
官方文档:编排流水线阶段
阶段准入
除准出卡点外,阶段入口可配置三种准入类型,控制流水线阶段之间的流转:
| 准入类型 | 行为 | 适用场景 |
|---|---|---|
| 自动 | 默认方式,流水线执行时自动进入下一阶段 | 常规构建、检查流程 |
| 手动 | 需手动确认后才能进入下一阶段 | 部署前的发布确认 |
| 时间窗 | 需在配置的时间段内才能进入下一阶段 | 限定变更窗口的发布管理 |
生产发布类流水线建议在部署阶段前配置手动准入,由具备权限的人员确认后放行。
官方文档:编排流水线阶段
合并请求流水线门禁
代码合入主分支前的自动化门禁需要流水线与代码仓(CodeArts Repo)两侧配合:
- 新建流水线,流水线源选择目标代码仓
- 流水线「触发设置」勾选「合并请求事件」,配置触发事件(新建、更新等)及分支/路径过滤规则
- 进入代码仓「设置 → 策略设置 → 合并请求 → 设置分支策略」,新建分支策略并勾选「开启流水线门禁」
- 新建合并请求后自动触发流水线,运行结果显示在合并请求的「合入条件」中
CodeArts Repo 的合并请求共支持三类门禁,可按分支策略组合开启:
| 门禁类型 | 通过条件 |
|---|---|
| 评审意见门禁 | 所有评审意见标记为「已解决」 |
| 流水线门禁 | 最新 commit 或预合并 commit 成功拉起流水线 |
| E2E 单号关联门禁 | 合并请求关联了 CodeArts Req 工作项 |
官方文档:配置代码仓库合并请求流水线门禁、解决评审意见并合入代码
手动放行
手动放行是失败阶段的受控跳过机制:项目级权限中存在独立的「手动放行」权限项,配置后流水线某阶段任务执行失败时,有权限用户可跳过该阶段继续执行下一阶段。子流水线执行手动放行不影响父流水线中子流水线任务的状态。
初始状态下,项目管理员与项目经理具备手动放行权限,开发人员、测试人员等角色不具备。跳过失败阶段意味着绕过该阶段的质量校验,应仅用于失败原因已确认为环境类问题的场景,并保留对应的操作记录。
官方文档:授权流水线服务
私密参数配置
私密参数
流水线自定义参数支持设置为私密参数,系统会将输入参数做加密存储并在使用时自动解密,该参数在运行日志中不可见,且在流水线复制时不会被同步复制。
使用限制:仅字符串类型参数可设置为私密参数(自定义参数类型包括字符串、自增长、枚举三种);单条流水线最多可新建 100 个自定义参数;参数名称不可与系统预定义参数同名。
配置入口:流水线编辑 → 任务编排 → 参数设置 → 新建参数 → 勾选「私密参数」。参数引用形式为 ${参数名},在参数输入框输入 $ 符号后自动出现参数列表。
同一参数名在多个来源同时存在时,取值优先级为:系统预定义参数 > 自定义参数 > 通用参数组。通用参数组是项目级共享的流水线参数(最多 10 个组、每组 100 个参数),组内自定义参数的配置方法与流水线自定义参数相同,同样支持私密参数设置。开启「运行时设置」后,手动执行流水线时支持修改该参数的值。
官方文档:配置流水线参数
服务扩展点
CodeArts Pipeline 没有独立的凭据管理模块,第三方服务凭据通过服务扩展点统一管理。服务扩展点是一种连接第三方服务的扩展插件,供流水线任务在连接远程服务时复用凭据,避免在各任务中重复明文配置:
| 扩展点类型 | 连接对象与用途 |
|---|---|
| Docker repository | 第三方 Docker 镜像仓库,部署服务获取镜像 |
| Jenkins | 第三方 Jenkins 服务,流水线调用其中任务 |
| Kubernetes | Kubernetes 集群,下发部署任务 |
| nexus repository | 第三方私有 Maven 仓库,构建任务获取文件 |
| 通用 Git | 第三方 Git 仓库,配置密码或 Access Token |
| 码云 Git / GitHub | 对应平台账号,支持 OAuth 授权与 AccessToken 两种方式 |
| IAM 账户 | 委托 AK/SK 给执行任务的账号 |
| CodeArts Repo HTTPS | Repo 仓库的代码下载、分支创建、分支合并、代码提交 |
| Gerrit | 第三方 Gerrit 仓库 |
| GitCode | GitCode 账号,配置个人访问令牌 |
| AGC | AGC Connect API |
配置入口:项目「设置 → 通用设置 → 服务扩展点管理 → 新建服务扩展点」。前提条件:拥有「插件市场 > 扩展点 > 创建」权限的用户才可新建;待接入的第三方服务需能通过公网访问。
GitCode 仓库接入 CodeArts 流水线的场景(详见 pre-commit 落地指南)即通过 GitCode 扩展点完成凭据托管。
官方文档:管理 CodeArts 服务扩展点
敏感信息扫描
Check 代码检查插件
「Check 代码检查」插件在流水线任务中调用 CodeArts Check 服务,提供代码风格、通用质量与网络安全等方面的检查能力。插件参数包括项目配置(本项目或其他项目)、代码检查任务选择(须与流水线源同代码仓)、仓库与检查模式。
检查模式支持三种,控制扫描范围:
| 检查模式 | 扫描范围 |
|---|---|
full |
本次 commit 所在分支的全量代码 |
push_inc_full |
本次 commit 的变更文件内容 |
push_multi_inc_full |
上一次检查成功的 commit 到本次 commit 之间的变更文件 |
大仓库的全量检查耗时较长,日常触发建议使用 push_inc_full 或 push_multi_inc_full 的增量模式,定期(如每周)执行一次 full 全量模式兜底。
官方文档:Check 代码检查插件
检查结果门禁联动
代码检查结果要真正拦截流水线,需与准出条件配合:基于「Check 代码检查」插件类型创建规则(对代码检查缺陷数等输出指标设阈值),将规则组织为策略,再在代码检查任务所在阶段添加该策略作为准出条件。检查结果不满足阈值时流水线终止执行,未通过准出的代码无法进入后续构建与部署阶段。
配套插件「分支变动检查」可指定目标分支,当前流水线运行分支落后于指定分支时流水线运行失败,防止在过期基线上通过检查后合并。
制品安全扫描
制品安全扫描属于制品仓库服务(CodeArts Artifact)的能力,支持开源合规和漏洞检测,检测分为危急、高危、中危、低危四个级别,无需上传源码。支持按仓库、按制品创建扫描方案,可执行、暂停扫描任务。
使用前提:需先开通 Governance(开源治理)服务。配置入口:CodeArts 服务「制品仓库 → 制品安全扫描」页签。该扫描作用于流水线产出的制品侧,与源码侧的 Check 代码检查互补,构成"源码检查 + 制品扫描"的双重覆盖。
官方文档:对私有依赖库中的私有组件进行安全扫描
权限与审计
三层权限模型
流水线权限从上到下分三个层级,控制不同模块不同粒度的用户行为:
| 层级 | 控制对象 | 配置位置 |
|---|---|---|
| 租户级权限 | 扩展插件、租户级策略、租户级规则、流水线模板 | 统一身份认证服务(IAM) |
| 项目级权限 | 流水线、项目级策略、微服务、变更、环境 | 项目「设置 → 权限管理」 |
| 资源级权限 | 单条流水线任务 | 流水线任务「权限管理」页面 |
租户级权限通过 IAM 用户组授权实现,流水线服务提供四个系统策略:CloudPipeline Tenant Rules FullAccess(租户规则)、CloudPipeline Tenant Rule Templates FullAccess(租户策略)、CloudPipeline Tenant Extensions FullAccess(扩展插件)、CloudPipeline Tenant Pipeline Templates FullAccess(流水线模板)。
项目级权限按角色配置,12 种预置角色对流水线的查看、创建、执行、修改、删除、手动放行等操作权限初始矩阵各不相同。以流水线权限为例:项目管理员与项目经理具备全部权限;开发人员可查看、创建、执行但不能修改、删除;手动放行权限初始仅项目管理员与项目经理具备。发布环境权限管控更严格:生产环境的查看权限仅项目管理员、项目经理、运维经理、系统工程师、Committer、CI/CD 工程师具备。
资源级权限支持按角色和人员两个维度对单条流水线配置,优先级规则:人员权限高于角色权限;流水线角色权限高于项目下角色权限;项目管理员和流水线创建者的权限不能更改;可开启或关闭「继承项目权限配置」。
人工审核
「人工审核」插件以单签或会签方式在流水线中插入人工卡点,配置后以邮件通知方式提醒审核人。核心参数:
| 参数 | 说明 |
|---|---|
| 审核来源 | 项目成员或项目角色 |
| 审核模式 | 全部人审核通过或任一人审核通过(仅审核来源为项目成员时) |
| 超时处理 | 超时未审核的处理方式:中止或通过 |
| 审核时长 | 不能超过 3 天 |
部署类流水线建议在发布阶段前插入人工审核,审核模式选择「全部人审核」,超时处理选择「中止」,避免超时自动放行。审核来源选择项目角色时,审核人覆盖面随角色成员变动自动更新,适合人员流动性较高的团队。
官方文档:人工审核插件
操作审计
流水线对接云审计服务 CTS:开通云审计服务并创建、配置追踪器后,CTS 记录流水线的管理事件和数据事件用于审计;云审计服务管理控制台保存最近 7 天的操作记录,更长期的留存依赖对追踪器配置的转储策略。
CTS 支持的流水线操作共五类:
| 操作名称 | 事件名称 |
|---|---|
| 执行流水线任务 | run |
| 修改流水线任务 | update |
| 创建流水线任务 | create |
| 删除流水线任务 | delete |
| 停止流水线任务 | stop |
官方文档:查看审计日志
相关文档
- pre-commit 落地指南 — CodeArts Pipeline 执行 pre-commit 增量检查的接入方案
- GitCode 流水线安全能力指南 — GitCode 流水线的门禁、私密参数与防注入能力
- CodeQL 代码检查指南 — 基于 GitCode 流水线的 CodeQL 安全扫描方案
- Gitleaks 工具详解 — 密钥泄露检测工具的安装、配置与集成