【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】