道路千万条,安全第一条; 镜像不规范,同事两行泪。
Trivy 是一个面向镜像的漏洞检测工具,具备如下特点:
- 开源
- 免费
- 易用
- 准确度高
- CI 友好
相对于老前辈 Clair,Trivy 的使用非常直观方便,适用于更多的场景。
下面是官方出具的对比表格:
扫描器 | 操作系统 | 依赖检测 | 适用性 | 准确度 | CI 友好 |
---|---|---|---|---|---|
Trivy | ◯ | ◯ | ◯ | ◎ | ◯ |
Clair | ◯ | × | △ | ◯ | △ |
Anchore Engine | ◯ | △ | △ | ◯ | △ |
Quay | ◯ | × | ◯ | ◯ | × |
MicroScanner | ◯ | × | ◯ | ◯ | ◯ |
Docker Hub | ◯ | × | ◯ | × | × |
GCR | ◯ | × | ◯ | ◯ | × |
安装
MacOS
1 | $ brew tap knqyf263/trivy |
RHEL/CentOS
1 | $ sudo vim /etc/yum.repos.d/trivy.repo |
or1
$ rpm -ivh https://github.com/aquasecurity/trivy/releases/download/v0.0.15/trivy_0.0.15_Linux-64bit.rpm
快速入门
这个工具的最大闪光点就是提供了很多适合用在自动化场景的用法。详细使用帮助可参考官方文档:Trivy
扫描镜像:
1 | $ trivy centos |
扫描镜像文件
1 | $ docker save ruby:2.3.0-alpine3.9 -o ruby-2.3.0.tar |
根据严重程度进行过滤
1 | $ trivy --severity HIGH,CRITICAL ruby:2.3.0 |
忽略未修复问题
1 | $ trivy --ignore-unfixed ruby:2.3.0 |
忽略特定问题
使用 .trivyignore
:1
2
3
4
5
6
7
8$ cat .trivyignore
# Accept the risk
CVE-2018-14618
# No impact in our settings
CVE-2019-1543
$ trivy python:3.4-alpine3.9
使用 JSON 输出结果
1 | $ trivy -f json dustise/translat-chatbot:20190428-5 |
定义返回值
1 | $ trivy --exit-code 0 --severity MEDIUM,HIGH ruby:2.3.0 |
总结
相对于其它同类工具,Trivy 非常适合自动化操作,从 CircleCI 之类的公有服务,到企业内部使用的 Jenkins、Gitlab 等私有工具,或者作为开发运维人员的自测环节,都有 Trivy 的用武之地。