在傳統的研發中,我們經常關注的安全有資料安全、**安全、機器(執行環境)安全、網路運維安全,而雲原生時代的到來,如果還是按幾個維度切分的話,顯然容易忽略很多雲原生環境引入的新的挑戰,我們需要基於網路安全最佳實踐——縱深防禦原則,來逐步剖析雲原生的安全,並且對不同層次的防禦手段有簡單的了解,最重要的是,建立自己雲原生安全的理念,真正搭建乙個核心安全的雲原生系統。
縱深防禦指在計算機系統中的多個層面使用多種網路安全技術,從而減少攻擊者利用關鍵業務資源或資訊洩露到系統外部的總體可能性。在訊息傳遞和協作環境中,縱深防禦體系可以確保惡意攻擊活動被阻止在基礎結構內的多個檢查點,降低了威脅進入內部網路的可能性。以玉符idaas系統為例,可以把乙個雲原生系統安全模型分為4個層面,3條規則(身份認證,訪問控制,審計),由外至內層層布防:
對於這裡安全模型的每一層,都是單向依賴於外層的。也就是說,外層的雲、集群、容器安全如果做得好,**層的安全就可以受益,而反過來,我們是無法通過提高**層的安全性來彌補外層中存在的安全漏洞或問題。
基於上述這一點原理,我們的縱深防禦策略是「自外而內」地進行「設防」。
這一層也可以稱之為基礎設施安全,不管從何角度,公有或私有雲或企業資料中心以及對應的網路安全,是k8s集群最根本的安全基礎,如果這一層存在安全漏洞或者過於脆弱,則整個系統都不能在此基礎上保證元件的安全。我們除了需要防禦傳統的攻擊-arp偽裝、ddos、網路層各類報文等攻擊,應該針對kubernetes集群採取以下保護措施:
不允許在 internet 上公開對 kubernetes 管理平台(control plane)的所有訪問,同時僅開放部分可信 ip 可以訪問 kubernetes 管理 api;
根據 rule-bac(基於規則訪問控制),只暴露指定的埠,包括對管理平台的內部埠和來自 nodeport 和 loadbalancer 型別的 kubernetes 服務的連線,並且不暴露到 internet;
所有計算節點施行網路分層規則,通過雲提供商或機房的網路層安全組(例如 aws 的 security group)對管理平台以及節點授予最小許可權控制,能夠在最大程度上,減少黑客產生的危害,也就保護了資料的安全性。
4. 對 etcd(kubernetes的基礎儲存)的訪問進行嚴格控制(僅允許來自集群管理平台的訪問),應強制所有連線都使用tls,並確保所有資訊都是在持久化層被加密的(encryption at rest);
5. 審計報警系統針對每個平台的訪問資訊進行實施過濾分析,如發現非授權訪問,第一時間通知安全管理人員,並跟蹤處理。例如:當黑客進入內網後,往往會進行資料「挖掘「,這些非常規操作區別於常規員工操作。
6. 堡壘機針對 linux 伺服器訪問控制,並開啟密碼策略,同時收集並分析訪問、事件、程序等日誌,使用堡壘機進行訪問控制。
7. 辦公網路接入和機房網路接入僅需要增加身份認證。如:wi-fi 接入,vpn 接入繫結 oidc 認證。
保護 kubernetes 集群有兩個主體需要關注:
針對這兩個主體的保護,實現最小許可權管理原則.由專門安全工程師進行許可權管理.我們的保護可以分為 4 大塊:管理api的訪問控制、kubelet 的訪問控制、runtime(執行時)工作負載或使用者功能的訪問控制、集群元件的安全漏洞防護,如下圖所示。
1. 管理 api 的訪問控制
a. 強制 tls 保護傳輸層
b. 強制 api 認證
c 強制api授權機制(rbac)
d. 限制api訪問源(pbac)
2. kubelet 的訪問控制
a. 生產環境啟用身份驗證
b. 身份授權(rbac)
c. 強制 tls 保護傳輸層
3. runtime(執行時)工作負載或使用者功能的訪問控制
a. 限制使用特權容器
b. 合理限制資源負載
c. 防止載入非必要核心模組
d. 限制 pod 越權訪問其他節點
e. 基礎資料憑證的訪問控制
4. 集群元件的安全漏洞防護
a. 禁止未授權訪問 etcd
b. 啟用審核日誌記錄
c. 定期輪換基礎架構憑證
d. 定期公升級修復漏洞
程式**層是最容易受攻擊,但也是最可控的部分之一。雖然一般負責這塊安全的人員不一定是運維開發(devops),可能是專門的安全工程師(sec eng),但有一些基本共性理念和建議是可以互相借鑑的。
總得來說,安全的本質是資料被合理使用. 雲原生時代的這四層架構:雲/資料中心/網路層、集群層、容器層、**層,與傳統架構比起來更加細化和更易受攻擊,自外而內地踐行每一層的安全最佳實踐,我們的縱深防禦才能算是成功的,每個在雲原生技術上想長期獲益的團隊需要對此有共識。
安全體系的簡歷可以參考主流安全框架如 iso27001 或國家等級保護**等.所有的安全措施都不能保證100%安全,但是1%的安全故障會造成100%的危害。所以安全體系建立是乙個長期的過程,持續更新改進的過程,需要公司從上至下的進行管理和推動。
雲原生賬號安全管理
一 業務需求 在公有雲建設早期,賬號安全管理主要是依賴雲自身的管理。等到公有雲建設中期的時候,公有雲可以通過雲產品基線對賬號系統進行檢查,例如 雲主賬號開啟雙因素認證,密碼策略輪換,監控ak洩露等安全相關的基線來完成監督。主機層面會使用主機安全基線做賬號以及密碼相關的檢查。但是,我們會發現雲端管理好...
攻擊與響應 雲原生網路安全與虛擬機器安全
雲原生工作負載和容器本質上是不同的。人們需要了解如何保持安全,首先要了解不斷變化的威脅性質。那麼哪個更安全 虛擬機器 vm 還是容器?事實是,確保容器和雲原生工作負載的安全與虛擬機器不同,這一切都要從了解攻擊和響應以及不斷變化的威脅的性質開始。多年來,安全生態系統一直處於響應狀態。當攻擊發生時,立即...
網易雲原生架構實踐之服務治理
本文由 網易雲 發布。雲原生 cloud native 的高階實踐是分布式服務化架構。乙個良好的服務化架構,需要良好的服務發現 服務治理 服務編排等核心能力。本文為讀者解析網易雲的服務治理策略及其典型實踐。在優化了版本控制策略,研發並整合了自動化構建和發布工具,實現 專案工程化 之後,網易雲開始了分...