本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
為你的叢集提供雲原生安全
在過去幾年中,一個專注於安全的小社群一直在努力加深我們對安全的理解,鑑於雲原生基礎設施的不斷演進和相應的迭代部署實踐。為了與社群分享這些知識,由Emily Fox領導的 CNCF SIG 安全(一個向 CNCF TOC 彙報並與 Kubernetes SIG 安全 友好合作的組織)成員,共同撰寫了一份白皮書,概述了整體雲原生安全關注點和最佳實踐。經過來自全球35名成員的1200多條評論、修改和討論,我們自豪地分享 雲原生安全白皮書 v1.0,它為企業、金融和醫療行業、學術界、政府和非營利組織的安全領導者提供了必讀內容。
該白皮書試圖**不**專注於任何特定的 雲原生專案。相反,其目的是在雲原生應用程式生命週期的四個邏輯階段(*開發、分發、部署和執行時*)中建模和注入安全性。
Kubernetes 原生安全控制
當使用 Kubernetes 作為工作負載編排器時,本版白皮書建議的一些安全控制包括:
- Pod 安全策略:為整個叢集的“最小許可權”工作負載實現單一事實來源
- 資源請求和限制:為記憶體和 CPU 等共享資源應用請求(軟約束)和限制(硬約束)
- 審計日誌分析:為安全相關事件啟用 Kubernetes API 審計和過濾
- 控制平面認證和證書信任根:為叢集內通訊啟用帶有受信任 CA 的雙向 TLS 認證
- 金鑰管理:與內建或外部金鑰儲存整合
雲原生補充安全控制
Kubernetes 直接參與**部署**階段,並在較小程度上參與**執行時**階段。確保工件安全地**開發**和**分發**對於使 Kubernetes 中的工作負載“預設安全”執行是必要的。在雲原生應用程式生命週期的所有階段中,Kubernetes 編排的工作負載存在多種補充安全控制,其中包括但不限於:
- 開發
- 映象簽名和驗證
- 映象漏洞掃描器
- 分發
- 部署前檢查以檢測過度許可權
- 啟用可觀測性和日誌記錄
- 部署
- 使用服務網格進行工作負載認證和授權
- 透過 網路外掛 對工作負載間通訊強制執行“預設拒絕”網路策略
- 執行時
- 為工作負載部署安全監控代理
- 使用 SELinux、AppArmor 等隔離在同一節點上執行的應用程式
- 根據公認的安全基線掃描節點、工作負載和編排器的配置
先理解,後保障
雲原生方式,包括容器,為其使用者提供了巨大的安全優勢:不變性、模組化、更快的升級和整個環境的一致狀態。認識到“做事方式”的這種根本性變化,促使我們用雲原生的視角來看待安全。對所有白皮書作者來說顯而易見的一點是,如果你不瞭解手頭的工具、模式和框架(除了瞭解自己的關鍵資產),就很難在雲原生生態系統中做出更明智的決策,決定如何以及保障什麼。因此,對於所有希望成為運營、產品開發和合規部門的朋友的合作伙伴而非把關人的安全從業者,讓我們努力“**學得更多,以便更好地保障安全**”。
我們建議遵循以下**7步 R.U.N.T.I.M.E. 路徑**來啟動雲原生安全:
- Read(閱讀)白皮書及其中的任何連結材料
- Understand(理解)您環境的挑戰和限制
- Note(注意)適用於您環境的內容和控制
- Talk(討論)與您的同行討論您的觀察
- Involve(參與)您的領導層並尋求幫助
- Make(制定)基於現有和缺失安全控制的風險配置檔案
- Expend(投入)時間和金錢以及資源,以改進安全態勢並酌情降低風險。
致謝
非常感謝 *Emily Fox、Tim Bannister (The Scale Factory)、Chase Pettet (Mirantis) 和 Wayne Haber (GitLab)* 為這篇部落格文章提供了精彩的建議。