LWN: 怎样确认docker image里的软件合规以及安全?

An update on compliance for containers

基于Jake Edge的https://lwn.net/Articles/786066/
本文简述一下lwn的Jake Edge在LLW会议上撰写的文章,没有全文翻译,希望节省读者时间。从这篇文章里面,译者感到比较震撼的是演讲者面对困难不逃避,尽力克服的精神,以及对FOSS的license/copyright的坚持和支持,还有从无到有在锲而不舍的宣讲中发展追随者的行动力。人生还是要有一些追求的,共勉。
去年的LLW(Legal and Licensing Workshop)会议上,Dirk Hohndel就提出了一个问题,如何确保container(容器,虚拟化行业名词)里的内容是合规以及安全的?今年他带来了目前最新的进展。
Hohndel是VMware的chief open source officer,不过他做这件事情并不是VMware的指派,而是来自个人兴趣。他很苦恼无法了解一个container image(例如一个docker image)里面运行的各种软件,究竟是否license合规,以及安全可信。因此他个人推动Linux Foundation来建立了ACT(Automated Compliance Tooling)这个项目。过去一年里他花了很多精力来在各个会议宣传这个问题,他很开心的看到,现在他在会议上做举手调查的时候,终于开始有人关注他所关心的这个话题了。

container image,其实本质上是很多个layer的软件,一层一层的编译叠加覆盖上去,这样对开发者是个非常节省时间的方案,但是对于软件合规化以及安全检查的人来说,就是一个nightmare了。得花很多精力搞清楚被上一层软件覆盖掉的下一层软件到底是个什么鬼。对container image的提供者而言,肯定希望能够在一些恶意的使用者对自己进行诉讼之前,能清楚了解自己打包进container image的各个软件包是否已经足够合法以及安全。 因此,Hohndel得出的结论,就是一定要有相应的工具来做这个检查。

简而言之,现在他的ACT项目已经有了3个子项目:Tern,Quartermaster,FOSSology。而Tern初步能够实现对container image内容的检查,总结出其中的BOM(Bill of Materials,这里指的是里面用了哪些软件组件例如busybox,分别是什么版本),每个组件对应的license, copyright, SPDX header等等,甚至提供对应的源代码的查看功能。
Hohndel自嘲道,目前这个项目还是“no body cares”。因此他的结束语里,希望参会的律师、工程师,都能关注ACT这个项目,帮助贡献代码,与此同时也能够在各个场合多宣传此项目,以及container image可能面对的风险。只有人们注意到了,才会有更合理的解决方案。
在Q&A环节有很激烈的问答,这里就不详述所有讨论了,只简单提几点热点话题:

  1. 不少container image提供方甚至为了减少image size,而把所有copyright, license等文件都删除,这本身就会违背相当多的软件包的license。
  2. 希望相应的公司和组织(例如docker, 和管理Kubernete的CNCF, google, Amazon等)都能重视这个问题,不过悲哀的是,他目前接触到的Google和Amazon的联系人都对这个带不来商业利益的项目兴趣不大。
  3. Software Freedom Conservancy (SFC)的Karen Sandler提到SFC组织也关注相同问题,鼓励大家把non-compliant image(不合规的container image)报告给SFC。
  4. 现有的Software Heritage项目(一个旨在保留所有开源项目的源代码和历史改动的项目),可能可以利用来做源代码查询。
  5. Hohndel提到Tern工具可以用于在container mage的build阶段就检测,也可以用于build好之后再打开做检查。不过后者更难实现完美。

最后,当Hohndel听到有人愿意联系通知Alpine Linux的时候,欣慰的说,这样他这次的presentation就非常成功了,谢谢大家!
(注,Alpine Linux存在于很多container image里面,但是Alpine把所有的license file都去除了,违背了相关软件包的license)。