RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何保證它們?nèi)萜鬟\(yùn)行時(shí)的安全?

無線深海 ? 來源:無線深海 ? 2023-11-03 15:24 ? 次閱讀

容器徹底改變了我們開發(fā)和部署應(yīng)用程序的方式,提供了封裝應(yīng)用程序及其依賴項(xiàng)的輕量級(jí)和可移植環(huán)境。但我們?nèi)绾伪WC它們的安全呢?

需要解決的關(guān)鍵之一是容器運(yùn)行時(shí) - 負(fù)責(zé)啟動(dòng)和管理容器的軟件。

雖然Docker和Containerd等容器運(yùn)行時(shí)被廣泛使用,但它們與主機(jī)操作系統(tǒng)的緊密耦合可能會(huì)帶來風(fēng)險(xiǎn)。

在本文中,我們將深入探討容器運(yùn)行時(shí)的工作原理、為什么緊密耦合的運(yùn)行時(shí)會(huì)在攻擊者逃離容器時(shí)導(dǎo)致主機(jī)接管,以及使用gVisor和Kata Containers等安全容器運(yùn)行時(shí)的重要性。

了解容器運(yùn)行時(shí)

容器運(yùn)行時(shí)編排容器、管理其生命周期并將其與主機(jī)和其他容器隔離。通過利用命名空間和cgroup等Linux內(nèi)核功能,運(yùn)行時(shí)圍繞容器創(chuàng)建安全邊界。

然而,傳統(tǒng)的運(yùn)行時(shí)與主機(jī)的內(nèi)核緊密相關(guān),這存在潛在的安全漏洞。如果攻擊者設(shè)法逃離容器,該攻擊者就可獲取對(duì)底層主機(jī)操作系統(tǒng)的未經(jīng)授權(quán)的訪問,從而危及整個(gè)系統(tǒng)的安全。

緊密耦合的容器運(yùn)行時(shí)繼承了主機(jī)操作系統(tǒng)的安全態(tài)勢(shì)和攻擊面。運(yùn)行時(shí)或主機(jī)內(nèi)核中的任何漏洞及其利用都會(huì)成為攻擊者的潛在切入點(diǎn)。

在多租戶環(huán)境或運(yùn)行不受信任的工作負(fù)載時(shí),這種風(fēng)險(xiǎn)尤其嚴(yán)重。為了減輕這種威脅,使用安全的容器運(yùn)行時(shí)(例如gVisor和Kata Containers)至關(guān)重要。

這類安全容器運(yùn)行時(shí)提供了額外的隔離和安全層,采用創(chuàng)新技術(shù)來增強(qiáng)容器化工作負(fù)載的安全性。例如,gVisor使用用戶空間內(nèi)核實(shí)現(xiàn),而Kata Containers則通過輕量級(jí)虛擬機(jī)實(shí)現(xiàn)。這些安全運(yùn)行時(shí)將容器與主機(jī)操作系統(tǒng)隔離,防止攻擊者未經(jīng)授權(quán)訪問底層基礎(chǔ)設(shè)施,并降低主機(jī)接管的風(fēng)險(xiǎn)。

當(dāng)下主流的一些容器運(yùn)行時(shí)介紹

容器運(yùn)行時(shí)提供了創(chuàng)建、部署和執(zhí)行容器運(yùn)行所需的工具和庫。這些容器運(yùn)行時(shí)處理諸如創(chuàng)建和管理容器映像、容器的啟動(dòng)和停止、資源隔離、網(wǎng)絡(luò)和安全性等任務(wù)。它們構(gòu)成了容器化技術(shù)的基礎(chǔ),對(duì)于跨不同計(jì)算環(huán)境一致運(yùn)行應(yīng)用程序至關(guān)重要。以下是一些最流行的容器運(yùn)行時(shí)。

Docker

Docker是一種廣泛使用的容器運(yùn)行時(shí),可為構(gòu)建、打包和運(yùn)行容器提供完整的生態(tài)系統(tǒng)。它包括管理容器生命周期的Docker引擎和提供與容器交互的命令行界面的Docker CLI。

在底層,Docker使用runC作為默認(rèn)的底層容器運(yùn)行時(shí)。runC基于開放容器計(jì)劃(OCI)運(yùn)行時(shí)規(guī)范生成和管理容器。

Containerd

Containerd是由Docker開發(fā)的開源容器運(yùn)行時(shí),側(cè)重于提供穩(wěn)定、高性能和可移植的強(qiáng)大運(yùn)行時(shí)。Ccontainerd旨在作為容器編排系統(tǒng)的核心組件,可以與Kubernetes等更上層的編排平臺(tái)集成。

與Docker類似,Containerd使用runC作為默認(rèn)的底層容器運(yùn)行時(shí)來創(chuàng)建和管理容器。

runC

runC由OCI開發(fā),是一個(gè)符合OCI運(yùn)行時(shí)規(guī)范的輕量級(jí)底層運(yùn)行時(shí),通過在隔離的沙箱中啟動(dòng)容器來提供基本的容器執(zhí)行環(huán)境。Docker和Containerd都利用runC的功能來處理容器生命周期管理、進(jìn)程隔離、文件系統(tǒng)掛載和其他底層容器操作。

CRI-O

CRI-O是專為Kubernetes設(shè)計(jì)的輕量級(jí)容器運(yùn)行時(shí)。它實(shí)現(xiàn)了Kubernetes容器運(yùn)行時(shí)接口(CRI),并為Kubernetes與容器交互提供了接口。CRI-O在底層使用runc和Containerd等技術(shù)。

安全容器運(yùn)行時(shí):gVisorKata Containers

gVisor是Google開發(fā)的開源容器運(yùn)行時(shí),使用輕量級(jí)用戶空間內(nèi)核“Sandbox”為容器提供安全的執(zhí)行環(huán)境。

gVisor不是直接在主機(jī)內(nèi)核上運(yùn)行容器,而是在隔離的沙箱中運(yùn)行容器,增加了額外的安全和隔離層。沙箱攔截來自容器的系統(tǒng)調(diào)用,并應(yīng)用自身的類內(nèi)核實(shí)現(xiàn),提供針對(duì)內(nèi)核級(jí)漏洞的防御機(jī)制。

Kata Containers開源項(xiàng)目將輕量級(jí)虛擬機(jī)(VM)與容器運(yùn)行時(shí)相結(jié)合,采用硬件虛擬化技術(shù)為每個(gè)容器進(jìn)程啟動(dòng)單獨(dú)的VM,提供容器之間的強(qiáng)隔離。

每個(gè)虛擬機(jī)都運(yùn)行一個(gè)極簡(jiǎn)的輕量級(jí)客戶操作系統(tǒng),例如精簡(jiǎn)版Linux內(nèi)核。Kata Containers旨在保證容器的性能優(yōu)勢(shì),同時(shí)提升虛擬機(jī)的安全性和工作負(fù)載隔離。

gVisor和Kata Containers都解決了與傳統(tǒng)容器運(yùn)行時(shí)相關(guān)的某些安全問題,有助于降低容器逃逸攻擊的風(fēng)險(xiǎn),在某些情形下,攻擊者可利用容器運(yùn)行時(shí)或內(nèi)核中的漏洞獲得對(duì)主機(jī)系統(tǒng)的未經(jīng)授權(quán)的訪問。通過添加額外的隔離和安全控制層,這些運(yùn)行時(shí)強(qiáng)化了對(duì)容器化工作負(fù)載提供的保護(hù)。

gVisor和Kata Containers并不相互排斥;事實(shí)上,它們可以一起使用,Kata Containers可使用gVisor作為其運(yùn)行時(shí),這種組合通過將虛擬機(jī)層面的隔離優(yōu)勢(shì)與gVisor所提供的額外安全措施相結(jié)合,進(jìn)一步增強(qiáng)了安全性和隔離性。

這些安全容器運(yùn)行時(shí)在運(yùn)行不受信任或潛在易受攻擊的工作負(fù)載的情況下特別有用,例如在多租戶環(huán)境中或處理不受信任的第三方代碼時(shí)。

在安全運(yùn)行時(shí)中運(yùn)行容器

使用gVisor和Kata Containers等安全運(yùn)行時(shí)可以顯著增強(qiáng)對(duì)主機(jī)系統(tǒng)的保護(hù)。主要安全優(yōu)勢(shì)如下:

增強(qiáng)隔離:gVisor和Kata Containers在容器和主機(jī)系統(tǒng)之間提供了額外的隔離層。這種隔離有助于防止容器逃逸攻擊并限制容器內(nèi)安全漏洞的影響。

內(nèi)核級(jí)保護(hù):gVisor和Kata Containers都可以防御內(nèi)核級(jí)漏洞。gVisor自身已實(shí)現(xiàn)類內(nèi)核接口,可攔截來自容器的系統(tǒng)調(diào)用并執(zhí)行安全策略。Kata Containers采用硬件虛擬化技術(shù)可在具有內(nèi)核實(shí)例的獨(dú)立虛擬機(jī)中運(yùn)行容器,將這些獨(dú)立虛擬機(jī)與主機(jī)內(nèi)核隔離。

縱深防御:通過將這些運(yùn)行時(shí)的安全機(jī)制與其他最佳安全實(shí)踐(例如強(qiáng)大的訪問控制、網(wǎng)絡(luò)分段和圖像掃描等)相結(jié)合,可提升容器部署的安全性。

兼容性和互操作性:gVisor和Kata Containers都可與Kubernetes等容器編排平臺(tái)配合使用,用戶借助這些技術(shù)的安全優(yōu)勢(shì),無需對(duì)現(xiàn)有容器化應(yīng)用程序或部署流程進(jìn)行重大更改。

請(qǐng)注意,雖然gVisor和Kata Constianers提升了安全性,但由于額外的隔離層,它們可能會(huì)帶來一些性能開銷。因此,實(shí)際部署時(shí)仍需要對(duì)特定用例和性能要求進(jìn)行評(píng)估,以確定所提供的安全優(yōu)勢(shì)是否超過任何潛在的性能影響。

在安全容器運(yùn)行時(shí)中運(yùn)行微服務(wù)

微服務(wù)架構(gòu)通常涉及在同一基礎(chǔ)設(shè)施上運(yùn)行的多個(gè)獨(dú)立服務(wù)。通過在安全容器運(yùn)行時(shí)中運(yùn)行每個(gè)微服務(wù),可以確保它們彼此隔離。

這有助于防止容器逃逸、權(quán)限升級(jí)和內(nèi)核級(jí)漏洞。一旦發(fā)生安全漏洞或故障,安全容器運(yùn)行時(shí)還可幫助限制安全危機(jī)的擴(kuò)散,防止事態(tài)進(jìn)一步升級(jí)。

用戶還可通過容器運(yùn)行時(shí)為每個(gè)微服務(wù)分配特定的資源(例如CPU、內(nèi)存和存儲(chǔ)),確保資源的公平分配。這可以防止資源爭(zhēng)用問題,否則惡意行為者可能會(huì)利用資源爭(zhēng)用問題來降低其他微服務(wù)的性能或穩(wěn)定性。

要在安全容器運(yùn)行時(shí)中運(yùn)行微服務(wù),需要執(zhí)行以下步驟:

擇安全容器運(yùn)行時(shí) 評(píng)估不同的安全容器運(yùn)行時(shí)(例如gVisor和Kata Containers),并選擇最能滿足需求的一種??紤]安全功能、性能影響、與現(xiàn)有基礎(chǔ)設(shè)施的兼容性以及社區(qū)支持等因素。

安全構(gòu)建容器鏡像 使用受信任的基礎(chǔ)鏡像,定期更新依賴項(xiàng)并掃描鏡像是否存在漏洞。實(shí)施安全的鏡像注冊(cè)并強(qiáng)制執(zhí)行鏡像簽名以驗(yàn)證鏡像的真實(shí)性。

安全配置 以適當(dāng)?shù)陌踩O(shè)置配置容器運(yùn)行時(shí),可能包括啟用隔離功能、應(yīng)用資源限制、設(shè)置容器網(wǎng)絡(luò)策略和控制對(duì)主機(jī)系統(tǒng)資源的訪問等。遵循容器運(yùn)行時(shí)文檔提供的安全準(zhǔn)則。

實(shí)施嚴(yán)格的訪問控制 為容器化微服務(wù)實(shí)施強(qiáng)大的訪問控制。這包括限制容器權(quán)限、對(duì)容器編排平臺(tái)采用基于角色的訪問控制(RBAC)以及保護(hù)容器運(yùn)行時(shí)API。

持續(xù)監(jiān)控和記錄 實(shí)施監(jiān)控和日志記錄解決方案來跟蹤容器化微服務(wù)的行為。監(jiān)控可疑活動(dòng)、異常行為和潛在的安全事件。集中式日志記錄和分析有助于高效地檢測(cè)和響應(yīng)安全事件。

定期更新和打補(bǔ)丁 通過應(yīng)用安全補(bǔ)丁和更新來使容器運(yùn)行時(shí)保持最新,確保擁有最新的安全改進(jìn)和錯(cuò)誤修復(fù)。

運(yùn)行安全測(cè)試 對(duì)容器化微服務(wù)定期進(jìn)行安全評(píng)估和滲透測(cè)試,這有助于識(shí)別容器運(yùn)行時(shí)配置和應(yīng)用程序代碼中的漏洞和潛在弱點(diǎn)。

編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6801

    瀏覽量

    123283
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    495

    瀏覽量

    22060
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    914

    瀏覽量

    28160
  • 主機(jī)系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    6918

原文標(biāo)題:容器安全和安全運(yùn)行時(shí)的重要性(一)

文章出處:【微信號(hào):wuxian_shenhai,微信公眾號(hào):無線深?!繗g迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何縮短Vivado的運(yùn)行時(shí)

    在Vivado Implementation階段,有時(shí)是有必要分析一下什么原因?qū)е?b class='flag-5'>運(yùn)行時(shí)間(runtime)過長(zhǎng),從而找到一些方法來縮短運(yùn)行時(shí)間。
    的頭像 發(fā)表于 05-29 14:37 ?1.4w次閱讀
    如何縮短Vivado的<b class='flag-5'>運(yùn)行時(shí)</b>間

    各種容器運(yùn)行的作用是什么

    容器技術(shù)中,容器運(yùn)行時(shí)可以分為三種類型:低級(jí)運(yùn)行時(shí)、高級(jí)運(yùn)行時(shí)以及沙盒或虛擬化運(yùn)行時(shí)
    發(fā)表于 09-20 11:42 ?849次閱讀
    各種<b class='flag-5'>容器</b><b class='flag-5'>運(yùn)行</b>的作用是什么

    ATC'22頂會(huì)論文RunD:高密高并發(fā)的輕量級(jí) Serverless 安全容器運(yùn)行時(shí) | 龍蜥技術(shù)

    輕量級(jí)安全容器運(yùn)行時(shí),提出了 host-to-guest 的全棧優(yōu)化方案來解決上述問題。本文整理自[龍蜥大講堂第 38 期],精彩分享視頻回放已上傳至龍蜥官網(wǎng)(首頁-動(dòng)態(tài)-視頻),歡迎查看!摘要
    發(fā)表于 09-05 15:18

    鍋爐低負(fù)荷運(yùn)行時(shí)注意事項(xiàng)

    鍋爐低負(fù)荷運(yùn)行時(shí)注意事項(xiàng) 為了滿足機(jī)組調(diào)峰,運(yùn)行工況變動(dòng)的需要,保證鍋爐安全、經(jīng)濟(jì)運(yùn)行,特制訂本措施。1、當(dāng)鍋爐在低負(fù)
    發(fā)表于 11-13 18:22 ?2796次閱讀

    紫金橋組態(tài)軟件新的功能_運(yùn)行時(shí)組態(tài)

    運(yùn)行時(shí)組態(tài)是組態(tài)軟件新近提出的新的概念。運(yùn)行時(shí)組態(tài)是在運(yùn)行環(huán)境下對(duì)已有工程進(jìn)行修改,添加新的功能。它不同于在線組態(tài),在線組態(tài)是在工程運(yùn)行的同時(shí),進(jìn)入組態(tài)環(huán)境,在組態(tài)環(huán)境中對(duì)工程進(jìn)行修改
    發(fā)表于 10-13 16:17 ?2次下載
    紫金橋組態(tài)軟件新的功能_<b class='flag-5'>運(yùn)行時(shí)</b>組態(tài)

    k8s容器運(yùn)行時(shí)演進(jìn)歷史

    運(yùn)行時(shí)接口(Container Runtime Interface),這一步中,Kubelet 可以視作一個(gè)簡(jiǎn)單的 CRI Client,而 dockershim 就是接收請(qǐng)求的 Server。目前 dockershim 的代碼其實(shí)是內(nèi)嵌在 Kubele
    的頭像 發(fā)表于 02-02 13:50 ?1919次閱讀
    k8s<b class='flag-5'>容器</b><b class='flag-5'>運(yùn)行時(shí)</b>演進(jìn)歷史

    Go運(yùn)行時(shí):4年之后

    自 2018 年以來,Go GC,以及更廣泛的 Go 運(yùn)行時(shí),一直在穩(wěn)步改進(jìn)。近日,Go 社區(qū)總結(jié)了 4 年來 Go 運(yùn)行時(shí)的一些重要變化。
    的頭像 發(fā)表于 11-30 16:21 ?825次閱讀

    什么是Kubernetes容器運(yùn)行時(shí)CRI

    起初,Docker是事實(shí)上的容器技術(shù)標(biāo)準(zhǔn),Kubernetes v1.5之前的代碼中直接調(diào)用Docker API,實(shí)現(xiàn)容器運(yùn)行時(shí)的相關(guān)操作。
    的頭像 發(fā)表于 02-20 16:22 ?1502次閱讀
    什么是Kubernetes<b class='flag-5'>容器</b><b class='flag-5'>運(yùn)行時(shí)</b>CRI

    正常運(yùn)行時(shí)間保護(hù)底線

    本教程探討了增加正常運(yùn)行時(shí)間的各種注意事項(xiàng)以及它們如何影響底線。這些包括工業(yè)設(shè)施的維護(hù)方法,例如工廠、商業(yè)設(shè)施、發(fā)電廠或其他安裝,在這些設(shè)施中,適當(dāng)?shù)木S護(hù)方法可以防止災(zāi)難性故障。但是,保持底線需要更多。還必須考慮可靠性、安全性、
    的頭像 發(fā)表于 04-06 11:10 ?1027次閱讀
    正常<b class='flag-5'>運(yùn)行時(shí)</b>間保護(hù)底線

    怎樣避免電力電容器運(yùn)行時(shí)漏油

    電力電容器運(yùn)行中,會(huì)因?yàn)楦鞣N因素出現(xiàn)故障。在電力電容器運(yùn)行時(shí)遇到的故障中,出現(xiàn)滲油和漏油的概率非常大。那么如何避免電力電容器
    的頭像 發(fā)表于 04-07 16:01 ?892次閱讀

    iSulad+Kuasar:管理面資源消耗銳減99%的新一代統(tǒng)一容器運(yùn)行時(shí)解決方案

    容器引擎(Container Engine)主要負(fù)責(zé)容器運(yùn)行環(huán)境的創(chuàng)建、容器資源的配置和容器生命周期的管理,北向接收來自于 Kubernet
    的頭像 發(fā)表于 04-27 15:00 ?1108次閱讀
    iSulad+Kuasar:管理面資源消耗銳減99%的新一代統(tǒng)一<b class='flag-5'>容器</b><b class='flag-5'>運(yùn)行時(shí)</b>解決方案

    如何在AUTOSAR OS系統(tǒng)運(yùn)行時(shí)使用事件Event呢?

    在AUTOSAR OS系統(tǒng)中,事件用于向任務(wù)發(fā)送信號(hào)信息。本節(jié)解釋事件是什么,如何配置它們以及如何在運(yùn)行時(shí)使用它們
    發(fā)表于 05-22 10:04 ?2721次閱讀
    如何在AUTOSAR OS系統(tǒng)<b class='flag-5'>運(yùn)行時(shí)</b>使用事件Event呢?

    ch32v307記錄程序運(yùn)行時(shí)

    ch32v307記錄程序運(yùn)行時(shí)間 在程序開發(fā)中,很重要的一項(xiàng)任務(wù)就是對(duì)程序的運(yùn)行時(shí)間進(jìn)行評(píng)估。對(duì)于大型的程序系統(tǒng)來說,它們通常需要處理大量的數(shù)據(jù)或進(jìn)行復(fù)雜的計(jì)算操作。因此,如果程序的運(yùn)行時(shí)
    的頭像 發(fā)表于 08-22 15:53 ?901次閱讀

    Xilinx運(yùn)行時(shí)(XRT)發(fā)行說明

    電子發(fā)燒友網(wǎng)站提供《Xilinx運(yùn)行時(shí)(XRT)發(fā)行說明.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 10:01 ?0次下載
    Xilinx<b class='flag-5'>運(yùn)行時(shí)</b>(XRT)發(fā)行說明

    jvm運(yùn)行時(shí)內(nèi)存區(qū)域劃分

    JVM是Java Virtual Machine(Java虛擬機(jī))的縮寫,它是Java編程語言的運(yùn)行環(huán)境。JVM的主要功能是將Java源代碼轉(zhuǎn)換為機(jī)器代碼,并且在運(yùn)行時(shí)管理Java程序的內(nèi)存。JVM
    的頭像 發(fā)表于 12-05 14:08 ?528次閱讀
    RM新时代网站-首页