容器與微服務技術將給安全帶來怎樣的影響?(下)
譯文【51CTO.com快譯】云原生應用程序與基礎設施需要配合不同于以往的安全方法。而以下最佳實踐無疑值得您關注。
在本系列文章的上半部分,我們探討了云原生軟件技術——特別是容器與微服務——所帶來的實際挑戰,以及傳統安全工具無法滿足實際需求的相關理由。在今天的下半部分中,我們將繼續這一議題,聊聊兩大階段當中的實際解決思路。
保護容器構建與部署
構建與部署階段的保護重點,在于將控制能力引入開發者工作流以及持續整合與部署管道,從而緩解容器啟動后可能出現的安全問題。相關指導原則與最佳實踐包括:
· 盡可能降低鏡像體積。 容器鏡像是一個輕量化可執行文件,用于打包應用程序代碼以及運行所必需的關聯面。縮小鏡像體積能夠有效降低攻擊面。作為安全保護工作,我們應從為系統基礎鏡像“瘦身”開始,例如Alpine Linux能夠有效降低鏡像體積并提升管理能力。
· 掃描鏡像以發現已知問題。 在進行鏡像構建時,確保其中不存在已知漏洞無疑非常重要。您可以掃描鏡像當中的各個文件系統層,并將結果與CVE數據庫進行比較。如此一來,開發與安全團隊即可保證用于啟動容器的鏡像不致包含已經被發現的漏洞。
· 數字簽名鏡像。 鏡像構建完成后,其完整性應在部署前接受驗證。我們可以利用惟一摘要標識符對部分鏡像格式進行檢測,從而把握其內容何時曾發生變化。利用私鑰簽名鏡像實現加密保證,確保用于啟動容器的任何鏡像皆由可信方所創建。
· 加強并限制對主機操作系統的訪問。 由于運行在同一主機上的容器共享同一操作系統,因此確保其僅接入與自身作用相關的功能集就非常重要。我們可以利用內核安全功能與模塊(例如Seccomp、AppArmor以及SELinux)實現這一目標。
· 特定應用級細分策略。 微服務間的網絡流量可進行細分,用以限制具體連接方式。但在實施層面,這要求我們根據標簽及選擇器等應用級屬性進行配置,從而將IP地址等傳統網絡復雜性因素抽象出來。細分工作的難度在于必須預先定義通信限制策略,且保證其不會影響容器在環境內/跨環境情況下的通信能力。
· 保護容器所使用的敏感信息。 微服務間經常交換密碼、令牌及密鑰等敏感數據。如果將其存儲在鏡像或者環境變量中,則可能引發意外泄露風險。因此,Docker與Kubernetes等平臺皆集成有敏感信息管理功能,確保其僅在必要時分配給正確的容器對象。
Docker、紅帽以及CoreOS等領先容器平臺與工具能夠提供部分乃至全部上述提到的功能。選擇這些方案能夠幫助您快速實現構建與部署階段的安全保障目標。
然而,構建與部署階段的控制手段并不足以實現徹底安全。之所以無法在容器啟動前解決所有安全問題,原因有三:第一,漏洞無法被完全消除,新的漏洞終將出現; 第二,聲明容器元數據與網絡細分策略并不能完全預測高度分布環境中的所有合法應用活動; 第三,運行時控件的使用非常復雜,經常出現配置錯誤,并導致應用程序遭受威脅。
運行時內容器保護
運行時階段的安全保障包括發現并在必要時停止容器運行所需要的所有功能——可見性、檢測、響應以及預防等等。安全人員需要對安全事件的根源進行調查、判斷與確定,從而作出充分補救。以下為實現這一目標的幾大重要前提:
· 對整體環境進行持續監控。 能夠實時追蹤全部運行中容器內的活動以提供“真相來源”,從而及時發現攻擊及策略違規。我們可以選擇市場上的多種不同容器相關數據監控框架,但請確保其符合您的容器規模與速度需求。
· 對分布式威脅指標進行關聯。 容器的一大特性在于根據資源可用性分布于計算基礎設施之上。由于應用程序內可能包含大量容器,因此違規指標可能同樣分布于眾多主機當中。因此,我們需要對其進行規模化快速關聯,從而將對應指標與特定攻擊聯系起來。
· 分析容器與微服務行為。 微服務與容器可將應用程序拆分為執行特定功能且不可變的眾多小型組件。如此一來,我們將能夠更輕松地理解預期的正常行為模式。而與正常基準不符的行為則可能代表存在惡意活動。
· 利用機器學習強化威脅檢測。 容器環境下生成的數據規模及生成速度往往超出常規檢測技術的承載能力。自動化與機器學習類方案能夠更高效地實現行為建模、模式識別與分類,從而提高判斷準確度并減少誤報狀況。但請不要使用那些僅利用機器學習生成靜態白名單的解決方案,其往往會帶來嚴重的誤報并令管理人員因疲勞而忽略掉真正的威脅。
· 攔截并阻止未授權容器引擎命令。指向容器引擎的命令用于創建、啟動并終止容器以及運行于容器內的全部負載。這些命令的出現可能破壞容器環境,因此必須禁止一切未授權容器引擎命令。
· 自動響應與取證。 容器因生命周期較短而很少留下可用于事件響應及取證的信息。此外,云原生架構通常會利用新系統替換存在問題的系統,導致容器在取證調查時已然消失。自動化機制能夠確保快速捕捉、分析并升級信息,從而減輕攻擊與違規活動的影響。
基于容器與微服務技術的云原生體系正快速普及,并迫使安全人員重新考慮保護手段的實際成效。一套全面的云原生軟件安全程序應面向整個應用程序生命周期,包含容器的構建、部署與運行階段。希望今天的文章能夠為大家在這方面帶來一點啟示。
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】




















