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