您好,登錄后才能下訂單哦!
這篇“如何加強(qiáng)Linux容器安全”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“如何加強(qiáng)Linux容器安全”文章吧。
容器安全解決方案需要考慮不同技術(shù)棧和容器生命周期的不同階段。
1.容器操作系統(tǒng)與多租戶
2.容器內(nèi)容(使用可信源)
3.容器注冊(cè) (容器鏡像加密訪問(wèn))
4.構(gòu)建過(guò)程安全
5.控制集群中可部署的內(nèi)容
6.容器編排:加強(qiáng)容器平臺(tái)安全
7.網(wǎng)絡(luò)隔離
8.存儲(chǔ)
9.API 管理, 終端安全和單點(diǎn)登錄 (SSO)
10.角色和訪問(wèn)控制管理
容器提供了一種簡(jiǎn)單的應(yīng)用程序打包方法將它們無(wú)縫地從開(kāi)發(fā)、測(cè)試環(huán)境部署到生產(chǎn)環(huán)境。它有助于確保各種環(huán)境中的一致性,包括物理服務(wù)器、虛擬機(jī)(VM)或私有或公共云。領(lǐng)先的組織基于這些好處迅速采用容器,以便輕松地開(kāi)發(fā)和管理增加業(yè)務(wù)價(jià)值的應(yīng)用程序。
企業(yè)應(yīng)用需要強(qiáng)壯的安全性,任何在容器中運(yùn)行基礎(chǔ)服務(wù)的人都會(huì)問(wèn):“容器是安全的嗎?”、“可以讓我們的應(yīng)用程序信任容器嗎?”
保護(hù)容器非常類(lèi)似于確保任何正在運(yùn)行的進(jìn)程。在部署和運(yùn)行容器之前,您需要考慮整個(gè)解決方案技術(shù)棧的安全性。您還需要考慮在應(yīng)用程序和容器的完整生命周期的安全性。
請(qǐng)嘗試在這 10 個(gè)方面加強(qiáng)容器的不同層次、不同技術(shù)棧和不同生命周期階段的安全性。
對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),容器使得他們更容易地構(gòu)建和升級(jí)應(yīng)用程序,它可以作為一個(gè)應(yīng)用單元的被依賴,通過(guò)在共享主機(jī)上部署啟用多租戶應(yīng)用程序來(lái)最大限度地利用服務(wù)器資源。容器很容易在單個(gè)主機(jī)上部署多應(yīng)用程序,并根據(jù)需要開(kāi)啟和關(guān)閉單個(gè)容器。為了充分利用這種打包和部署技術(shù),運(yùn)維團(tuán)隊(duì)需要正確的運(yùn)行容器環(huán)境。運(yùn)維人員需要一個(gè)操作系統(tǒng),該系統(tǒng)可以在邊界處保護(hù)容器,使主機(jī)內(nèi)核與容器隔離并確保容器彼此之間安全。
容器是隔離和約束資源的 Linux 進(jìn)程,使您能夠在共享宿主內(nèi)核中運(yùn)行沙盒應(yīng)用程序。您保護(hù)容器的方法應(yīng)該與確保 Linux 上任何正在運(yùn)行的進(jìn)程的安全方法相同。放棄特權(quán)是重要的,目前仍然是最佳實(shí)踐。更好的方法是創(chuàng)建盡可能少的特權(quán)容器。容器應(yīng)該作為普通用戶運(yùn)行,而不是 root 用戶。接下來(lái),利用 Linux 中可用的多種級(jí)別的安全特性確保容器的安全: Linux 命名空間,安全增強(qiáng)的Linux(SELinux), cgroups,capabilities 和安全計(jì)算模式(seccomp)。
當(dāng)說(shuō)到安全性的時(shí)候,對(duì)于容器內(nèi)容來(lái)說(shuō)意味著什么呢?。一段時(shí)間以來(lái),應(yīng)用程序和基礎(chǔ)設(shè)施都是由現(xiàn)成的組件組成的。很多都來(lái)自于開(kāi)源軟件,例如如 Linux 操作系統(tǒng),Apache Web 服務(wù)器,紅帽 JBoss 企業(yè)應(yīng)用平臺(tái),PostgreSQL 和 Node.js。基于容器的各種軟件包版本現(xiàn)在一應(yīng)俱全,所以你不需要建立自己。但是,與從外部源下載的任何代碼一樣,您需要知道包的起源、它們是由誰(shuí)創(chuàng)建,以及它們內(nèi)部是否存在惡意代碼。
你的團(tuán)隊(duì)構(gòu)建容器的時(shí)候基于下載的公共容器鏡像, 所以對(duì)它的訪問(wèn)管理和更新下載是管理的關(guān)鍵,需以同樣的方式管理容器鏡像、內(nèi)建的鏡像及其他類(lèi)型的二進(jìn)制文件。許多私有倉(cāng)庫(kù)注冊(cè)服務(wù)器支持存儲(chǔ)容器鏡像。選擇一個(gè)私有的、存儲(chǔ)使用的容器鏡像自動(dòng)化策略的注冊(cè)服務(wù)器。
在一個(gè)容器化的環(huán)境里,軟件的構(gòu)建是整個(gè)生命周期的一個(gè)階段,應(yīng)用程序代碼需要與運(yùn)行庫(kù)集成。管理此構(gòu)建過(guò)程是確保軟件棧安全的關(guān)鍵。堅(jiān)持“一次構(gòu)建,到處部署(build once, deploy everywhere)”的理念,確保構(gòu)建過(guò)程的產(chǎn)品正是生產(chǎn)中部署的產(chǎn)品。這一點(diǎn)對(duì)于維護(hù)容器持續(xù)穩(wěn)定也非常重要,換句話說(shuō),不要為運(yùn)行的容器打補(bǔ)??;而是應(yīng)該重新構(gòu)建、重新部署它們。 無(wú)論您是在高度規(guī)范的行業(yè)中工作,還是僅僅想優(yōu)化團(tuán)隊(duì)的工作,需要設(shè)計(jì)容器鏡像的管理和構(gòu)建過(guò)程,以利用容器層實(shí)現(xiàn)控制分離,從而使:
運(yùn)維團(tuán)隊(duì)管理基礎(chǔ)鏡像
架構(gòu)團(tuán)隊(duì)管理中間件、運(yùn)行時(shí)、數(shù)據(jù)庫(kù)和其它解決方案
開(kāi)發(fā)團(tuán)隊(duì)僅僅專注于應(yīng)用層和代碼
最后,對(duì)定制的容器簽名,這樣可以確保它們?cè)跇?gòu)建和部署環(huán)節(jié)之間不會(huì)被篡改。
為了防備在構(gòu)建過(guò)程中發(fā)生任何問(wèn)題,或者在部署一個(gè)鏡像后發(fā)現(xiàn)漏洞,需要增加以自動(dòng)化的、基于策略的部署的另一層安全性。
讓我們看一下構(gòu)建應(yīng)用程序的三個(gè)容器鏡像層:核心層(core)、中間件層(middleware)和應(yīng)用層(application)。一個(gè)問(wèn)題如果在核心鏡像被發(fā)現(xiàn),鏡像會(huì)重新構(gòu)建。一旦構(gòu)建完成,鏡像將被推入容器平臺(tái)注冊(cè)服務(wù)器。平臺(tái)可以檢測(cè)到鏡像發(fā)生了變化。對(duì)于依賴于此鏡像并有定義觸發(fā)器的構(gòu)建,該平臺(tái)將自動(dòng)重建應(yīng)用程序并整合已經(jīng)修復(fù)的庫(kù)。
一旦構(gòu)建完成,鏡像將被推入容器平臺(tái)的內(nèi)部注冊(cè)服務(wù)器。內(nèi)部注冊(cè)服務(wù)器中鏡像的變化能立即檢測(cè)到,通過(guò)應(yīng)用程序中定義的觸發(fā)器自動(dòng)部署更新鏡像,確保生產(chǎn)中運(yùn)行的代碼總是與最近更新的鏡像相同。所有這些功能協(xié)同工作,將安全功能集成到您的持續(xù)集成和持續(xù)部署(CI / CD)過(guò)程中。
當(dāng)然,應(yīng)用程序很少在單個(gè)容器中交付。即使是簡(jiǎn)單的應(yīng)用程序通常有一個(gè)前端,后端和數(shù)據(jù)庫(kù)。在容器中部署現(xiàn)代微服務(wù)應(yīng)用,通常意味著多容器部署,有時(shí)在同一主機(jī)上有時(shí)分布在多個(gè)主機(jī)或節(jié)點(diǎn),如圖所示。
當(dāng)規(guī)?;芾砣萜鞑渴饡r(shí),您需要考慮:
哪些容器應(yīng)該部署到哪個(gè)主機(jī)上?
哪個(gè)主機(jī)容量更大?
哪些容器需要相互訪問(wèn)?他們將如何相互發(fā)現(xiàn)?
如何控制對(duì)共享資源的訪問(wèn)和管理,比如網(wǎng)絡(luò)和存儲(chǔ)?
如何監(jiān)控容器健康狀態(tài)?
如何自動(dòng)擴(kuò)展應(yīng)用能力以滿足需求?
如何使開(kāi)發(fā)者在自助服務(wù)的同時(shí)滿足安全需求?
考慮到開(kāi)發(fā)人員和運(yùn)維人員擁有的廣泛能力,強(qiáng)大的基于角色的訪問(wèn)控制是容器平臺(tái)的關(guān)鍵元素。例如,編排管理服務(wù)器是訪問(wèn)的中心點(diǎn),應(yīng)該得到最高級(jí)別的安全檢查。API 是大規(guī)模自動(dòng)化容器管理的關(guān)鍵,用于驗(yàn)證和配置容器、服務(wù)和復(fù)制控制器的數(shù)據(jù);對(duì)傳入的請(qǐng)求執(zhí)行項(xiàng)目驗(yàn)證;并調(diào)用其他主要系統(tǒng)組件上的觸發(fā)器。
在容器部署現(xiàn)代微服務(wù)應(yīng)用程序往往意味著在多個(gè)節(jié)點(diǎn)分布式部署多個(gè)容器??紤]到網(wǎng)絡(luò)防御,您需要一種在集群中隔離應(yīng)用程序的方法。
一個(gè)典型的公共云服務(wù),例如Google Container Engine (GKE),Azure Container Services, 或者 Amazon Web Services (AWS) Container Service,都是單租戶服務(wù)。它們?cè)试S在您啟動(dòng)的 VM 集群上運(yùn)行容器。為了實(shí)現(xiàn)多租戶容器安全,您需要一個(gè)容器平臺(tái),允許您選擇單個(gè)集群并將流量分段,以隔離該集群中的不同用戶、團(tuán)隊(duì)、應(yīng)用程序和環(huán)境。
通過(guò)網(wǎng)絡(luò)命名空間,每個(gè)容器集合(稱為“POD”)獲得自己的IP和端口綁定范圍,從而在節(jié)點(diǎn)上隔離 POD 網(wǎng)絡(luò)。
默認(rèn)情況下,來(lái)自不同命名空間(項(xiàng)目)的 POD 不能將包發(fā)送到或接收來(lái)自不同項(xiàng)目的 POD 、服務(wù)的數(shù)據(jù)包,除了下文所述的選項(xiàng)。您可以使用這些特性來(lái)隔離集群中的開(kāi)發(fā)人員、測(cè)試和生產(chǎn)環(huán)境;然而,IP 地址和端口的這種擴(kuò)展使得網(wǎng)絡(luò)變得更加復(fù)雜??梢酝顿Y一些工具處理這種復(fù)雜性。首選的工具是采用軟件定義網(wǎng)絡(luò)(SDN)容器平臺(tái),它提供統(tǒng)一的集群網(wǎng)絡(luò),保證整個(gè)集群的容器之間的通信。
對(duì)于有狀態(tài)和無(wú)狀態(tài)的應(yīng)用程序來(lái)說(shuō),容器是非常有用的。 保護(hù)存儲(chǔ)是保證有狀態(tài)服務(wù)的關(guān)鍵要素。容器平臺(tái)應(yīng)提供多樣化的存儲(chǔ)插件,包括網(wǎng)絡(luò)文件系統(tǒng)(NFS),AWS Elastic Block Stores(EBS,彈性塊存儲(chǔ)),GCE Persistent 磁盤(pán),GlusterFS,iSCSI,RADOS(CEPH)、Cinder 等等。
一個(gè)持久卷(PV)可以安裝在由資源提供者支持的任何主機(jī)。供應(yīng)商將有不同的能力,每個(gè) PV 的訪問(wèn)模式可以設(shè)置為特定卷支持的特定模式。例如,NFS 可以支持多個(gè) 讀/寫(xiě)的客戶端,但一個(gè)特定的 NFS PV 可以在服務(wù)器上僅作為只讀輸出。每個(gè) PV 有它自己的一套訪問(wèn)模式,定義特定 PV 的性能指標(biāo),例如ReadWriteOnce, ReadOnlyMany, 和 ReadWriteMany。
保護(hù)應(yīng)用程序安全包括管理應(yīng)用程序和 API 身份驗(yàn)證和授權(quán)。 Web SSO 功能是現(xiàn)代應(yīng)用程序的關(guān)鍵部分。當(dāng)開(kāi)發(fā)者構(gòu)建他們自己的應(yīng)用時(shí),容器平臺(tái)可以提供各種容器服務(wù)給他們使用。
API 是微服務(wù)應(yīng)用的關(guān)鍵組成部分。微服務(wù)應(yīng)用具有多個(gè)獨(dú)立的 API 服務(wù),這導(dǎo)致服務(wù)端點(diǎn)的擴(kuò)張,因此需要更多的治理工具。推薦使用 API 管理工具。所有 API 平臺(tái)都應(yīng)該提供各種 API 認(rèn)證和安全的標(biāo)準(zhǔn)選項(xiàng),它們可以單獨(dú)使用或組合使用,發(fā)布證書(shū)和控制訪問(wèn)。這些選項(xiàng)包括標(biāo)準(zhǔn)的 API 密鑰、應(yīng)用ID、密鑰對(duì)和 OAuth 2.0。
2016年7月,Kubernetes 1.3 介紹了 Kubernetes Federated Cluster。這是一個(gè)令人興奮的新功能,目前在 Kubernetes 1.6 beta 。
在公共云或企業(yè)數(shù)據(jù)中心場(chǎng)景中,F(xiàn)ederation 對(duì)于跨集群部署和訪問(wèn)應(yīng)用服務(wù)是很有用的。多集群使得應(yīng)用程序的高可用性成為可能,例如多個(gè)區(qū)域、多個(gè)云提供商(如AWS、Google Cloud 和 Azure)實(shí)現(xiàn)部署或遷移的通用管理。
在管理集群聯(lián)邦時(shí),必須確保編排工具在不同的部署平臺(tái)實(shí)例中提供所需的安全性。與以往一樣,身份驗(yàn)證和授權(quán)是安全的關(guān)鍵 —— 能夠安全地將數(shù)據(jù)傳遞給應(yīng)用程序,無(wú)論它們?cè)诤翁庍\(yùn)行,在集群中管理應(yīng)用程序多租戶。
Kubernetes 擴(kuò)展了集群聯(lián)邦包括支持聯(lián)邦加密,聯(lián)邦命名空間和對(duì)象入口。
以上就是關(guān)于“如何加強(qiáng)Linux容器安全”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。