美國國家標(biāo)準(zhǔn)技術(shù)局(NIST)發(fā)布了一項(xiàng)有關(guān)應(yīng)用容器技術(shù)安全問題的公告。該公告對之前的兩個(gè)公告內(nèi)容進(jìn)行了總結(jié),包括鏡像、注冊表、編配器、容器、主機(jī)操作系統(tǒng)和硬件方面的漏洞,以及相應(yīng)的應(yīng)對措施。
NIST的計(jì)算機(jī)安全研究中心(CSRC)負(fù)責(zé)監(jiān)管NIST的數(shù)字和信息相關(guān)的項(xiàng)目和出版物。該公告對之前的兩份有關(guān)應(yīng)用容器安全的出版物進(jìn)行了總結(jié),它先是對應(yīng)用容器的現(xiàn)狀進(jìn)行了總結(jié),然后列出了影響容器安全的因素,最后提出改進(jìn)應(yīng)用容器安全的應(yīng)對措施。
容器的可移植性和不可變性會導(dǎo)致兩個(gè)地方出現(xiàn)安全問題。容器提供了比應(yīng)用壓縮包更高級別的抽象,用于發(fā)布和部署應(yīng)用程序。它們具有跨環(huán)境和機(jī)器的可移植性,相同的容器鏡像可以被用在開發(fā)環(huán)境、測試環(huán)境和生產(chǎn)環(huán)境。這對于應(yīng)用的可移植性和持續(xù)交付來說雖然有一定的好處,但也帶來了安全問題。安全工具和流程并不能保證容器所運(yùn)行環(huán)境絕對安全,因?yàn)樘囟ǖ沫h(huán)境可能包含很多安全漏洞。
容器使用了不可變模型,每當(dāng)一個(gè)新版本的容器發(fā)布,舊的容器就會被銷毀,新容器會代替舊容器執(zhí)行任務(wù)。如果基礎(chǔ)鏡像發(fā)生變更(比如一個(gè)操作系統(tǒng)鏡像),應(yīng)用開發(fā)者就必須為相應(yīng)的應(yīng)用生成新的鏡像。將安全漏洞補(bǔ)丁和缺陷修復(fù)推到生產(chǎn)環(huán)境變成了開發(fā)人員的責(zé)任,而不是運(yùn)維人員。但實(shí)際上,運(yùn)維團(tuán)隊(duì)?wèi)?yīng)該在這方面擁有更多的經(jīng)驗(yàn),所以說這也是一個(gè)潛在的問題。
NIST發(fā)布的指南列出了六個(gè)需要應(yīng)用安全措施的地方,包括鏡像、注冊表、編配器、容器、主機(jī)操作系統(tǒng)和硬件。鏡像漏洞有可能是操作系統(tǒng)漏洞、配置問題、木馬、未被信任的鏡像、明文存儲的秘鑰。鏡像是基于基礎(chǔ)鏡像構(gòu)建而成的,在很多情況下,應(yīng)用開發(fā)者并不知道底層鏡像會存在問題。不安全的連接、過時(shí)的鏡像和不完備的認(rèn)證授權(quán)機(jī)制給鏡像注冊帶來了風(fēng)險(xiǎn)。如果沒有做好網(wǎng)絡(luò)流量控制,任由無限制的訪問,那么用于管理容器生命周期的編配器也會出現(xiàn)問題。大部分編配器并不支持多用戶模式,從安全方面來看,默認(rèn)的設(shè)置一般無法保證最佳的安全性。
容器里也可能包含了惡意代碼,它們有可能會“沖出”容器,對同一主機(jī)上的其他容器或?qū)χ鳈C(jī)本身造成威脅。容器內(nèi)部未加控制的網(wǎng)絡(luò)訪問和不安全的容器運(yùn)行時(shí)配置(在高級別權(quán)限模式下運(yùn)行)也會帶來隱患,因?yàn)槿萜饔锌赡苁艿絹碜云渌矫娴挠绊懀热鐟?yīng)用級別的漏洞。每一個(gè)主機(jī)操作系統(tǒng)都有一個(gè)“攻擊面”,攻擊者通過這個(gè)攻擊面對操作系統(tǒng)發(fā)起攻擊。主機(jī)一旦受到攻擊,主機(jī)上的容器也難逃厄運(yùn)。共享內(nèi)核的容器會加大攻擊面。
應(yīng)對措施需要從最底層開始——也就是硬件,然后往上達(dá)到容器運(yùn)行時(shí),當(dāng)然也會觸及鏡像、注冊表和編配器。之前關(guān)于容器安全的研究也提到了類似的內(nèi)容。
查看英文原文:NIST Publishes Guidelines on Application Container Security