Trivy是一種適用於CI的簡單而全面的容器漏洞掃描程序。軟件漏洞是指軟件或操做系統中存在的故障、缺陷或弱點。Trivy檢測操做系統包(Alpine、RHEL、CentOS等)和應用程序依賴(Bundler、Composer、npm、yarn等)的漏洞。Trivy很容易使用,只要安裝二進制文件,就能夠掃描了。掃描只需指定容器的鏡像名稱。與其餘鏡像掃描工具相比,例如Clair,Anchore Engine,Quay相比,Trivy在準確性、方便性和對CI的支持等方面都有着明顯的優點。java
推薦在CI中使用它,在推送到container registry以前,您能夠輕鬆地掃描本地容器鏡像,Trivy具有以下的特徵:python
易於安裝,安裝方式:mysql
無需安裝數據庫、庫等先決條件(例外狀況是須要安裝rpm以掃描基於RHEL/CentOS的圖像)。git
這裏安裝Trivy的環境是Centos7,安裝的版本是0.4.4,安裝的命令以下:github
rpm -ivh https://github.com/aquasecurity/trivy/releases/download/v0.4.4/trivy_0.4.4_Linux-64bit.rpmsql
安裝結果以下圖所示即安裝成功:docker
下面介紹一些Trivy的簡單使用的命令和一些測試的結果。主要從幾個方面來測試Trivy的性能指標:數據庫
命令:trivy registry.cn-hangzhou.aliyuncs.com/choerodon-tools/javabase:0.5.0npm
結果:json
時間:第一次掃描會DownLoad DB,大概花十分鐘之內(14M,看網速),國外的主機10s之內,第二次掃描十秒鐘之內完成。
trivy registry.cn-hangzhou.aliyuncs.com/choerodon-tools/mysql:5.7.17
結果:
時間:10秒左右。
結果:
時間:20s左右
結論:本地掃描鏡像的大小對掃描速度影響不大,線上掃描與本地掃描的方式對掃描的速度影響大不。
掃描鏡像大小:316M左右
結論:接收到的網絡流量等於線上鏡像的大小,鏡像被下載放在服務器磁盤的某處(目前本服務器未裝docker)。
注:再次全量掃描相同的鏡像,接收流量和磁盤使用佔比均再也不增長。
掃描鏡像,openjdk:15-ea-jdk-buster
大小:316M左右
時間:10s左右
返回結果:標準的josn格式的文件
其餘更多使用命令以下,結果可自行測試:
$ trivy --severity HIGH,CRITICAL ruby:2.3.0
$ trivy --vuln-type os ruby:2.3.0
$ trivy --skip-update python:3.4-alpine3.9
$ trivy --download-db-only
$ trivy --download-db-only --only-update alpine
$ trivy --ignore-unfixed ruby:2.3.0
$ trivy --exit-code 1 python:3.4-alpine3.9
$ trivy --exit-code 0 --severity MEDIUM,HIGH ruby:2.3.0
$ trivy --exit-code 1 --severity CRITICAL ruby:2.3.0
$ cat .trivyignore
CVE-2018-14618
CVE-2019-1543
$ trivy python:3.4-alpine3.9
$ trivy --cache-dir /tmp/trivy/ python:3.4-alpine3.9
$ trivy --clear-cachez
$ trivy --reset
$ trivy --light alpine:3.10
輕量級數據庫不包含諸如描述和引用之類的漏洞詳細信息。所以,數據庫的大小更小,下載速度更快。
當您不須要漏洞詳細信息時,此選項很是有用,而且適用於CI/CD。
要查找其餘信息,能夠在NVD網站上搜索漏洞詳細信息。(https://nvd.nist.gov/vuln/search網站)
不推薦使用的選項:
--only-update,--refresh而且--auto-refresh被廢棄了,由於他們如今是沒必要要的。這些選項將在下一版本中刪除。
Trivy有對CI友好的特色,而且官方也以這種方式使用它,想要集成CI只須要一段簡單的Yml配置文件便可,若是發現漏洞,測試將失敗。若是不但願測試失敗,請指定--exit code 0。因爲在自動化場景(如CI/CD)中,您只對最終結果感興趣,而不是對完整的報告感興趣,所以請使用--light標誌對此場景進行優化,以得到快速的結果。
集成GitLab CI的Yml配置能夠參考:
https://github.com/aquasecurity/trivy#gitlab-ci
參考資料: https://github.com/aquasecurity/trivy本篇文章出自Choerodon豬齒魚社區汪翔。