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所示。
检查项 |
说明 |
---|---|
漏洞风险 |
检测镜像中存在系统漏洞、应用漏洞。
|
恶意文件 |
检测镜像中存在的恶意文件。 |
软件信息 |
统计镜像中的软件信息。 |
文件信息 |
统计镜像中的文件信息。 |
基线检查 |
|
敏感信息 |
检测镜像中含有敏感信息的文件。
|
软件合规 |
检测不允许使用的软件和工具。 |
基础镜像信息 |
检测未使用基础镜像构建的业务镜像。 |
应用场景
- 本地镜像扫描
在镜像构建完成后进行镜像安全扫描,如果镜像存在安全风险可对流水线进行阻断,防止有风险的镜像推送到生产镜像仓。
- 远程镜像仓扫描
远程镜像仓是指镜像构建完成后推送的远程测试仓,镜像扫描是对远程测试仓的镜像进行安全扫描,如果镜像扫描无风险可推送到生产镜像仓,如果扫描存在风险可对流水线进行阻断。
约束与限制
- 仅企业主机安全容器版支持CI/CD镜像安全扫描功能。
- CI/CD镜像扫描功能仅适用Jenkins Pipeline模式。
- 如需实现远程镜像扫描,镜像仓库需支持Docker Registry HTTP API v2交互方式。