革新你的容器安全检测: Clair Scanner
在基于容器(如Docker)的开发环境中,我们不仅仅封装了应用,同时也包括了一部分操作系统。因此,了解你的镜像中是否存在潜在的安全漏洞至关重要。尽管Docker Hub或Quay.io提供了安全扫描功能,但其异步的工作模式并不利于构建流畅的CI/CD流程。
初识Clair Scanner
Clair Scanner 是为解决这一问题而生的工具,它将漏洞扫描融入到你的持续集成流程中,确保在推送镜像前进行安全检查:
- 构建和测试你的应用
- 创建容器镜像
- 扫描容器镜像中的漏洞
- 将发现的漏洞与允许的漏洞列表比对,如果所有漏洞都在允许范围内则通过,否则失败
不同于依赖Docker Hub或Quay.io的服务,Clair Scanner能实时进行扫描并立即给出反馈。
借力于Clair
Clair 是由CoreOS团队开发的一款强大的容器漏洞扫描工具,也是Quay.io的一部分。然而,Clair并未提供一个简单的工具来对比扫描结果和白名单。这就是Clair Scanner存在的价值所在:它执行以下操作:
- 对Docker镜像进行Clair服务器扫描
- 比较漏洞与白名单
- 如果存在未在白名单中的漏洞,报告并失败
- 若一切正常,则顺利完成
此外,Clair Scanner还支持独立运行模式,无需单独设置Clair服务器,详情可参考clair-local-scan仓库。
安装与使用
Clair Scanner已在Linux, MacOS, 和Windows平台上提供预编译二进制版本。你也可以从源码进行安装和构建,只需拥有Go 1.11+环境,并按照以下步骤操作:
git clone git@github.com:arminc/clair-scanner.git
cd clair-scanner
make build
make installLocal
./clair-scanner -h
运行示例:
首先启动Clair服务:
docker run -p 5432:5432 -d --name db arminc/clair-db:latest
docker run -p 6060:6060 --link db:postgres -d --name clair arminc/clair-local-scan:latest
然后扫描一个镜像:
clair-scanner -w example-alpine.yaml --ip YOUR_LOCAL_IP alpine:3.5
输出会显示镜像是否含有非白名单内的漏洞。
特性概览
- 自动化扫描:Clair Scanner嵌入于你的CI/CD流程,自动化扫描镜像。
- 白名单对比:通过对比扫描结果和自定义的漏洞白名单,决定是否允许推送镜像。
- 独立运行:无需单独部署Clair服务器,简化了运维复杂度。
- 跨平台兼容:支持Linux, MacOS, 和Windows。
- 命令行友好:简洁的命令行选项,易于理解和使用。
总的来说,Clair Scanner是一个高效且实用的工具,可以极大地提升你的容器安全管理水平。如果你希望在保障安全的同时提升研发效率,那么这个项目绝对值得尝试。现在就加入Clair Scanner的行列,让容器安全无忧无虑地前行吧!