部署和使用Anchore映像漏洞掃描器
譯文【51CTO.com快譯】無(wú)論您使用什么平臺(tái),您的容器都基于映像。這意味著部署的安全性始于開(kāi)發(fā)者與實(shí)際情況相遇的映像層面。不管您多么謹(jǐn)慎,如果容器基于含有漏洞的映像,應(yīng)用程序和服務(wù)的安全性就岌岌可危。作為云原生開(kāi)發(fā)者,您無(wú)法允許這樣。
那么,您該怎么做?
通常您所做的一切基于官方映像,這些由知名的公司和開(kāi)發(fā)者加以標(biāo)記。這些映像總體上值得信任。然而一旦某個(gè)漏洞成為漏網(wǎng)之魚(yú),就會(huì)造成嚴(yán)重破壞。
如果您不實(shí)際核查這些映像,說(shuō)到底全靠信任了。
您其實(shí)可以利用現(xiàn)有的工具來(lái)掃描那些映像以查找漏洞。其中一些工具安裝和運(yùn)行起來(lái)很費(fèi)勁。不過(guò)幸好,一些足夠簡(jiǎn)單的工具是任何開(kāi)發(fā)者或管理員都可以使用的。開(kāi)源Anchore Engine(https://anchore.com/opensource/)就是這樣的工具之一。使用這款命令行工具,您可以?huà)呙柘胍褂玫挠诚?,以查找是否含有任何已知的CVE問(wèn)題。
我會(huì)逐步介紹安裝和使用Anchore Engine的過(guò)程,以便您不用猜測(cè)那些映像是否有漏洞。
我將在Ubuntu Server 20.04上演示,但是Anchore Engine可以部署在支持docker-compose的任何系統(tǒng)上使用。
安裝docker-compose
要注意的頭件事是docker-compose的安裝。為此,您需要先安裝docker。登錄Ubuntu服務(wù)器,執(zhí)行命令:
- sudo apt-get install docker.io -y
安裝完成后,使用以下命令將用戶(hù)添加到docker組:
- sudo usermod -aG docker $USER
這步完成后,注銷(xiāo)并重新登錄。
現(xiàn)在我們可以安裝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
使用以下命令,授予剛下載的文件可執(zhí)行權(quán)限:
- sudo chmod +x /usr/local/bin/docker-compose
您可以使用以下命令確認(rèn)安裝:
- docker-compose --version
您應(yīng)該會(huì)看到類(lèi)似這樣的內(nèi)容:
- docker-compose version 1.28.5, build c4eb3a1f
部署Anchore Engine
docker-compose準(zhǔn)備就緒后,我們可以部署Anchore Engine了。使用以下命令,下載所需的docker-compose.yaml文件:
- curl -O https://engine.anchore.io/docs/quickstart/docker-compose.yaml
文件下載完畢后,使用以下命令部署Anchore Engine:
- docker-compose up -d
給服務(wù)啟動(dòng)的時(shí)間,然后使用以下命令驗(yàn)證Anchore Engine在運(yùn)行:
- 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
您已準(zhǔn)備好開(kāi)始掃描了。
同步Engine
使用Anchore Engine掃描映像并非很簡(jiǎn)單。運(yùn)行最后一條命令后,Anchore Engine會(huì)開(kāi)始將漏洞數(shù)據(jù)與引擎進(jìn)行同步。要檢查同步狀態(tài),執(zhí)行以下命令:
- docker-compose exec api anchore-cli system feeds list
您應(yīng)該會(huì)看到RecordCount下的所有條目都被列為“None”(圖1)。
圖1:我們的引擎正與漏洞數(shù)據(jù)同步
完全同步將需要一些時(shí)間,因此可以去處理其他一些任務(wù)。最后,RecordCount中的所有數(shù)據(jù)都有一個(gè)數(shù)值(圖2)。
圖2:Anchore Engine現(xiàn)在已同步好、可以使用了
掃描影像
不妨掃描最新的Ubuntu映像(20.04)有無(wú)漏洞。先要做的是獲取映像內(nèi)容,使用以下命令提取內(nèi)容:
- docker-compose exec api anchore-cli image add docker.io/library/ubuntu:20.04
映像添加后,我們使用一組Anchore分析器對(duì)映像進(jìn)行分析,對(duì)元數(shù)據(jù)進(jìn)行分類(lèi)。要做的頭件事是使用wait命令,確保映像轉(zhuǎn)換成已分析映像,使用以下命令:
- 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
如果所有數(shù)據(jù)已填寫(xiě)完畢,您可以繼續(xù)下一步??梢允褂靡韵旅钫页鲇诚裰泻械拿總€(gè)軟件:
- docker-compose exec api anchore-cli image content docker.io/library/ubuntu:20.04 os
最后,我們使用以下命令運(yùn)行漏洞掃描:
- docker-compose exec api anchore-cli image vuln docker.io/library/ubuntu:20.04 all
掃描完成后,它將報(bào)告映像中找到的所有已知CVE,并相應(yīng)地報(bào)告(圖3)。
圖3:最新的Ubuntu 20.04映像上標(biāo)記的最高CVE被標(biāo)記為“中等”(Medium)
好了。現(xiàn)在,您已有了關(guān)于映像安全的必要信息,可以采取措施了。如果您找到的映像含有違反公司安全政策的CVE(并可能導(dǎo)致問(wèn)題),可以丟棄該映像、另找一個(gè)映像,或者等到這些漏洞得到解決(或您自己解決)。
定期使用Anchore Engine之類(lèi)的工具可以確保您的云原生開(kāi)發(fā)生命周期始終以安全的基礎(chǔ)開(kāi)始。
原文標(biāo)題:Deploy and Use the Anchore Image Vulnerability Scanner,作者:Jack Wallen
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】