1. 程式人生 > >系統管理員的容器時代之殤

系統管理員的容器時代之殤

系統管理現在處於一個癲狂的時代,一片混亂。

我並不是抱怨老式系統管理員們,他們還是知道如何讓系統工作起來,知道怎麼更新系統和如何升級擴容。

這篇吐槽是關於容器、預構建虛擬機器映象的,它們真是令人難以置信的混亂,它們的腦子裡面就根本沒有“可信”和“升級”的概念。

舉個 Hadoop 的例子,似乎就沒有人知道如何從頭構建一份 Hadoop,它那令人頭昏眼花的依賴關係、版本需求和構建工具讓人云山霧罩。所有這些“神奇”的工具仍然是通過傳統的 make 命令構建的,每個工具都是它自己帶的,彼此不相容,你得按照沒有複用意義的“當日路線圖”來構建。因為沒有人能從頭構建,所以現在大家都從一些不定是哪個的網站去下載已經編譯好的二進位制

,基本上沒有任何認證和簽名

這是 NSA 和病毒們的天堂啊!不需要搞什麼破解和漏洞挖掘,只需要弄個“APP”、虛擬機器或 Docker 映象,人們就會把這些惡意程式碼弄到他們的網路裡面去。

Debian 的 Hadoop 維基頁就是一個典型的例子,基本上,從 2010 年開始人們就已經放棄了從原始碼構建一個 Debian 上可用的 Hadoop 包了。

要構建 Apache Bigtop,你首先需要安裝 puppet3,然後用它從網際網路上下載一些魔法般資料。以 sudo 的許可權啟動 puppet ,順便給 NSA 開個後門(舉個例子,它會下載和安裝一個過期的預編譯的 JDK——因為它認為你太笨了,不會安裝 Java),然後期待它能順利構建而不是丟擲200行的毫無用處的報錯跟蹤。

我沒有開玩笑,它會試著執行像下面這樣的指令碼:

[code language=”shell”]/bin/bash -c "wget http://www.scala-lang.org/files/archive/scala-2.10.3.deb ; dpkg -x ./scala-2.10.3.deb /"[/code]

注意,甚至這並沒有正常的安裝這個包,而只是將其解壓縮到你的根目錄下!下載時也沒有檢查任何簽名、沒有通過 SSL(指令碼來自 Bigtop 的 puppet 清單)。

即便你的構建正常工作了,它也會通過 Maven 下載來自網際網路的沒有簽名的二進位制程式碼,並用這些來構建。

不再寫一些乾淨的、模組化的架構,所有這些現在都牽扯在混亂的依賴裡面。我上次看到, hadoop 的類路徑已經有 100 多個 jar 了,現在?我打賭它肯定有 150 個了。那些 HBaseGiraphFlumeCrunchPigHiveMahoutSolrSparkElasticsearch 以及 Apache 家族的其它東東都是這樣混亂。

所謂軟體棧,現在的意思是“我也不知道我實際上用的是啥”。

Mavenivysbt 這些即用的工具其實就是讓你的系統從網際網路下載那些無簽名的二進位制資料並執行在你的計算機上。

再加上容器,哦天哪,更亂了。

是否想過給容器進行安全更新

基本上,Docker 的思路就是下載一個未簽名的二進位制並執行它,然後期望它不要將任何後門放到你的公司網路裡面去。

這就像是我在90年代時在 Windows 上下載的共享軟體一樣。什麼時候會出現第一個帶有 Ask 工具條的 Docker 映象呢?第一個通過 Docker 映象傳播的網際網路蠕蟲呢?

回到前些年,Linux 發行版努力著提供一個安全的作業系統,帶有簽名的軟體包、可信的網路、甚至還能完全的重新構建。

而現在呢?什麼東西都已經 Windows 化了,到處是瘋狂的“App”,你下載,你執行,根本不管是否安全,是否能升級到下個版本。因為你就是“過把癮就死”!

更新:其實在 Docker 之前就有這樣的作法了,Docker 只是一個新的 ‘curl | sudo bash’ 而已。是的,這就是主流的、在你的資料中心下載並執行一個不可信軟體的方法。這太糟糕了,真的。之前,系統管理員還在努力的防禦安全漏洞,現在,他們自稱“devops”了,然後很 happy 地把這些東西弄到他們的網路裡面了!

原文:http://www.vitavonni.de/blog/201503/2015031201-the-sad-state-of-sysadmin-in-the-age-of-containers.html
譯文:http://linux.cn/article-5328-1.html