佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 阿里云飛天分布式系統(tǒng)使用沙箱機(jī)制的經(jīng)驗(yàn)總結(jié)

阿里云飛天分布式系統(tǒng)使用沙箱機(jī)制的經(jīng)驗(yàn)總結(jié)

熱門標(biāo)簽:鐵路電話系統(tǒng) 網(wǎng)站排名優(yōu)化 AI電銷 Linux服務(wù)器 地方門戶網(wǎng)站 百度競(jìng)價(jià)排名 呼叫中心市場(chǎng)需求 服務(wù)外包

飛天項(xiàng)目的整體架構(gòu),最底層基礎(chǔ)架構(gòu)是由通用服務(wù)器組成的Linux集群,沒有使用高端的服務(wù)器和存儲(chǔ)。飛天提供功能的方式是通過(guò)服務(wù)的方式,下圖中所有藍(lán)色的框(指各類云計(jì)算服務(wù))都是對(duì)外提供服務(wù)的窗口,但這里藍(lán)色的框并不代表所有阿里云提供的服務(wù),還有許多其他的服務(wù)沒有包括。最上層,飛天項(xiàng)目是阿里云整個(gè)產(chǎn)品和服務(wù)的技術(shù)基礎(chǔ),上面是各種各樣的應(yīng)用。
飛天平臺(tái)上強(qiáng)調(diào)的是做多租戶,因?yàn)楸娝苤朴?jì)算帶來(lái)的好處就是彈性,另外一個(gè)就是需要幫助大家降低成本。

下面這張圖是飛天的體系結(jié)構(gòu)介紹。整個(gè)的飛天系統(tǒng),最基礎(chǔ)的兩大系統(tǒng),盤古和伏羲。如果大家之前了解過(guò)這方面的資料,應(yīng)該對(duì)這張圖非常熟悉。飛天基礎(chǔ)系統(tǒng)上承載著多個(gè)云產(chǎn)品,ECS/SLB、OSS、OTS、OSPS、包括ODPS的系統(tǒng)。安全機(jī)制在飛天及飛天承載的云產(chǎn)品中起著至關(guān)重要的作用。

主要的工作包括幾個(gè)方面,一個(gè)是訪問控制機(jī)制另一方面是安全沙箱.訪問控制機(jī)制包括從盤古文件的訪問、讀取和認(rèn)證機(jī)構(gòu),還有ODPS、OTS、OSS等系統(tǒng)基于飛天做,飛天會(huì)幫它們做所有上層的安全措施基礎(chǔ)機(jī)制支撐工作。尤其是ODPS系統(tǒng),其所有的訪問控制機(jī)制和安全沙箱的系統(tǒng),都是由飛天安全提供機(jī)制來(lái)支持的。
今天我們要講的議題,首先會(huì)從攻擊者的角度看一下云上的計(jì)算系統(tǒng)有哪些Attack Surfaces可以利用.然后看一下目前開源的產(chǎn)品,比較著名的產(chǎn)品從這個(gè)角度來(lái)看是如何解決安全問題的。以及l(fā)inux系統(tǒng)提供了那些安全機(jī)制可供安全沙箱使用。最后,我們具體了解一下飛天安全沙箱的方案。

首先,我們看一下典型的云計(jì)算環(huán)境中,為支撐用戶代碼的運(yùn)行,從上到下的結(jié)構(gòu)。通常為了讓用戶代碼能夠執(zhí)行高級(jí)語(yǔ)言,我們都會(huì)有一層高級(jí)語(yǔ)言的虛擬機(jī),比如JVM,Cpython。我們以后有些系統(tǒng)會(huì)跑JS,這里對(duì)應(yīng)的是V8。這些虛擬器通常是C語(yǔ)言來(lái)開發(fā)的,相對(duì)來(lái)說(shuō)是一個(gè)獨(dú)立的系統(tǒng),再下一層是Libc的庫(kù),這個(gè)對(duì)應(yīng)的是C語(yǔ)言的so。再往下一層是LinuxKernel。再往下其實(shí)還有,如果是說(shuō)這個(gè)系統(tǒng)用的是虛機(jī),往下還會(huì)有物理機(jī),本次分享不討論這個(gè)問題。對(duì)于這樣的系統(tǒng)來(lái)說(shuō),如果User code的惡意代碼,為了拿到Linux Kernel的root權(quán)限需要一步步的滲透。入侵者如果想要到達(dá)最終目標(biāo),首先要突破高級(jí)語(yǔ)言虛擬機(jī)的安全防護(hù),比如Java的SecurityManager機(jī)制。不過(guò)根據(jù)最近幾年的漏洞情況判斷, JVM安全沙箱對(duì)入侵來(lái)說(shuō)是并沒有太大的難度,可以假定一定會(huì)被突破。通過(guò)JVM提供的Navtive調(diào)用,它可以直接調(diào)用到Libc。Libc對(duì)入侵者來(lái)說(shuō),主要目的是要拿到當(dāng)前進(jìn)程的權(quán)限。最后一層是Linux Kernel,我們?cè)谠朴?jì)算平臺(tái)上來(lái)說(shuō),跑用戶代碼的進(jìn)程不會(huì)是root,大家想像一下也知道,root不會(huì)給最終用戶區(qū)跑這個(gè)代碼的。當(dāng)入侵者真的通過(guò)前基層的安全防護(hù)機(jī)制,并成功攻破root權(quán)限,那么這臺(tái)機(jī)器已經(jīng)被他控制在手里了。我們可以想像一下,在云計(jì)算這樣一個(gè)集群里面,我們通常來(lái)說(shuō)會(huì)跑成千上萬(wàn)的實(shí)例,如果我們把這個(gè)實(shí)例數(shù)放到最大,這樣的代碼被執(zhí)行完之后,是不是整個(gè)集群所有機(jī)器的權(quán)限都可以拿到了。這是非??膳碌氖虑?。就算我們?cè)谀骋环矫婵梢钥刂朴脩籼峤粩?shù)量,云計(jì)算平臺(tái)上通常會(huì)使用相同一臺(tái)機(jī)器同時(shí)處理多個(gè)用戶,如果有一臺(tái)機(jī)器被用戶集權(quán)到root,上面的所有數(shù)據(jù)和密鑰,對(duì)于入侵者來(lái)說(shuō)都是可見的了。
接下來(lái)我們看一下,業(yè)內(nèi)有一些做得比較好的安全產(chǎn)品,在安全方面沙箱方面如何解決的用戶隔離問題。

首先我們看一下Docker目前使用哪些機(jī)制,這張圖主要是使用了三個(gè)緯度,有兩個(gè)緯度產(chǎn)生了LXC,使用了Namespaces,Namespaces它可以在多個(gè)方面實(shí)現(xiàn)一定的隔離能力。這個(gè)能力需要在2.6.x以后才能部分開始使用。Cgroups機(jī)制保證操作系統(tǒng)資源的合理管理。另外,Docker啟用了AUSF的分層文件系統(tǒng)。傳統(tǒng)文件系統(tǒng),我們可以認(rèn)為是縱向的文件系統(tǒng),你寫哪個(gè)文件,這個(gè)文件一直到硬件,而AUSF是可以進(jìn)行疊加的。一層層的文件夾疊加,會(huì)映射成一個(gè)相同的文件夾。Docker里面,最下面的image用來(lái)做系統(tǒng)環(huán)境,中間會(huì)做APP,最上面是用戶運(yùn)行期的東西,這些東西會(huì)被Docker封裝成一層層,實(shí)現(xiàn)了類似于集裝箱式的部署能力。

對(duì)于Docker來(lái)說(shuō),對(duì)一個(gè)攻擊者來(lái)說(shuō),眼中看到的Docker應(yīng)用有哪些東西?從剛才的圖上也是類似的,整個(gè)系統(tǒng)有一個(gè)Docker container,右邊是DockerEngine。如果你在Docker上直接部署C進(jìn)程,下面兩層就是C的程序。對(duì)于惡意用戶來(lái)說(shuō),如果想得到所在機(jī)器的root權(quán)限,要突破你在Iibc上做的措施,還需要突破kernel中seccomp-bpf,這是kernel提供的一個(gè)安全機(jī)制,允許你定義某一個(gè)進(jìn)程所能進(jìn)行的系統(tǒng)過(guò)濾。第

第三層攻破,seccomp-bpf可以進(jìn)行額外的安全判斷。你如果把這個(gè)也突破了,其實(shí)這臺(tái)機(jī)器也直接root掉了。
 
接下來(lái)我們看google chrome的沙箱。Chrome使用過(guò)SUID/Namespaces sandbox,這也是對(duì)linx container機(jī)制的利用。使用過(guò)seccomp-legacy。在沒有seccomp-bpf之前google使用seccomp-legacy。seccomp-legacy使用限制非常大。也同樣使用過(guò)seccomp-bpf。
我們剛才看了兩個(gè)業(yè)內(nèi)的安全產(chǎn)品,可以簡(jiǎn)單的總結(jié)一下,對(duì)于沙箱來(lái)說(shuō),我們有哪些安全機(jī)制可以使用?參考這張圖,首先對(duì)于JVM來(lái)說(shuō),我們可以用Java security Manager 以及 Classloader機(jī)制。如果是Linux Kernel,那么我們還可以直接利用Kernel Namespaces,Cgroup ,Chroot、umount。這些東西在LXC已經(jīng)封裝好了可以用,而且通常它們?cè)谝黄鹗褂貌趴梢援a(chǎn)生比較好的效果。然后是aufs,2.6才開始支持。Seccomp-bpf是3.5,如果版本不夠你就要使用其他方案來(lái)做內(nèi)核層的一些過(guò)濾了。
另外一個(gè)角度,對(duì)云計(jì)算上的安全沙箱來(lái)說(shuō)有哪些層次可以做防御?JVM內(nèi)的防御是否有必要?Java的安全沙箱攻破的難度不是很大,它是不是不要了?剛才我們說(shuō)了,安全沙箱沒有絕對(duì)安全的設(shè)計(jì),如何在安全上做到盡可能可靠的防護(hù)?多層防御可以有效提高安全防護(hù)能力。
第二是進(jìn)層隔離,用于提供安全機(jī)制。
第三層要在kernel space里面要有安全過(guò)慮。
 
前面做完了,基于現(xiàn)有的安全機(jī)制來(lái)說(shuō),至少可以認(rèn)為在目前,可以直接使用的防護(hù)措施就這些了。
剛才我們看到了一些安全機(jī)制,接下來(lái)看看飛天安全在沙箱方面使用哪些機(jī)制?其實(shí)前面我們說(shuō)的這些,該用的都用到了。
 

飛天安全沙箱,是這樣的一個(gè)系統(tǒng)。簡(jiǎn)單來(lái)看,這張圖和我們之前的兩張圖有相似的地方。最終的方案,我們方案融合了前兩個(gè)的優(yōu)點(diǎn)。我們這一層的User code可以放到C語(yǔ)言下進(jìn)行,Iibc可以有一些攔截。這個(gè)地方是基于IPC的,所以你在當(dāng)前進(jìn)程要做的破壞或者說(shuō)做的事情,是無(wú)法影響到另一個(gè)進(jìn)程的。最后是Linux container,我們有一層內(nèi)核過(guò)濾機(jī)制來(lái)保證。
我們今天的分享還是比較聚焦的,就是講沙箱和安全機(jī)制。我們看了一些業(yè)內(nèi)主要的安全產(chǎn)品實(shí)現(xiàn),以及它使用的安全機(jī)制。最后針對(duì)一個(gè)具體的案例-飛天安全沙箱,我們了解了該如何實(shí)現(xiàn)融合多種安全機(jī)制來(lái)實(shí)現(xiàn)與著名安全產(chǎn)品相同等級(jí)防護(hù)能力的安全沙箱。

標(biāo)簽:仙桃 崇左 湖南 衡水 蘭州 黃山 銅川 湘潭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《阿里云飛天分布式系統(tǒng)使用沙箱機(jī)制的經(jīng)驗(yàn)總結(jié)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    方城县| 阜新市| 塘沽区| 长宁区| 清远市| 天等县| 中江县| 正阳县| 安阳市| 临颍县| 曲水县| 纳雍县| 根河市| 饶河县| 上饶县| 永年县| 澄江县| 从化市| 科技| 金塔县| 临沧市| 凌源市| 芜湖县| 江达县| 建昌县| 玛纳斯县| 临江市| 阳西县| 米林县| 仁寿县| 武定县| 临潭县| 乌苏市| 鄂托克旗| 惠安县| 朝阳区| 榕江县| 石阡县| 富锦市| 昌都县| 政和县|