1.云原生進程中的容器安全挑戰
云原生的火熱帶來了企業基礎設施和應用架構等技術層面的革新。大勢所趨下,越來越多的企業選擇擁抱云原生。CNCF 2020年度的調研報告中顯示 ,已經有83%的組織在生產環境中選擇Kubernetes,顯然,容器已經成為應用交付的標準,也是云原生時代計算資源和配套設施的交付單元。
然而,由于在隔離和安全性方面存在的然缺陷,使安全成為企業進行容器改造化進程中始終被關注的核心問題之一。來到云原生時代,企業又將面臨哪些容器安全新挑戰?
2.缺少體系化的容器安全能力建設
傳統的企業應用安全模型通常基于內部架構不同的信任域來劃分對應的安全邊界,在信任域內的東西向服務交互被認為是安全的。而上云后企業應用需要在IDC和云上部署和交互,在物理安全邊界消失后,如何在零信任的網絡安全模型下構建企業級容器安全體系是云服務商需要解決的重要問題。
3.更多的攻擊面
基于容器技術的應用部署依賴Linux內核namespaces和cgroups等特性,從攻擊者的角度出發,可以利用內核系統漏洞,容器運行時組件和容器應用部署配置等多個維度發起針對性的逃逸和越權攻擊。K8s,Docker,Istio等開源社區近年來也相繼爆出不少的高危漏洞,這都給攻擊者提供了可乘之機。
4.缺少應用側全生命周期的安全防護手段
容器技術在為企業應用架構提供了彈性、敏捷和動態可擴展等特性的同時,也改變了應用的部署模式。首先應用自身的生命周期被大幅縮短,一個容器應用的生命周期通常是分鐘級;與此同時,隨著存儲網絡和異構資源利用率等基礎設施能力上的提升,容器應用的部署密度也越來越高,傳統的面向虛機維度的安全防護策略和監控告警手段已經無法適應容器技術的需求。
缺少對云上安全責任共擔模型的理解
企業應用上云后的安全需要遵循責任共擔模型,在企業應用架構云原生化的轉型過程中,需要企業應用管理者和安全運維人員理解企業自身和云服務商之前的責任邊界。這個過程中也需要云服務商面向企業應用側輸出更全面的容器安全最佳實踐并提升安全能力的易用性,降低使用門檻。
構建容器安全體系的基本原則
為了應對上述企業應用在容器化進程中的安全挑戰,云服務商和企業應用安全管理運維人員需要攜手共建容器應用安全體系:
圖1:ACK容器服務安全責任共擔模型
1.云服務供給側
對于云服務商,首先需要依托于云平臺自身的安全能力,構建安全穩定的容器基礎設施平臺,并且面向容器應用從構建,部署到運行時刻的全生命周期構建對應的安全防護手段。整個安全體系的構建需要遵循如下基本原則:
保證容器管控平臺基礎設施層的默認安全。
容器平臺基礎設施層承載了企業應用的管控服務,是保障業務應用正常運行的關鍵,容器平臺的安全性是云服務商應該格外關注的。
完備的平臺安全能力:首先云服務商自身基礎設施的安全性是容器平臺是否安全的基礎,比如VPC的安全配置能力,SLB的訪問控制,DDoS能力和賬號系統對云資源的訪問控制能力等都是平臺側面向企業應用需要提供的基礎安全能力;
版本更新和漏洞應急響應機制:虛機OS的版本更新和漏洞補丁的安裝能力也是保證基礎設施安全的基本防護措施,除此之外如K8s等容器相關開源社區的風險漏洞,都可能成為惡意攻擊者首選的攻擊路徑,需要廠商提供漏洞的分級響應機制并提供必要的版本升級能力;
平臺的安全合規性:這也是很多金融企業和政府部門應用上云的硬性前提條件。云服務商需要基于業界通用的安全合規標準,保證服務組件配置的默認安全性,同時面向平臺用戶和安全審計人員,提供完備的審計機制。
面向容器應用側提供縱深防御能力
云服務商不僅要在自身管控側建立完善的安全武裝,同時也需要面向業務應用負載,提供適合云原生場景下容器應用的安全防護手段,幫助終端用戶在應用生命周期各階段都能有對應的安全治理方案。由于云原生具有動態彈性的基礎設施,分布式的應用架構和創新的應用交付運維方式等特點,這就要求云服務商能夠結合自身平臺的基礎安全能力,將云原生能力特性賦能于傳統的安全模型中,構建面向云原生的新安全體系架構。
2.企業安全側
對于企業的安全管理和運維人員來說,首先需要理解云上安全的責任共擔模型邊界,究竟企業自身需要承擔起哪些安全責任。云原生微服務架構下企業應用在IDC和云上進行部署和交互,傳統的網絡安全邊界已經不復存在,企業應用側的網絡安全架構需要遵循零信任安全模型,基于認證和授權重構訪問控制的信任基礎。對于企業安全管理人員來說可以參考關注如下方向加固企業應用生命周期中的生產安全:
保證應用制品的供應鏈安全
云原生的發展使得越來越多的大規模容器應用開始在企業生產環境上部署,也大大豐富了云原生應用制品的多樣性,像容器鏡像和helm charts都是常見的制品格式。對于企業來說制品供應鏈環節的安全性是企業應用生產安全的源頭,一方面需要在應用構建階段保證制品的安全性;另一方面需要在制品入庫,分發和部署時刻建立對應的訪問控制,安全掃描、審計和準入校驗機制,保證制品源頭的安全性。
權限配置和憑證下發遵循權限最小化原則
基于統一的身份標識體系進行認證授權是在零信任安全模型下構建訪問控制能力的基礎。對于企業安全管理人員來說,需要利用云服務商提供的訪問控制能力,結合企業內部的權限賬號體系,嚴格遵循權限最小化原則配置對云上資源和容器側應用資源的訪問控制策略;另外嚴格控制資源訪問憑證的下發,對于可能造成越權攻擊行為的已下發憑證要及時吊銷。另外要避免容器應用模板配置如特權容器這樣的過大權限,確保最小化攻擊面。
關注應用數據和應用運行時刻安全:
應用的成功部署上線并不意味著安全工作的結束。除了配置完備的資源請求審計外,安全管理運維人員還需要利用廠商提供的運行時刻監控告警和事件通知等機制,保持對容器應用運行時安全的關注,及時發現安全攻擊事件和可能的安全隱患。對于企業應用自身依賴的敏感數據(比如數據庫密碼,應用證書私鑰等)需要根據應用數據的安防等級采用對應的密鑰加密機制,利用云上的密鑰管理方案和落盤加密,機密計算等能力,保證數據在傳輸和落盤鏈路上的數據安全性。
及時修復安全漏洞和進行版本更新:
無論是虛機系統,容器鏡像或是容器平臺自身的安全漏洞,都有可能被惡意攻擊者利用成為入侵應用內部的跳板,企業安全管理運維人員需要根據云服務商推薦的指導方案進行安全漏洞的修復和版本更新(比如K8s集群版本,應用鏡像版本等)。此外企業要負責內部員工的安全培訓工作,居安思危,提升安全防護意識也是企業安全生產的基礎要務。
端到端的云原生容器安全架構
阿里云ACK容器服務面向廣大的企業級客戶,構建了完整的容器安全體系,提供了端到端的應用安全能力。在今年Forrester IaaS安全評測中,阿里云容器安全能力與谷歌并列滿分,領先其他廠商。下圖為阿里云容器服務的安全體系架構圖:
圖2:ACK容器服務安全體系架構圖
首先整個容器安全體系依托于阿里云強大的平臺安全能力,包括物理/硬件/虛擬化以及云產品安全能力,構建了夯實的平臺安全底座。
在云平臺安全層之上是容器基礎設施安全層,容器基礎設施承載了企業容器應用的管控能力,其默認安全性是應用能夠穩定運行的重要基礎。在容器管控側,阿里云容器服務基于CIS Kubernetes等業界安全標準基線對容器管控面組件配置進行默認的安全加固,同時遵循權限最小化原則收斂管控面系統組件和集群節點的默認權限,最小化攻擊面。三月,阿里云容器服務提交的CIS Kubernetes benchmark for ACK正式通過CIS社區組織的認證審核,成為國內首家發布CIS Kubernetes國際安全標準基線的云服務商。
統一的身份標識體系和訪問控制策略模型是在零信任安全模型下構建安全架構的核心,ACK管控側和阿里云RAM賬號系統打通,提供了基于統一身份模型和集群證書訪問憑證的自動化運維體系,同時面對用戶憑證泄露的風險,創新的提出了用戶憑證吊銷的方案,幫助企業安全管理人員及時吊銷可能泄露或離職員工的集群訪問憑證,避免越權訪問攻擊事件。
針對密鑰管理、訪問控制、日志審計這些企業應用交互訪問鏈路上關鍵的安全要素,ACK容器服務也提供了對應的平臺側安全能力: :
訪問控制:ACK基于K8s RBAC策略模型提供集群內應用資源的訪問控制能力,在保證非主賬號或集群創建者默認無權限的安全前提下,集群管理員可以通過控制臺或OpenAPI的方式對指定的子賬號或RAM角色進行集群和賬號維度的批量RBAC授權,ACK面向企業常見授權場景,提供了四種預置的權限模板,進一步降低了用戶對RBAC及K8s資源模型的學習成本。對于應用容器中通常依賴的集群訪問憑證serviceaccount,ACK集群支持開啟針對serviceaccount的令牌卷投影特性,支持對sa token配置綁定audience身份,并且支持過期時間的設置,進一步提升了應用對管控面apiserver的訪問控制能力。
密鑰管理:針對企業客戶對數據安全自主性和合規性的要求,ACK Pro集群支持對K8s Secret的落盤加密能力,同時支持使用BYOK的云盤加密能力,保證企業核心數據安心上云;同時ACK集群支持將用戶托管在阿里云KMS憑據管家中的敏感信息實時同步到應用集群中,用戶在K8s應用中直接掛載憑據同步的指定secret實例即可,進一步避免了對應用敏感信息的硬編碼問題。
日志審計:ACK除了支持K8s集群audit審計,controlplane管控面組件日志等基本的管控面日志采集外,還支持對Ingress流量的日志審計和基于NPD插件的異常事件告警。以上日志審計能力均對接了阿里云SLS日志服務,通過SLS服務提供的快速檢索、日志分析和豐富的dashboard展示能力,大大降低了對容器應用開發運維和安全審計的難度。
面向容器應用層在供應鏈和運行時刻的安全挑戰,阿里云從容器應用的構建、部署到運行全生命周期,提供全方位覆蓋的安全能力:
圖3:ACK容器服務應用全生命周期安全能力
應用構建階段:
據Prevasio對于托管在Docker Hub上400萬個容器鏡像的調查統計,有51%的鏡像存在高危漏洞;另外有6432個鏡像被檢測出包含惡意木馬或挖礦程序,而光這6432個惡意鏡像就已經被累計下載了3億次。
應對這些潛伏于鏡像制品中的安全挑戰,一方面要求企業應用開發者在構建應用鏡像時使用可信的基礎鏡像,規范化鏡像構建流程, 保證鏡像最小化;另一方面阿里云ACR容器鏡像服務針對鏡像構建流程中的安全風險,提供了倉庫權限的訪問控制,操作審計和鏡像安全掃描等基礎能力。其中鏡像安全掃描是用戶能夠主動發現安全漏洞的基礎手段,ACR容器鏡像服務和阿里云云安全中心提供了不同版本的鏡像漏洞庫,在支持鏡像深度掃描的同時具備漏洞庫的實時更新能力,滿足企業安全合規需求。在阿里云容器鏡像服務企業版中還可以通過創建和管理交付鏈實例,將安全掃描和分發流程自由組合并內置到自動化任務中并且自動攔截包含漏洞的鏡像,確保分發到倉庫中鏡像的安全性。
在鏡像構建環節,除了及時發現鏡像漏洞,如何在保證鏡像在分發和部署時刻不被惡意篡改也是重要的安全防護手段,這就需要鏡像的完整性校驗。在阿里云容器服務企業版實例中,企業安全管理人員可以配置加簽規則用指定的KMS密鑰自動加簽推送到倉庫中的鏡像。
應用部署時刻:
K8s原生的admission準入機制為應用部署時刻提供了天然的校驗機制。
濫用特權容器,敏感目錄掛載,以root用戶啟動容器,這些常見的應用模板配置都很可能成為容器逃逸攻擊的跳板。K8s原生的PSP模型通過策略定義的方式約束應用容器運行時刻的安全行為。ACK容器服務提供面向集群的策略管理功能,幫助企業安全運維人員根據不同的安全需求定制化PSP策略實例,同時綁定到指定的serviceaccount上,對PSP特性的一鍵式開關也面向用戶屏蔽了其復雜的配置門檻。此外,ACK容器服務還支持gatekeeper組件的安裝管理,用戶可以基于OPA策略引擎更為豐富的場景下定制安全策略。
針對應用鏡像在部署時刻的安全校驗需求,谷歌在18年率先提出了Binary Authorization的產品化解決方案。ACK容器服務也在去年初正式落地了應用部署時刻的鏡像簽名和驗簽能力。通過安裝定制化的kritis組件,企業安全運維人員可以通過定制化的驗簽策略保證應用部署鏡像的安全性,防止被篡改的惡意鏡像部署到企業生產環境中。
應用運行時刻:
企業應用的穩定運行離不開運行時刻的安全防護手段。ACK容器服務和云安全中心團隊合作,面向容器內部入侵,容器逃逸,病毒和惡意程序,異常網絡連接等常見的運行時刻攻擊行為進行實時監控和告警,同時云安全中心還提供了針對告警事件的溯源和攻擊分析能力。與此同時,ACK容器服務基于業界安全基線和最佳實踐,面向集群內運行應用提供了一鍵化的免費安全巡檢能力,通過巡檢任務及時暴露運行中容器應用在健康檢查/資源限制/網絡安全參數/安全參數等配置上不符合基線要求的危險配置,并提示用戶修復建議,避免可能發生的攻擊。
對于安全隔離程度要求較高的企業客戶可以選擇使用安全沙箱容器集群,安全沙箱容器基于輕量虛擬化技術實現,應用運行在獨立的內核中,具備更好的安全隔離能力,適用于不可信應用隔離、故障隔離、性能隔離、多用戶間負載隔離等多種場景。
對于金融支付,區塊鏈等對數據計算過程中的完全性,完整性和機密性有強安全訴求的場景,可以選擇部署使用ACK-TEE機密計算托管集群,其中機密計算基于Intel SGX技術,支持將重要的數據和代碼防止在一個特殊的可信執行加密環境(Trusted Execution Environment,TEE)中,而不會暴露給系統其他部分。其他應用、BIOS、OS、Kernel、管理員、運維人員、云服務商、甚至除了CPU以外的其他硬件均無法訪問機密計算平臺數據,極大減少敏感數據的泄露風險。
安全是企業上云的首要關切
近十年來,選擇了阿里云容器服務的客戶對阿里云提出了各種各樣的安全場景需求,如公司內部IT資產安全、數據運轉安全、高效管控各方權限等,這些典型需求的考驗,使阿里云沉淀了最豐富的云原生產品家族、最全面的云原生開源貢獻、最大的容器集群和客戶群體和廣泛的云原生應用實踐。
安全是企業上云的首要關切。隨著云原生對計算基礎設施和企業應用架構的重定義,容器作為云的新界面,也將緊跟云原生的發展大潮,向更加安全、可信的方向發展。未來,阿里云容器服務將始終以“讓企業放心上云,安心用云”為目標,在容器安全領域保持世界級的競爭力,在不斷夯實自身基礎設施安全的基礎上,為客戶的應用安全保駕護航。