CI/CD镜像安全扫描概述
企业主机安全的CI/CD镜像安全扫描功能支持将镜像安全扫描能力集成到Jenkins Pipeline项目的CI/CD构建流水线中,实现镜像构建阶段的安全扫描,识别镜像中存在的系统漏洞、应用漏洞、配置风险、弱口令、恶意文件、敏感文件、软件合规等风险,让安全左移到DevOps阶段,帮助用户及早消除安全风险,防止将有风险的镜像部署到生产环境。
什么是CI/CD
CI/CD是持续集成和持续交付/持续部署的缩写。
- CI:持续集成(Continuous Integration),自动且持续地将代码集成到共享源代码中。
- CD:由持续交付(Continuous Delivery)和持续部署(Continuous Deployment)两部分组成,持续交付是在持续集成之后,通过自动化构建和自动化测试对集成代码进行验证,并保证容器镜像可以随时被交付;持续部署是将构建完成的镜像自动更新发布到生产环境。
什么是Jenkins Pipeline
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。
Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。Jenkins可以很好地支持各种语言的项目构建,也完全兼容Maven、Ant、Gradle等多种第三方构建工具,同时跟SVN、GIT等常用的版本控制工具无缝集成,也支持直接对接GitHub等源代码托管网站。
Pipeline是一种在Jenkins中实现CI/CD的工作模式。
CI/CD镜像安全扫描原理
使用企业主机安全的CI/CD镜像安全扫描功能,无需将镜像资产同步到企业主机安全,只需在Jenkins Pipeline流水线中添加两条命令(拉取企业主机安全镜像安全扫描工具镜像的命令和启动该工具的命令),当用户的Jenkins Pipeline工具构建项目时,会同步触发镜像安全扫描任务,扫描项目中是否存在镜像安全风险,并在企业主机安全控制台展示扫描结果。用户可根据扫描结果,及时处理镜像中存在的安全风险。
镜像安全扫描配置在Jenkins Pipeline流水线中所处的阶段如图1所示。
CI/CD镜像安全扫描项
企业主机安全对CI/CD镜像执行的安全扫描项如表1所示。
扫描项 |
说明 |
---|---|
漏洞风险 |
检测镜像中存在系统漏洞、应用漏洞。
|
恶意文件 |
检测镜像中存在的恶意文件。 |
软件信息 |
统计镜像中的软件信息。 |
文件信息 |
统计镜像中的文件信息。 |
基线检查 |
|
敏感信息 |
检测镜像中含有敏感信息的文件。
|
软件合规 |
检测软件包或补丁包中是否存在可能会引起安全、合规性或隐私方面问题的组件。 问题组件示例:
|
基础镜像信息 |
检测业务镜像所使用的基础镜像信息,包括基础镜像名称、版本、镜像层路径。 基础镜像是构建其他镜像的起点,是一个包含了操作系统核心文件、运行时环境或基础工具的最小化镜像;所有业务镜像都是在基础镜像之上添加新的层(Layer)来构建的。常见的基础镜像包括Ubuntu、Alpine Linux、CentOS、Debian、Fedora。 |
应用场景
- 本地镜像扫描
在镜像构建完成后进行镜像安全扫描,如果镜像存在安全风险可对流水线进行阻断,防止有风险的镜像推送到生产镜像仓。
- 远程镜像仓扫描
远程镜像仓是指镜像构建完成后推送的远程测试仓,镜像扫描是对远程测试仓的镜像进行安全扫描,如果镜像扫描无风险可推送到生产镜像仓,如果扫描存在风险可对流水线进行阻断。
约束与限制
- 仓库镜像如需使用镜像安全扫描功能,无需购买HSS任何版本,开通容器镜像扫描按次收费增值服务即可,具体操作请参见开通容器镜像按次收费扫描。
- CI/CD镜像扫描功能仅适用Jenkins Pipeline模式。
- 如需实现远程镜像扫描,镜像仓库需支持Docker Registry HTTP API v2交互方式。
CI/CD镜像安全扫描使用流程

操作项 |
说明 |
---|---|
根据镜像信息生成镜像安全扫描的Pipeline命令,并在Jenkins Pipeline流水线中添加该命令。 |
|
使用CI/CD镜像安全扫描功能,需单独开通容器镜像按次收费增值服务。 |
|
查看CI/CD镜像安全扫描结果,针对安全风险项及时进行排查清理,避免不安全的镜像部署到生产环境。 |