Trivy 是 AquaSecurity 開發的工具,它可以掃描漏洞與有問題的設定檔,而且這工具有開源出來,真的是很佛心。
Trivy 有提供 CLI ,可以搭配 CI 作映像檔掃描,它也有提供 Operator ,可以安裝到 Kubernetes/OpenShift 裡,在佈署容器以後,他會自動的掃描,並產出漏洞報告。
安裝
安裝相當簡單,這邊使用 helm 來安裝,主要是因為這樣好管理。安裝步驟是參考這份文件:Helm – Trivy Operator
加入 helm repository
helm repo add aqua https://aquasecurity.github.io/helm-charts/
helm repo update
安裝
helm install trivy-operator aqua/trivy-operator \
--namespace trivy-system \
--create-namespace \
--set="trivy.ignoreUnfixed=true" \
--version 0.10.1
檢查
helm list -n trivy-system
kubectl get deployment -n trivy-system
應該會看到以下的輸出
$ helm list -n trivy-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
trivy-operator trivy-system 1 2021-01-27 20:09:53.158961 +0100 CET deployed trivy-operator-0.10.1 0.10.1
$ kubectl get deployment -n trivy-system
NAME READY UP-TO-DATE AVAILABLE AGE
trivy-operator 1/1 1 1 11m
使用
安裝完成以後,Trivy 會自動開始對所有 deployment/daemonset/pod 等的 image 去做掃描。
可以用以下指令去看掃描報告的列表,報告有兩種,一種是安全漏洞的 (vulnerabilityreports) ,一種是稽核的 (configauditreports)
kubectl get vulnerabilityreports -A -o wide
kubectl get configauditreports -A -o wide
後續佈署上去的,也會自動掃描。
要看報告內容,可以用 get/describe 來察看
kubectl get vulnerabilityreport replicaset-nginx-5fbc65fff-nginx -o yaml
kubectl describe configauditreport replicaset-nginx-5fbc65fff
報告預設是 24 小時後刪除,然後重新掃描,如果要調整,可以修改 trivy-operator 這個 deployment 裡的 OPERATOR_SCANNER_REPORT_TTL 環境變數。
後續
後續延伸的議題是 trivy 的掃描依據是什麼呢?若在封閉的環境下,能否使用?若可以使用,又該如何更新呢?
結論
感謝 AquaSecurity 提供的這個工具,讓容器平台能更安全。
沒有留言:
張貼留言