部署和使用Anchore映像漏洞掃描器
譯文【51CTO.com快譯】無論您使用什么平臺,您的容器都基于映像。這意味著部署的安全性始于開發者與實際情況相遇的映像層面。不管您多么謹慎,如果容器基于含有漏洞的映像,應用程序和服務的安全性就岌岌可危。作為云原生開發者,您無法允許這樣。
那么,您該怎么做?
通常您所做的一切基于官方映像,這些由知名的公司和開發者加以標記。這些映像總體上值得信任。然而一旦某個漏洞成為漏網之魚,就會造成嚴重破壞。
如果您不實際核查這些映像,說到底全靠信任了。
您其實可以利用現有的工具來掃描那些映像以查找漏洞。其中一些工具安裝和運行起來很費勁。不過幸好,一些足夠簡單的工具是任何開發者或管理員都可以使用的。開源Anchore Engine(https://anchore.com/opensource/)就是這樣的工具之一。使用這款命令行工具,您可以掃描想要使用的映像,以查找是否含有任何已知的CVE問題。
我會逐步介紹安裝和使用Anchore Engine的過程,以便您不用猜測那些映像是否有漏洞。
我將在Ubuntu Server 20.04上演示,但是Anchore Engine可以部署在支持docker-compose的任何系統上使用。
安裝docker-compose
要注意的頭件事是docker-compose的安裝。為此,您需要先安裝docker。登錄Ubuntu服務器,執行命令:
- sudo apt-get install docker.io -y
安裝完成后,使用以下命令將用戶添加到docker組:
- sudo usermod -aG docker $USER
這步完成后,注銷并重新登錄。
現在我們可以安裝docker-compose了。使用以下命令,下載必要的文件:
- sudo curl –L
- "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
使用以下命令,授予剛下載的文件可執行權限:
- sudo chmod +x /usr/local/bin/docker-compose
您可以使用以下命令確認安裝:
- docker-compose --version
您應該會看到類似這樣的內容:
- docker-compose version 1.28.5, build c4eb3a1f
部署Anchore Engine
docker-compose準備就緒后,我們可以部署Anchore Engine了。使用以下命令,下載所需的docker-compose.yaml文件:
- curl -O https://engine.anchore.io/docs/quickstart/docker-compose.yaml
文件下載完畢后,使用以下命令部署Anchore Engine:
- docker-compose up -d
給服務啟動的時間,然后使用以下命令驗證Anchore Engine在運行:
- docker-compose exec api anchore-cli system status
命令的輸出如下所示:
- Service apiext (anchore-quickstart, http://api:8228): up
- Service policy_engine (anchore-quickstart, http://policy-engine:8228): up
- Service simplequeue (anchore-quickstart, http://queue:8228): up
- Service analyzer (anchore-quickstart, http://analyzer:8228): up
- Service catalog (anchore-quickstart, http://catalog:8228): up
- Engine DB Version: 0.0.14
- Engine Code Version: 0.9.0
您已準備好開始掃描了。
同步Engine
使用Anchore Engine掃描映像并非很簡單。運行最后一條命令后,Anchore Engine會開始將漏洞數據與引擎進行同步。要檢查同步狀態,執行以下命令:
- docker-compose exec api anchore-cli system feeds list
您應該會看到RecordCount下的所有條目都被列為“None”(圖1)。
圖1:我們的引擎正與漏洞數據同步
完全同步將需要一些時間,因此可以去處理其他一些任務。最后,RecordCount中的所有數據都有一個數值(圖2)。
圖2:Anchore Engine現在已同步好、可以使用了
掃描影像
不妨掃描最新的Ubuntu映像(20.04)有無漏洞。先要做的是獲取映像內容,使用以下命令提取內容:
- docker-compose exec api anchore-cli image add docker.io/library/ubuntu:20.04
映像添加后,我們使用一組Anchore分析器對映像進行分析,對元數據進行分類。要做的頭件事是使用wait命令,確保映像轉換成已分析映像,使用以下命令:
- docker-compose exec api anchore-cli image wait docker.io/library/ubuntu:20.04
- The output of the above command should like similar to:
- Image Digest: sha256:e3d7ff9efd8431d9ef39a144c45992df5502c995b9ba3c53ff70c5b52a848d9c
- Parent Digest: sha256:b4f9e18267eb98998f6130342baacaeb9553f136142d40959a1b46d6401f0f2b
- Analysis Status: analyzed
- Image Type: docker
- Analyzed At: 2021-03-20T13:00:42Z
- Image ID: 4dd97cefde62cf2d6bcfd8f2c0300a24fbcddbe0ebcd577cc8b420c29106869a
- Dockerfile Mode: Guessed
- Distro: ubuntu
- Distro Version: 20.04
- Size: 78632960
- Architecture: amd64
- Layer Count: 3
- Full Tag: docker.io/library/ubuntu:20.04
- Tag Detected At: 2021-03-20T12:58:34Z
如果所有數據已填寫完畢,您可以繼續下一步。可以使用以下命令找出映像中含有的每個軟件:
- docker-compose exec api anchore-cli image content docker.io/library/ubuntu:20.04 os
最后,我們使用以下命令運行漏洞掃描:
- docker-compose exec api anchore-cli image vuln docker.io/library/ubuntu:20.04 all
掃描完成后,它將報告映像中找到的所有已知CVE,并相應地報告(圖3)。
圖3:最新的Ubuntu 20.04映像上標記的最高CVE被標記為“中等”(Medium)
好了。現在,您已有了關于映像安全的必要信息,可以采取措施了。如果您找到的映像含有違反公司安全政策的CVE(并可能導致問題),可以丟棄該映像、另找一個映像,或者等到這些漏洞得到解決(或您自己解決)。
定期使用Anchore Engine之類的工具可以確保您的云原生開發生命周期始終以安全的基礎開始。
原文標題:Deploy and Use the Anchore Image Vulnerability Scanner,作者:Jack Wallen
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】