由於容器提供了靈活且可移植的應用程式運作方式,因此它們已成為部署軟體的熱門解決方案。但是,容器還會在軟體交付管道和託管堆疊中引入新層,例如:
這些元件增加了軟體環境的複雜性,並增加其攻擊面。 容器安全性對於確保組織擁有保護這些元件免受風險和威脅的防護,同時保護其他資源(例如託管容器的伺服器上執行的作業系統),這些資源非常重要。
除了容器安全性需要管理更大的攻擊表面之外,容器安全性還具有挑戰性,因為容器限制開發人員、IT 工程師和安全分析師對工作負載的直接可見性。 因此,偵測和對威脅做出反應可能會變得更具挑戰性。
例如,如果分析師僅根據託管容器的作業系統可用的測量結果和記錄來執行安全性監控,則可能無法偵測容器內異常活動,因為容器本身產生的測量結果和記錄檔通常不由作業系統管理。 為了清楚瞭解每個容器內發生的事情,工程師需要能夠突破容器與主機伺服器分隔容器的抽象層的安全工具。
並非所有容器化環境都包含相同類型的工具。 例如,可以在不使用協調器的情況下運行容器。 這意味著容器安全性的元件可能會根據團隊使用哪些特定工具和平台來管理其容器而有所不同。
也就是說,在大多數情況下,容器安全性包括以下關鍵元件:
如果攻擊者破壞了託管容器映像的註冊表,他們就可以在其中插入惡意程式碼,這反過來會將惡意軟體傳播到運行基於受污染映像的容器的任何環境。
為了防止這種風險,工程師應實施嚴格的存取控制,以防止未經授權訪問容器登記冊的內容。 他們還應監控登記冊中,是否有可能是惡意活動的跡象的異常存取模式。
攻擊者可以利用容器執行時間中的脆弱性來控制容器,甚至可能控制託管容器的伺服器。組織可以透過保持容器執行階段軟體的修補和最新狀態來管理 Docker 容器安全性 (或其使用任何執行階段的安全性) 來管理此風險。
管理員在執行容器時套用的環境組態可能會產生安全影響。 例如,以 root 身份運行容器通常不是最佳做法,因為它給予它們提高的權限,從而增加了漏洞造成的潛在損害。 保護套用至主機容器的環境的設定是容器安全性的重要組成部分。
對於使用編排器的容器化工作負載(例如 Kubernetes),保持編排平台不存在已知的脆弱性至關重要。此外,管理員在設定和管理協調器時,應遵循最佳做法,以防範威脅。 例如,在Kubernetes 容器安全性中,管理員應該使用內建的基於角色的存取控制(RBAC)框架來限制對資源的存取。
有狀態容器化應用程式依賴儲存資源。保護該存儲中託管的數據是容器安全性的另一個重要組成部分。
容器依靠網路相互通訊並接受和接收外部請求。因此,工程師應確保內部和外部網路的安全配置正確,並監控異常活動。
視容器託管的位置而定,可能會提供某些額外的容器安全解決方案或實務。
例如,使用 Docker 的團隊可以通過平台內置的安全掃描器管理 Docker 容器安全性的某些方面,以檢測容器映像中的惡意依賴關係。 在 Kubernetes 上,本機 RBAC 框架可以協助保護容器化工作負載。
同樣,當透過 Azure Kubernetes 服務 (AKS)、Google Kubernetes Engine (GKE) 或 Elastic Kubernetes 服務 (EKS) 等託管服務運行容器時,組織可以選擇利用每個平台中內建的安全工具。服務的雲端供應商協助監控和保護其工作負載。
團隊用來保護容器的容器安全解決方案應提供以下核心功能:
對於大多數容器化工作負載,下列最佳做法可以幫助最大程度地減少攻擊的風險,並最大限度地提高團隊偵測到它的能力:
在容器化託管堆疊中設置元件時,管理員應遵循最小權限的原則。 最小權限意味著將權限限限制為必要的最低層級。
避免從不信任的登錄下載容器映像,這些映像更有可能包含惡意軟體。在可能的情況下,請選擇由成熟、值得信賴的組織維護的登記冊。
在容器安全性方面,只掃描和監控環境的某些層是不夠的。 組織應持續監控所有元件 — 從容器登錄和映像到執行時環境,到基礎基礎架構以及介於之間的一切。 全面監控可最大限度地提高管理員偵測風險的能力。
儘管容器的攻擊表面本質上比非容器化應用程序大,但團隊可以確保避免執行不必要的元件或圖層來減少攻擊面。 例如,開發人員為測試目的啟動的容器應在測試完成後立即關閉。
容器鏡像存在的內容越少,脆弱性的風險就越低。因此,更喜歡簡約的映像,這意味著那些僅包含運行應用程式所需的庫、軟體包和其他元件的映像。
有效容器安全性的關鍵是將安全性整合到容器所依賴的每個流程和資源中。 CloudGuard for Workload Protection透過提供全面的容器安全解決方案使這一切變得簡單,該解決方案提供: