在当代开发软件中, 大家会采用一些公共性镜像做为基本镜像来迅速搭建大家的运用镜像,并将其布署到生产环境中。
伴随着很多的程序被容器化,器皿安全性也也随之越来越更加关键。在工程项目的流水线中, 我们可以应用漏洞扫描器开展扫描仪并提早得到意见反馈,完成 “安全性偏移” ,还可以更强的实践活动灵巧。
根据器皿的手机应用程序的安全性困扰
如今,大家应用专业的新技术来搭建大家的应用软件,如 NodeJS、 Java 和 Kotlin 等,随后将代码库储存在代管的 Git 服务平台上,如 GitHub、Gitlab 等。代码库由人们的业务流程编码和相互依赖构成;针对依靠项,我们可以应用专业的扫描工具来保证安全,例如 NodeJS 的 npm audit , GitHub 的 Dependabot;对于大家的业务流程编码,可以采用别的的一些安全工具可以扫描仪,例如 SoneQube 等。
因而,针对依靠( Dependencies)和大家的业务流程编码,这种都是在大家的调节下,我们可以保证应用软件的安全系数,而且在 Pipeline 上得到迅速意见反馈;与此同时在人们将程序布署到生产环境以前可以根据采用多种专用工具创建自信心。可是,一般来说大家的运用程序执行的操作系统自然环境不是受大家操纵的,很有可能具有不确定性的网络安全问题。在这里我们可以换位思考一下一下,假如我们不能确保人们的运用程序执行的系統的环境安全管理,便会造成各式各样意想不到的问题,如黑客入侵、客户数据泄露、经济损失,更会对公司的名誉导致危害。因此,保证大家产出率物(Artifact)的安全防护是很重要的。
维持器皿镜像安全性的 2个计划方案
方案1:在镜像注册表文件中按时扫描仪
根据这些方法,大家必须为镜像注册表文件加上一个网络检测程序流程,扫描仪程序流程可以是一个计划任务(Cron Job) 工作,还可以是由特殊的人开启的可实行实际操作。
如果是一个计划任务,它将在特殊时时刻刻由计划任务全自动开启。例如,Docker Hub 会在指定的時间扫描仪她们的官方网注册表文件,当有一切系统漏洞被扫描仪出去时,它会向镜像维护者推送告警信息内容。
计划方案2:将扫描工具集成化到 Pipeline 中
另一种方式 是在 Pipeline 上对镜像物质开展扫描仪,那样更为简洁高效率。在我们将编码消息推送到编码储存库时, Pipeline 将全自动实行扫描仪镜像的指令。由于 Pipeline 每一次全是无差地实行,因此我们可以发觉一切安全隐患并立即警报修补。
如今,愈来愈多的队伍或企业应用灵巧来开发设计她们的新项目。如果我们能尽快地发觉一切安全隐患或是系统漏洞,大家就可以在发布产品以前减少商品的安全隐患。Pipeline 是保证每一行编码和基本软件环境的安全系数是的较好方式 之一,因为它可以在递交编码时全自动实行。
器皿安全性扫描工具比照
对于以上解决方法,大家调研了 Trivy、Claire、Anchore Engine、Quay、Docker hub 和 GCR 等几类扫描工具,从不一样层面开展比照。
参照 Trivy 官方网站
最先,我们可以将这种扫描工具依照其实施的自然环境简易归类;由于 Docker Hub、GCR 和 Quay 是要在服务器端也就是器皿认证中心运作的, 因此合适计划方案1;Trivy、Clair 和 Anchor Engine 可以在 Pipeline 上工作中,因此合适解决方法2。
针对第一个层面:OS Package,这种全部的扫描工具都能够保证,可是针对第二个层面:Application dependencies,仅有 Trivy 和 Anchore Engine 可以保证,针对第五个层面: Suitable for CI, 仅有前三个满足条件。
针对系统漏洞数据库查询的升级,Clair 会按时从一组配备的源中获得系统漏洞元数据库查询(Vulnnerability Database),并将数据储存在其数据库查询中,只需不获得全新的系统漏洞数据库,每一次实行都用以前的系统漏洞数据库查询,系统漏洞数据库查询的及时性有点儿差。Trivy 和 Anchore Engine 则是每一次运作都将免费下载全新的系统漏洞数据库查询并将其存储在本地文件中,当扫描工具再度运作时,它将查验并更新数据库以维持数据库查询为全新情况。
与此同时,针对 Trivy、Clair 和 Anchore Engine,这三者的小区十分活跃性,因此我们不能用没人来帮你处理你的问题来评定;并且做为一种专用工具,它务必便于应用而且有优良的文本文档产考。通过调查,发觉 Trivy 的文本文档十分详尽,十分友善, 并且 Trivy 的应用方法更为友善,例如我们可以过虑掉(.trivyignore)你规定的系统漏洞,针对最新发现的系统漏洞,官方网没得出修补版本号,此刻大家就可以忽视这一系统漏洞再次搭建,但 Anchore Engine 做不到。
2020年3月16日,领跑的云原生运用和基础设施建设安全教育平台经销商 Aqua Security 公布,其开源系统的 Trivy 漏洞扫描器将做为一个集成化选择项加上到其采用的云原生服务平台、CNCF 的 Harbor 注册表文件和 Mirantis Docker Enterprise 中。你能在这儿寻找这篇文章:https://blog.aquasec.com/trivy-vulnerability-scanner-joins-aqua-family。
Trivy集成化到流水线中的操作方法
Trivy 适用多种多样扫描仪方法,如扫描仪器皿镜像、Git 库房和系统文件等;下边,大家应用 GitHub Actions 以 Docker 运作 Trivy 扫描仪搭建好的镜像产出率物来展现 Trivy 的强劲之处,下边是 GitHub Actions 的一些编码:
在这里必须对下面这几个主要参数做尤其表明:
(1) -v/var/run/docker.sock:/var/run/docker.sock
假如想扫描仪当地服务器上的镜像,必须初始化 docker.sock
(2) --severity 设定要扫描仪的系统漏洞等级
(3) --exit-code 发觉系统漏洞时 Trivy 的撤出情况(初始值:0);在 Pipeline 中,假如将该值设定为1,且有系统漏洞被发觉,则 Pipeline 将撤出,而不容易再次运作。假如将其设定为0,则 Pipeline 将持续运作,但会汇报結果。因此,假如你要在发觉系统漏洞后阻拦 Pipeline 执行,可以设定它为1。
想知道更多的有关主要参数和操作方法的信息内容,请浏览 Trivy 的官网:https://github.com/aquasecurity/trivy。
汇总
无论你在哪,安全性全是一个十分关键的问题。我们可以将 “安全性偏移(Shift Left Security)”,那样就可以降低生产环境中的安全隐患;针对扫描工具 Trivy 而言,它对确保镜像的稳定性十分有效,它不但可以扫描仪镜像,还能够扫描仪 Git 库房,系统文件等。
最终,十分感谢同事陈贝楚、王亦晨和邢砚敏等人的鼎力支持和具体指导,在她们热情协助和艰辛努力下才拥有这篇文章。
【文中是51CTO栏目创作者“ThoughtWorks”的原创设计文稿,微信公众平台:思特沃克,转截请联络创作者】
戳这儿,看该创作者大量好文章