CI/CD镜像安全扫描概述
什么是CI/CD镜像安全扫描
CI/CD是持续集成和持续交付/持续部署的缩写。
- CI:持续集成(Continuous Integration),自动且持续地将代码集成到共享源代码中。
- CD:由持续交付(Continuous Delivery)和持续部署(Continuous Deployment)两部分组成,持续交付是在持续集成之后,通过自动化构建和自动化测试对集成代码进行验证,并保证容器镜像可以随时被交付;持续部署是将构建完成的镜像自动更新发布到生产环境。
企业主机安全的CI/CD镜像安全扫描功能支持将镜像安全扫描能力集成到Jenkins和华为云CodeArts Pipeline项目中,实现镜像构建阶段的安全扫描,识别镜像中存在的系统漏洞、应用漏洞、配置风险、弱口令、恶意文件、敏感文件、软件合规等风险,让安全左移到DevOps阶段,帮助用户及早消除安全风险,防止将有风险的镜像部署到生产环境。
CI/CD镜像安全扫描原理
使用企业主机安全的CI/CD镜像安全扫描功能,无需将镜像资产同步到企业主机安全,只需在Jenkins和CodeArts Pipeline项目中集成镜像安全扫描插件。当用户构建项目时,会自动触发镜像安全扫描任务,扫描项目中是否存在镜像安全风险,并在企业主机安全控制台展示扫描结果。用户可根据扫描结果,及时处理镜像中存在的安全风险。
镜像安全扫描配置在Jenkins或CodeArts Pipeline项目中所处的阶段如图1所示。
CI/CD镜像安全扫描项
企业主机安全对CI/CD镜像执行的安全扫描项如表1所示。
| 扫描项 | 说明 |
|---|---|
| 漏洞风险 | 检测镜像中存在系统漏洞、应用漏洞。
|
| 恶意文件 | 检测镜像中存在的恶意文件。 |
| 软件信息 | 统计镜像中的软件信息。 |
| 文件信息 | 统计镜像中的文件信息。 |
| 基线检查 |
|
| 敏感信息 | 检测镜像中含有敏感信息的文件。
|
| 软件合规 | 检测软件包或补丁包中是否存在可能会引起安全、合规性或隐私方面问题的组件。 问题组件示例:
|
| 基础镜像信息 | 检测业务镜像所使用的基础镜像信息,包括基础镜像名称、版本、镜像层路径。 基础镜像是构建其他镜像的起点,是一个包含了操作系统核心文件、运行时环境或基础工具的最小化镜像;所有业务镜像都是在基础镜像之上添加新的层(Layer)来构建的。常见的基础镜像包括Ubuntu、Alpine Linux、CentOS、Debian、Fedora。 |
| 镜像构建指令 | 检测镜像构建指令存在的风险。包括但不限于在Dockerfile中使用了如下指令:
|
应用场景
- 本地镜像扫描
在镜像构建完成后进行镜像安全扫描,如果镜像存在安全风险可对流水线进行阻断,防止有风险的镜像推送到生产镜像仓。
当前CI/CD扫描功能支持传统的Docker镜像格式,也支持OCI(Open Container Initiative,开放容器倡议)标准镜像结构的镜像扫描。
表2 Docker格式和OCI格式的区别 对比项
Docker 格式
OCI 格式
是否存在“oci-layout”文件
否
是
镜像“manifest”文件所在列表
“application/vnd.docker.container.image.v1+json”
“application/vnd.oci.image.config.v1+json”
镜像“layer”层所在位置
“application/vnd.docker.image.rootfs.diff.tar.gzip”
“application/vnd.oci.image.layer.v1.tar+gzip”
- 远程镜像仓扫描
远程镜像仓是指镜像构建完成后推送的远程测试仓,镜像扫描是对远程测试仓的镜像进行安全扫描,如果镜像扫描无风险可推送到生产镜像仓,如果扫描存在风险可对流水线进行阻断。
约束与限制
- 仓库镜像如需使用镜像安全扫描功能,无需购买HSS任何版本,开通容器镜像扫描按次收费增值服务即可,具体操作请参见开通容器镜像按次收费扫描。
- CI/CD镜像扫描功能仅适用Jenkins和CodeArts的Pipeline模式。 Jenkins配置限制如下:
- 硬件限制:
- Jenkins编译构建主机:Linux主机,x86或Arm 64bit
- CPU:1核及以上
- 内存:2GB及以上
- 磁盘空间:60GB及以上
- 技术限制:
- Jenkins版本:Jenkins 2.x
- JDK版本:JDK 17及以上
- Docker版本:Docker 18.09及以上
- 硬件限制:
- 如需实现远程镜像扫描,镜像仓库需支持Docker Registry HTTP API v2交互方式。
CI/CD镜像安全扫描使用流程
| 操作项 | 说明 |
|---|---|
| 根据镜像信息生成镜像安全扫描命令,并在Jenkins或CodeArts Pipeline流水线中添加该命令。 | |
| 使用CI/CD镜像安全扫描功能,需单独开通容器镜像按次收费增值服务。 | |
| 查看CI/CD镜像安全扫描结果,针对安全风险项及时进行排查清理,避免不安全的镜像部署到生产环境。 |
