文件最后提交记录最后更新时间
15 天前
README

CodeArts Pipeline 安全能力指南

← 返回目录

概述

CodeArts Pipeline 是华为云软件开发生产线 CodeArts 中的持续交付服务,以阶段(Stage)为编排单元,通过任务插件组合构建、检查、测试、部署等活动。围绕流水线的交付过程,平台在门禁拦截、敏感参数保护、代码与制品扫描、权限与审计四个层面提供安全能力。

本文档梳理 CodeArts Pipeline 各安全能力的机制、配置入口与使用限制。除流水线自身的门禁能力外,部分能力(代码检查、制品扫描)通过与 CodeArts 其他服务集成实现,文中一并说明其归属关系。

安全能力域 核心机制 主要配置入口
门禁安全 阶段准出条件、阶段准入、合并请求流水线门禁、手动放行 流水线任务编排、代码仓策略设置
私密参数配置 私密参数加密存储、服务扩展点凭据管理 流水线参数设置、项目通用设置
敏感信息扫描 Check 代码检查插件、制品安全扫描 流水线任务编排、制品仓库服务
权限与审计 三层权限模型、人工审核、云审计服务(CTS) 租户设置、项目权限管理、云审计控制台

门禁安全

阶段准出条件

准出条件是配置在流水线阶段上的质量指标卡点,通过规则和策略实现阶段准出校验并控制流水线执行。机制分两层:

规则是租户级资源,基于扩展插件的输出阈值设置比较关系和阈值条件。规则类型与插件类型对应,支持构建、代码检查、测试、部署、通用五种;代码检查类规则可对缺陷数、通过率等指标设阈值(检查项为通过率时取值范围 0~1),还支持代码度量指标(平均圈复杂度、代码重复率)。

策略是一系列规则的集合,分租户级与项目级两种:租户级策略应用于租户下所有流水线,默认存在一条只读的「系统策略」;项目级策略应用于当前项目。单个策略中最多可配置 20 个规则,每条规则可单独开关,关闭后应用到准出条件时自动不做拦截校验。

配置入口:

  • 租户级规则/策略:右上角头像 → 租户设置 → 策略管理
  • 项目级策略:项目下流水线「策略」页签
  • 流水线准出条件:流水线编辑 → 任务编排 → 单击阶段下方「准出条件」→ 添加并选择策略

使用限制:当前仅支持「标准策略准出条件」;各阶段可单独设置准出条件且只对当前阶段有效;同一阶段可配置多个准出条件;一条流水线最多可配置 16 个阶段(含后处理阶段)。阶段编排与准出条件配置需要「项目管理员」或「流水线创建者」角色。

官方文档:编排流水线阶段

阶段准入

除准出卡点外,阶段入口可配置三种准入类型,控制流水线阶段之间的流转:

准入类型 行为 适用场景
自动 默认方式,流水线执行时自动进入下一阶段 常规构建、检查流程
手动 需手动确认后才能进入下一阶段 部署前的发布确认
时间窗 需在配置的时间段内才能进入下一阶段 限定变更窗口的发布管理

生产发布类流水线建议在部署阶段前配置手动准入,由具备权限的人员确认后放行。

官方文档:编排流水线阶段

合并请求流水线门禁

代码合入主分支前的自动化门禁需要流水线与代码仓(CodeArts Repo)两侧配合:

  1. 新建流水线,流水线源选择目标代码仓
  2. 流水线「触发设置」勾选「合并请求事件」,配置触发事件(新建、更新等)及分支/路径过滤规则
  3. 进入代码仓「设置 → 策略设置 → 合并请求 → 设置分支策略」,新建分支策略并勾选「开启流水线门禁」
  4. 新建合并请求后自动触发流水线,运行结果显示在合并请求的「合入条件」中

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_fullpush_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

官方文档:查看审计日志


相关文档