技術發展的目標在于解決問題,但大部分新興技術的誕生與普及往往又帶來了新的問題。同樣的情況,也出現在過去十年來顛覆整個IT格局的三大重要新興技術身上——微服務、容器與Kubernetes。微服務架構與容器化應用程序解決了不少難題,但也帶來了在管理、安全性與合規性等方面新的挑戰。
有效使用這些新技術的前提,自然是從容應對這些挑戰。在本文中,我們將介紹企業在運用微服務與容器技術方面迎接的一系列挑戰,以及有望解決問題的最佳實踐。
安全性、合規性與容器化應用程序
微服務與容器技術之所以給IT團隊帶來一系列新挑戰,原因非常簡單,是因為它們引入了一系列的層 (layers) ,而且將部分層轉移到應用程序部署當中。隨著復雜性的不斷提升,滿足安全性及合規性要求的難度自然也越來越大。
具體來說,目前典型的微服務應用程序部署中包含以下幾層:
容器鏡像,用于容納應用程序代碼。
容器運行引擎,例如Docker,用于啟動單一容器。
Kubernetes,負責管理所有容器。
底層基礎設施,用于托管容器鏡像、運行時以及Kubernetes編排工具。
每個層都存在自身潛在漏洞與安全風險。容器鏡像中可能包含惡意代碼,容器運行時或Kubernetes可能遭到權限升級攻擊,或者包含可用于對容器集群內部分資源進行未授權訪問的漏洞。主機基礎設施則可能因操作系統層級或者云服務商IAM框架中的漏洞或配置錯誤而遭到侵害。
除此以外,在容器化環境中建立強大可靠的安全體系,還有著自己的一整套特殊要求,具體包括:
將各容器與Pod彼此隔離。
將主機與各容器及Pod隔離開來。
管理組成容器集群的各類網絡,并確保網絡之間相互隔離。
保護容器集群所依賴的一切持久性數據存儲。
在高度動態且不斷變化的環境中滿足合規性要求。但整個審計往往需要數周甚至數月才能完成,遵循“瀑布式”時間表,因此難以跟上實際情況變化。
與虛擬機等傳統架構相比,上述這些要求給IT團隊的保護工作帶來不少的麻煩。相較之下,傳統虛擬機天然彼此隔離,一般也不需要在不同的網絡、應用程序組件或者存儲資源之間進行隔離。而這一切,都成為IT團隊在部署容器化應用程序時必須面對的挑戰。
容器帶來新的安全機遇
看到這里,你可能覺得容器與微服務在本質上缺乏安全可靠性。或者說,只有付出更多努力,才能對其加以正確管理與保護。而實際上,容器技術雖然帶來了一系列新的安全挑戰,但同時也給IT團隊提供了新的應對性工具與策略:
第一,是對環境配置采用聲明式方法的能力。在Kubernetes集群當中,幾乎所有內容都可以通過簡單的JSON或者YAML文件進行配置。因此,IT團隊可以創建一組文件,利用這些文件定義集群的行為方式、不同組件的隔離方式等等,而后據此構建環境。在這方面,將安全權限集成至Kubernetes環境配置當中的難度,要遠遠低于以往先構建環境、再對其進行額外的安全保護。
第二,Kubernetes與容器還能夠輕松構建起不可變基礎設施,這意味著用戶一般會通過完全撤銷其前身、而非對運行中的組件進行更新,來部署新的容器與Pod。不可變基礎設施使團隊能夠在部署之前更全面地審查新軟件發布,并減少因意外配置問題將安全風險引入生產環境的可能性。
因此,容器、微服務與Kubernetes并不一定會提高安全性與合規性的實現難度。換言之,引入更多層與組件只是擴大了IT團隊需要管理的攻擊面;但與此同時,新的技術也帶來新的工具與策略,最終令全面管理攻擊面成為可能。
保護現代架構的最佳實踐
除了以上提到的特定策略之外,組織還可以采用以下重要方法盡可能提升基于容器、基于Kubernetes類環境的安全水平。
Kubernetes集群一旦啟動并開始運行,其極高的復雜度會給保護工作帶來巨大壓力。因此,團隊必須在集群啟動之前就進行安全性設計,借此降低相關風險。如上所述,聲明式配置有助于實現這項目標。
同樣的,IT團隊還應該在用于部署及管理容器化應用程序的代碼當中,充分引入安全保護機制。換句話說,單在實際環境中掃描漏洞或跟蹤惡意行為還遠遠不夠;你需要確保用于控制環境以及運行應用程序的代碼本身安全可靠,同時以自動化方式持續審計以檢測一切非安全配置。
通過這種方式,IT團隊可以從先破壞、后修復這一被動方法(即只有在問題發生后才能發現漏洞)過渡至對環境進行默認安全保護的主動方法。
由于Kubernetes環境中包含大量層,且每一層都擁有匹配自己的安全審計與監控類型,因此IT團隊需要采取相應措施分別加以保護。與簡單的基礎設施不同,容器與微服務無法通過單獨關注其中某一層實現有效保護。
Kubernetes提供一系列原生安全功能,IT團隊可以借此幫助實現隔離并緩解安全風險。但需要主要的是,Kubernetes本身并不屬于安全工具,因此請務必充分了解這些原生工具的局限性,并明確需要部署哪些其他工具以填補安全空白。
總結
使用微服務、容器與Kubernetes構建的現代基礎設施,確實要比傳統應用具有更大且更為復雜的攻擊面。但在這種復雜性提升的同時,我們也迎來了運用新工具與新策略應對現代環境安全挑戰的重大機遇。因此,保障Kubernetes部署安全的核心在于充分把握這些機遇,一味在現代環境中堅守傳統安全實踐將無異于給業務體系埋下“定時炸彈”。