在傳統(tǒng)的研發(fā)中,我們經(jīng)常關(guān)注的「安全」包括代碼安全、機(jī)器(運(yùn)行環(huán)境)安全、網(wǎng)絡(luò)運(yùn)維安全,而隨著云原生時(shí)代的到來,如果還按原有的幾個(gè)維度切分的話,顯然容易忽略很多云原生環(huán)境引入的新挑戰(zhàn),我們需要基于網(wǎng)絡(luò)安全最佳實(shí)踐——縱深防御原則,來逐步剖析「云原生的安全」,并且對(duì)不同層次的防御手段有所了解,從而建立自己的云原生安全理念,真正搭建一個(gè)內(nèi)核安全的云原生系統(tǒng)。
注:“縱深防御”,指在計(jì)算機(jī)系統(tǒng)中的多個(gè)層面使用多種網(wǎng)絡(luò)安全技術(shù),從而減少攻擊者利用關(guān)鍵業(yè)務(wù)資源或信息泄露到系統(tǒng)外部的總體可能性。在消息傳遞和協(xié)作環(huán)境中,縱深防御體系可以確保惡意攻擊活動(dòng)被阻止在基礎(chǔ)結(jié)構(gòu)內(nèi)的多個(gè)檢查點(diǎn),降低了威脅進(jìn)入內(nèi)部網(wǎng)絡(luò)的可能性。
以某IDaaS系統(tǒng)為例,我們把一個(gè)云原生系統(tǒng)安全模型分為 4 個(gè)層面,由外至內(nèi)分別是:云/數(shù)據(jù)中心/網(wǎng)絡(luò)層、集群層、容器層、代碼層。
對(duì)于這里安全模型的每一層,都是單向依賴于外層的。也就是說,外層的云、集群、容器安全如果做得好,代碼層的安全就可以受益,而反過來,我們是無法通過提高代碼層的安全性來彌補(bǔ)外層中存在的安全漏洞或問題?;谏鲜鲞@一點(diǎn)原理,我們的縱深防御策略是「自外而內(nèi)」地進(jìn)行“設(shè)防”。
一、云/數(shù)據(jù)中心/網(wǎng)絡(luò)層安全
這一層也可以稱之為基礎(chǔ)設(shè)施安全,不管從何角度,公有或私有云或企業(yè)數(shù)據(jù)中心以及對(duì)應(yīng)的網(wǎng)絡(luò)安全,是 K8s 集群最根本的安全基礎(chǔ),如果這一層存在安全漏洞或者過于脆弱,則整個(gè)系統(tǒng)都不能在此基礎(chǔ)上保證組件的安全。
我們除了需要防御傳統(tǒng)的攻擊,如 ARP 偽裝、DDOS、網(wǎng)絡(luò)層各類報(bào)文等攻擊,應(yīng)該針對(duì) Kubernetes 集群采取以下保護(hù)措施:
不允許在 Internet 上公開對(duì) Kubernetes 管理平臺(tái)(Control Plane)的所有訪問,同時(shí)僅開放部分可信 IP 可以訪問 Kubernetes 管理 API。 所有節(jié)點(diǎn)只暴露指定的端口,包括對(duì)管理平臺(tái)的內(nèi)部端口和來自 NodePort 和 LoadBalancer 類型的 Kubernetes 服務(wù)的連接,并且不應(yīng)該直接暴露到 Internet。 通過云提供商或機(jī)房的網(wǎng)絡(luò)層安全組(例如 AWS 的 Security Group)對(duì)管理平臺(tái)以及節(jié)點(diǎn)授予最小權(quán)限控制: 對(duì)etcd(Kubernetes 的基礎(chǔ)存儲(chǔ))的訪問進(jìn)行嚴(yán)格控制(僅允許來自集群管理平臺(tái)的訪問),應(yīng)強(qiáng)制所有連接都使用TLS,并確保所有信息都是在持久化層被加密的(Encryption at rest)。
二、集群層
保護(hù) Kubernetes 集群有兩個(gè)主體需要關(guān)注:
集群與組件 運(yùn)行的服務(wù)或應(yīng)用
保護(hù) Kubernetes 集群組件與服務(wù)或應(yīng)用:
針對(duì)這兩個(gè)主體的保護(hù),我們的保護(hù)可以分為 4 大塊:管理 API 的訪問控制、Kubelet 的訪問控制、Runtime(運(yùn)行時(shí))工作負(fù)載或用戶功能的訪問控制、集群組件的安全漏洞防護(hù)。
(1) 管理 API 的訪問控制
強(qiáng)制 TLS 保護(hù)傳輸層 強(qiáng)制 API 認(rèn)證 強(qiáng)制 API 授權(quán)機(jī)制(RBAC)
(2) Kubelet 的訪問控制
生產(chǎn)環(huán)境啟用身份驗(yàn)證 身份授權(quán)(RBAC) 強(qiáng)制 TLS 保護(hù)傳輸層
(3) Runtime(運(yùn)行時(shí))工作負(fù)載或用戶功能的訪問控制
限制使用特權(quán)容器 合理限制資源負(fù)載 防止加載非必要內(nèi)核模塊 限制 Pod 越權(quán)訪問其他節(jié)點(diǎn) 基礎(chǔ)數(shù)據(jù)憑證的訪問控制
(4) 集群組件的安全漏洞防護(hù)
禁止未授權(quán)訪問 etcd 啟用審核日志記錄 定期輪換基礎(chǔ)架構(gòu)憑證 定期升級(jí)修復(fù)漏洞
三、容器層
到了這一層,由于跟 Kubernetes 特性不是強(qiáng)相關(guān),我們能提供一些通用的安全措施和建議:
四、代碼層
程序代碼層是最容易受攻擊,但也是最可控的部分之一。雖然一般負(fù)責(zé)這塊安全的人員不一定是運(yùn)維開發(fā)(DevOps),可能是專門的安全工程師(Sec Eng),但有一些基本共性理念和建議是可以互相借鑒的。
總體來說,云原生時(shí)代的這四層架構(gòu):云/數(shù)據(jù)中心/網(wǎng)絡(luò)層、集群層、容器層、代碼層,與傳統(tǒng)架構(gòu)比起來更加細(xì)化和更易受攻擊。自外而內(nèi)地踐行每一層的安全最佳實(shí)踐,我們的縱深防御才能算是成功的,每個(gè)在云原生技術(shù)上想長期獲益的團(tuán)隊(duì)需要對(duì)此有共識(shí)。
責(zé)任編輯:tzh
-
網(wǎng)絡(luò)安全
+關(guān)注
關(guān)注
11文章
3336瀏覽量
61380 -
數(shù)據(jù)中心
+關(guān)注
關(guān)注
16文章
5203瀏覽量
73419 -
云原生
+關(guān)注
關(guān)注
0文章
259瀏覽量
8256
發(fā)布評(píng)論請(qǐng)先 登錄
云原生環(huán)境里Nginx的故障排查思路

云原生在汽車行業(yè)的優(yōu)勢(shì)
云原生AI服務(wù)怎么樣
云原生LLMOps平臺(tái)作用
如何選擇云原生機(jī)器學(xué)習(xí)平臺(tái)
構(gòu)建云原生機(jī)器學(xué)習(xí)平臺(tái)流程
什么是云原生MLOps平臺(tái)
云原生和數(shù)據(jù)庫哪個(gè)好一些?
k8s微服務(wù)架構(gòu)就是云原生嗎?兩者是什么關(guān)系
云原生和非云原生哪個(gè)好?六大區(qū)別詳細(xì)對(duì)比
基于Arm架構(gòu)的Azure虛擬機(jī)助力云原生應(yīng)用開發(fā)
KubeCon China 2024全球大會(huì)在香港舉行,京東云受邀參加探討云原生、開源及 AI
京東云原生安全產(chǎn)品重磅發(fā)布

從積木式到裝配式云原生安全

基于DPU與SmartNic的云原生SDN解決方案

評(píng)論