2018-10-29
说到容器的安全性,我觉得它就像三明治
在RSA会议上,当我正在谈论容器时忽然想到,我们可以认为容器就像一个三明治,不是说他们有多“好吃”,而是关注于你的容器是从哪里来的。我感到高兴的是,几乎所有我与之交谈的安全人员,他们都了解当前的容器安全噩梦,当然,挑战在于我们如何把当前的状况解释给其他人。安全问题(Security)很难,我们也很不善于讲述它。其他人同样也不知道红帽(Red
Hat)当前在做什么,这完全是我们自己的错,但我们会在别的地方谈那些。 但是容器就像三明治,这意味着什么呢?让我们从这个方面的来思考。
你可以拿起一个三明治,看看它,你就可以说出来里面基本上都有些什么成分。是否有西红柿?生菜?火腿?火鸡?这并不难。可以有隐藏的东西,但在大多数情况下,你可以得到很完整的细节。这就像一个容器。基于Fedora?红帽?Ubuntu?
包含httpd?太棒了。 包含一个shell? systemd?
酷。也会有些吓人的东西隐藏在其中,比如有人决定用一个Python来替换/bin/sh脚本?这就像生菜下隐藏着橄榄,什么样的“疯子”才会做这样的事情呢!
现在,我们已经在脑海中有了一个三明治的形象,下面让我们来思考几个场景。 在公园的长凳上发现它假设你正在公园散步,刚好看到一个三明治就放在一条长凳上,你会做什么呢?你可能会环顾四周,想知道是谁留下的这个令人愉悦的美味,但你不会吃它。大多数人甚至不会去碰它,谁把它放在那里的,它是从哪里来的,它做出来多久了,里面有洋葱么?
这么多的问题,而老实说你不会得到一个像样的答案。 即使有人能够回答这些问题,你会吃那个三明治么? 我是不会。
公园的长凳上发现的三明治,就像publish container
registry(公共容器注册表)里的容器。如果这就是你所知道的全部,你可能不会觉得这样做有什么不妥,但就像pubic
registry,你不会总是清楚你得到的容器里都有些什么。我想知道有多少这类的容器注意了到glibc几周前的缺陷更新?它们可能更容易不知道。从食材有问题的“黑”店得到它 很久以前,我在纽约街头漫步,决定进一家三明治店大快朵颐。
当我正准备进门时,看到门旁有一张来自卫生部门的通知,于是我决定坚持往前走。即使你可以从某个店里买到三明治,但如果那是一家“黑店”,你还是会陷入麻烦之中。
类似的,网上有大量可用但不被信任的容器可供你下载。但是不要在随意的地方下载随意的容器,那样做无异于试图从一个需要用扫帚把老鼠赶出厨房的肮脏的商店里购买一个三明治。
从使用旧食材的“好”店得到它
我们都见过一些看起来很不错的卖三明治的地方。那里指示牌是新刷的,窗明几净,当你坐在桌旁的时候,那些桌子看起来甚至干净得可以吃。但是当你点餐的时候,你就会清楚的发现,所有的食材都是过时的,干瘪的。你也许可以在那位
这种情况正是目前容器界所面临的巨大危险。容器现在正是炙手可热的时候,有许多人工作在这领域中,许多这样的团队甚至不知道他们的容器是有问题的。容器中的软件很像是三明治中的夹心肉,要到几个星期以后,你可能才能闻到它不好的味道,而一个月以后,它将会给那些“消费”它的人带来严重的伤害。
所以,一定要问清楚你的容器供应商,他们的容器所装载的是什么,从哪里来的,以及“保鲜度”如何。“如果这个容器是一个三明治,你会消费它么?”这样问并不合理。(译者注:个人觉得应该是:这是个合理的问题,原文:it
would not be reasonable to ask) 从使用好食材的“好”店得到它这是我们的梦想。你走进一家不错的店,一位漂亮的店员在柜台后面受理你点的餐,并使用最新鲜的食材,为你制作了一个堪称艺术作品的三明治。你拍照留念,并把它发给你所有的朋友,解释说,这家的三明治是你一生求而不得,却直到如今才知道的。
这就是为什么当涉及到容器内容的时候,你需要一个可以信任的合作伙伴。距源头越近,你所能得到的就越好。多问关于容器内容的问题。比如它从哪里来的?谁负责维护?我怎么能证实这些?谁负责更新?容器是项了不起的技术,它崭新而令人兴奋,同时它也被严重的误解。一定要使用“新鲜”的容器。如果你使用的容器的内容已经好几个月没有更新了,那么你正在吃一个在公园的长椅上发现的三明治,不要吃那些留在公园长椅上的三明治。要问一些尖锐的问题,如果你的供应商不能回答这些问题,你需要尝试街对面的那家店。容器的魔力之一就在于它们是真正的操作系统商品化的结果,你可以从很多渠道获得容器的内容,总能找到一个好的。
如果我们对待基础设施(infrastructure)就像对待公共卫生一样的话,那么我们一定不想对“让每个人都生病”这样的事情负责。你需要知道你使用的是什么,它们从哪里来的,有多“新鲜”,谁制作的,它里面的成分是什么?假装一切都很好是不够的,因为一切并不是都很好。