Statista 關於容器技術的報告顯示,全球 50% 的組織已經實施了容器編排。阿爾巴尼亞電話號碼庫
雖然該技術因其優點而獲得廣泛採用,但如果不加以控制,容器可能會打開網路安全攻擊 的大門。 CVE Details 是安全漏洞資料的主要來源,目前已記錄了 62 個與 Docker 相關的漏洞。這難道不需要開發人員採用最佳實踐來消除這些陷阱並確保容器的安全,以實現成功的 DevOps 流程嗎?在本文中,我們將探討容器安全性的概念,重點介紹一些挑戰,並概述使用容器技術時應遵循的最佳實踐。
內容 隱藏
1 什麼是容器安全?
2 貨櫃固定時會出現哪些問題?
3 有哪些工具可以解決容器安全問題?
4 容器安全最佳實踐
4.1 影像保護
4.2 漏洞掃描與管理自動化
4.3 保護容器註冊表
4.4 容器監控
4.5 實施網路安全
4.6 減少攻擊面
4.7 限制容器權限
4.8 秘密的安全管理
4.9 賦予團隊權力
5 最後的想法
5.1 相關出版品:
什麼是容器安全?
保護容器安全是一個持續的過程,它使用安全協定(工具和策略)來保護容器及其環境免受潛在威脅。如果不解決威脅,它們可能會損害應用程式、其基礎架構、執行時間、系統庫、作業系統、核心等。鑑於容器可在瞬態期間(瞬時)使用,並且被設計為動態部署和擴展,因此需要在軟體開發生命週期(SDLC) 的所有階段進行自動保護。
保護容器安全面臨哪些挑戰?
雖然容器有許多好處(例如更快的軟體交付),但它們並非沒有挑戰,主要是因為它們需要安全措施(它們缺乏自我保護能力)。這是因為容器透過託管作業系統 (OS)存取硬體。這意味著單一容器可以有多個基礎容器映像,這會增加攻擊面並產生一些問題。
第一個是容器配置錯誤,開發人員忘記配置並使用標準容器配置,這有幾個缺點,例如打開可能不適合您的應用程式的不安全連接埠、洩露密碼和身份驗證令牌等憑證以及過度授予執行容器的權限(以root 身分執行時)。如果不覆蓋這些預設設置,它們就會為攻擊打開大門。
接下來是容器基礎架構的漏洞。在這裡,漏洞是由嵌入在容器中的套件創建的,例如應用程式程式碼、庫和配置,或駐留在主機作業系統上的套件。該漏洞可以在應用程式生命週期的任何階段引入,例如,透過將外部依賴項注入到容器映像中、安裝開源程式庫作為應用程式的一部分、從第三方容器註冊表和主機獲取基礎容器映像通過網路和端點進行利用。
]

容器化工作負載的可見性是與容器相關的最大挑戰之一。這是由於容器的高度動態性,監控工具無法確定哪些容器正在運作並監控其網路行為。提高可見性有助於防止違規行為,並在發生違規行為時增加回應時間。
此外,如果 CI/CD 管道中的任何一點(應用程式程式碼和容器的工作負載基礎設施)缺乏安全性,容器就會面臨風險。雖然開發人員應該在應用程式生命週期結束時解決安全問題,但開發每個階段的管理都可以保護您的應用程式免受此類事故的影響。
有哪些工具可以解決容器安全問題?
您可以使用容器安全性和完整性工具確保企業部署的安全。這些工具掃描容器是否有漏洞,並持續監控它們是否有攻擊、錯誤或任何問題。無論您正在尋找開源還是商業類型的容器安全工具,它們都具有相同的目的。
它們的工作原理都是審核容器基礎設施並檢查常見漏洞和暴露 (CVE)。這裡有一些可以嘗試的工具:Pingsafe Editors' Choice、Datadog Cloud SIEM、Anchore、Sophos Cloud-Native Security、Bitdefender GravityZone、Sysdig secure、Aqua Security 和 RedHat Advanced Cluster Security for Kubernetes。
容器安全最佳實踐
儘管存在上述有關容器安全性的擔憂,但以下是可用於優化應用程式生命週期各個階段的容器安全性的最佳實踐清單。
影像保護
容器鏡像用於建立容器。最輕微的配置錯誤或惡意操作都可能導致所使用的容器存在漏洞。為了解決這個問題,你需要:
使用可信任圖像— 如果您不是從頭開始創建圖像,那麼最好使用來自可信任來源的圖像。 Docker Hub 等公用儲存庫包含映像,其中一些包含惡意軟體和錯誤配置。
僅包含必要的組件- 如果您的應用程式不需要某些組件,最好將其刪除。例如,UNIX 系統天然具有“awk”和“sed”二進位。
將應用程式合併到容器映像中- 容器映像放置作業系統 (OS) 和正在運行的應用程式的子集。最終放入容器中的每個工具和函式庫都會構成潛在威脅。解決此問題的最佳方法是將應用程式包含在容器映像中。這使用帶有所有必要依賴項的靜態編譯的二進位。
漏洞掃描和管理自動化
定期漏洞掃描以及容器和主機管理可讓您在應用程式生命週期的任何階段偵測漏洞。在這種情況下,您可以使用程式碼掃描來偵測錯誤,並使用靜態應用程式安全測試(SAST)來尋找應用程式程式碼中的漏洞。軟體組成分析(SCA) 提供對開源軟體元件的深入了解,產生可與記錄的開源軟體漏洞進行比較的軟體規格。
此外,鏡像掃描還可以分析容器鏡像的內容和建立過程中是否存在漏洞。使用 Clair 等工具,您可以掃描已知漏洞。另一種方法是使用動態應用程式安全測試(DAST),它根據容器的行為識別安全風險。
DAST 工具還可以執行主機掃描,檢查容器的主機元件(核心和主機作業系統)是否有設定錯誤。儘管上述措施是在容器生命週期內採取的,但您可以使用「左移」理念。這意味著從開發生命週期的一開始就實施安全性。採用這種方法時可以使用的一個很好的工具是 Trivy。
保護容器註冊表的安全
容器註冊表是一種高效、集中的儲存和分發鏡像的方式。組織通常在公共或私人註冊表中儲存數千張圖像。有多種措施可以確保所有團隊成員和員工使用沒有漏洞的圖像。首先,實施使用者存取控制(針對私有註冊表)確定誰可以發布和存取映像。
儘管這是一項基本的安全措施,但它有助於防止未經授權的人員發布、修改或刪除影像。下一個措施是圖像簽名,它將每個圖像與簽名者聯繫起來,並且很難用受損的圖像替換該圖像。您可以使用 Docker 內容信任技術為發送到註冊表和從註冊表接收的資料添加數位簽章。最後,不要忘記影像掃描(連續)有助於檢測任何嚴重漏洞。
貨櫃監控
您可以使用可觀察性工具優化容器化工作負載的可見性。這些工具應該提供對所有元件的漏洞的監控和測試,以及記錄容器環境中的實際事件。可觀察性工具透過審核容器堆疊所有元件的指標和日誌並分析它們是否存在異常來偵測威脅。這種方法可以讓您立即消除偵測到的設定錯誤。 cAdvisor 或 kube-state-metrics 等工具用於收集資源使用指標。
Grafana 或 Prometheus 等工具用於監控容器活動和叢集效能。如果需要分析容器之間的網路流量,請使用Wireshark或tcpdump。如果使用託管 Kubernetes 服務(例如 (AKS)),請使用Azure Monitor 來監控資源和安全威脅。此外,Azure Log Analytics 可以收集和分析您的 AKS 資源。如果您選擇 Amazon EKS,Amazon CloudTrail 是日誌記錄和監控的好選擇;使用亞馬遜雲端觀察。
實施網路安全
網路安全控制有助於保護容器免受未經授權的存取。這裡使用的標準是網路分段,它隔離容器,限制它們只存取必要的服務。如果您在 Kubernetes 上執行容器化應用程序,則可以使用 K8s 網路策略來設定叢集中的傳入和傳出流量。反過來,這允許您根據標籤限制某些膠囊的流量。附加傳輸層安全性( TLS )可用於 Pod 之間的通訊。您可以使用 TLS 或SSL來保護API伺服器與其他元件之間的通訊。
如果您想限制叢集的流量,負載平衡器是一個很好的解決方案。如果叢集中有微服務,則可以使用 Meshery 或 Linkerd 等服務網格工具確保流量安全。最後,如果您使用雲端提供者來託管集群,請保護您的網路。如果使用 Azure Kubernetes 服務 (AKS),請使用網路安全群組 (NSG) 來控制流量。如果您使用 Amazon Elastic Kubernetes Service (EKS),最好的選擇是使用 Amazon Virtual Private Cloud (VPC) 安全性群組。