K8S安全军规101:对CNCF最佳实践的扩充
戳藍(lán)字“CSDN云計(jì)算”關(guān)注我們哦!
作者 | GOINS
本文轉(zhuǎn)載自公眾號(hào):RancherLabs
在昨天的文章里,我們分享了CNCF為廣大Kubernetes用戶(hù)建議的9項(xiàng)Kubernetes安全最佳實(shí)踐,分享了用戶(hù)使用Kubernetes管理集群時(shí)的9個(gè)能進(jìn)一步確保集群安全的基本操作。
?
昨天文章中的建議非常好,但不足之處在于它們都過(guò)于依賴(lài)GKE了。對(duì)于那些使用谷歌服務(wù)的用戶(hù)來(lái)說(shuō),GKE固然是一個(gè)很好的解決方案。然而,還有更多的人則是在亞馬遜、Azure、阿里云、華為云、DigitalOcean、甚至是他們自己的基礎(chǔ)設(shè)施上或其他他們?nèi)魏蜗朐诘牡胤缴线\(yùn)行著Kubernetes集群,那么此時(shí),GKE相關(guān)的解決方案對(duì)他們而言并沒(méi)有太大幫助。
?
對(duì)于這些用戶(hù)而言,Rancher作為一個(gè)開(kāi)源的解決方案,是一個(gè)很棒的選擇。
?
Rancher Labs對(duì)待安全問(wèn)題十分嚴(yán)肅謹(jǐn)慎。Rancher Labs聯(lián)合創(chuàng)始人及首席架構(gòu)師Darren Shepherd,是2018年年底Kuberntes?被爆出的首個(gè)嚴(yán)重安全漏洞(CVE-2018-1002105)的發(fā)現(xiàn)者。安全性不應(yīng)該是事后的想法,也不應(yīng)該是部署了不安全的集群之后才記得要去做的事。就像你建造房子時(shí),不應(yīng)該把所有物品都搬進(jìn)去之后,才開(kāi)始安裝門(mén)鎖。
?
在本文中,我將回顧上篇文章中CNCF提出的每個(gè)要點(diǎn),并向您分析Rancher和RKE能如何在默認(rèn)設(shè)置中滿(mǎn)足這些安全建議。
升級(jí)到最新版本
這是一個(gè)合理的建議,并且不僅適用于Kubernetes。因?yàn)槲葱扪a(bǔ)的程序常常是攻擊者的切入點(diǎn)。當(dāng)某個(gè)安全漏洞出現(xiàn)、poc代碼公開(kāi)可用時(shí),Metasploit之類(lèi)的工具套件很快就會(huì)在其標(biāo)準(zhǔn)套件中包含這些漏洞。此時(shí),任何會(huì)從Internet復(fù)制和粘貼命令的人都可以控制您的系統(tǒng)。
?
使用Rancher Kubernetes Engine(RKE)時(shí),無(wú)論是單獨(dú)使用還是和Rancher一起使用,您都可以選擇要安裝的Kubernetes版本。Rancher Labs使用原生上游Kubernetes,這使公司能夠快速響應(yīng)安全警報(bào),發(fā)布修復(fù)版本的軟件。因?yàn)镽KE是在Docker容器中運(yùn)行Kubernetes組件的。運(yùn)維團(tuán)隊(duì)可以對(duì)關(guān)鍵基礎(chǔ)架構(gòu)進(jìn)行零停機(jī)升級(jí)。
?
您可以通過(guò)Rancher的GitHub主頁(yè)、微信公眾號(hào)、官網(wǎng)等各個(gè)渠道接收有關(guān)新版本發(fā)布的信息。我還強(qiáng)烈建議您在升級(jí)之前,先在staging環(huán)境中測(cè)試新版本。如果升級(jí)出錯(cuò),Rancher也可以輕松回滾到以前的版本。
啟用基于角色的訪問(wèn)控制(RBAC)
安裝RKE后,RBAC會(huì)默認(rèn)啟動(dòng)。如果您只使用RKE或任何其他獨(dú)立的Kubernetes部署,則您需要負(fù)責(zé)配置帳戶(hù)、角色和綁定以保護(hù)您的集群。
?
如果您正在使用Rancher,它不僅會(huì)安裝安全集群,還會(huì)通過(guò)Rancher服務(wù)器,代理與這些集群的所有通信。Rancher可以插入許多后端身份驗(yàn)證程序,例如Active Directory、LDAP、SAML、Github等。當(dāng)以這種方式連接時(shí),Rancher使您能夠?qū)F(xiàn)有的企業(yè)身份驗(yàn)證擴(kuò)展到Rancher的保護(hù)傘下的所有Kubernetes集群,無(wú)論這些集群在哪里運(yùn)行。
Rancher在全局、集群和項(xiàng)目級(jí)別啟用角色,使管理員可以在一個(gè)位置定義角色并將其應(yīng)用于所有集群。這種RBAC-by-default和強(qiáng)大的身份驗(yàn)證和授權(quán)控制的組合意味著從使用Rancher或RKE部署集群的那一刻起,集群就是安全的。
使用命名空間建立安全邊界
由于Kubernetes處理默認(rèn)命名空間的特殊方式,我不建議您使用它。我建議您為每個(gè)應(yīng)用程序創(chuàng)建一個(gè)命名空間,將它們定義為邏輯組。
?
Rancher定義了一個(gè)名為Project的附加抽象層。Project是命名空間的集合,可以在其上映射角色。用戶(hù)可能有權(quán)訪問(wèn)某一Project,但他們無(wú)法看到任何他們無(wú)權(quán)訪問(wèn)的Project中運(yùn)行的任何工作負(fù)載,也無(wú)法與其進(jìn)行交互。這樣一來(lái),其實(shí)就是有效地創(chuàng)建了單集群多租戶(hù)。
?
使用Projects,管理員可以更輕松地授予對(duì)單個(gè)集群中多個(gè)命名空間的訪問(wèn)權(quán)限。它最大限度地減少了重復(fù)配置以及人為錯(cuò)誤。
將敏感工作負(fù)載彼此分開(kāi)
這是一個(gè)很好的建議,因?yàn)樗俣艘粋€(gè)問(wèn)題,“如果工作負(fù)載受到損害會(huì)發(fā)生什么?”。提前采取行動(dòng)可以減少破壞地范圍使攻擊者更難以升級(jí)權(quán)限,但也并不是完全不可能。所以這可能得花費(fèi)您額外的時(shí)間處理。
?
Kubernetes允許您設(shè)置污點(diǎn)(taints)和容差(torlerations),從而控制可能部署Pod的位置。
?
Rancher還允許您通過(guò)Kubernetes標(biāo)簽控制工作負(fù)載的調(diào)度。除了污點(diǎn)和容差之外,在部署工作負(fù)載時(shí),您可以為主機(jī)設(shè)置必須、應(yīng)該或可以具有的標(biāo)簽,這些標(biāo)簽會(huì)控制Pod的部署位置。 如果您的環(huán)境是靜態(tài)的,您還可以將工作負(fù)載安排到特定節(jié)點(diǎn)。
安全的云元數(shù)據(jù)訪問(wèn)
該建議指出,敏感的元數(shù)據(jù)“有時(shí)可能被盜或被濫用”,但未能概述“何時(shí)”或“如何”的條件。上篇文章中提到了Shopify的賞金細(xì)節(jié)的泄露, 2018年12月13日的北美KubeCon上提到了這一事件。雖然上篇文章指出GKE具有“元數(shù)據(jù)隱藏”的功能,但值得注意的是,在最開(kāi)始泄露憑據(jù)的服務(wù),正是Google Cloud元數(shù)據(jù)API。
?
此外,沒(méi)有任何證據(jù)顯示任何其他云提供商存在相同的漏洞。
?
此漏洞可能存在的唯一位置是托管的Kubernetes服務(wù),例如GKE。如果您直接或通過(guò)Rancher將RKE部署到裸機(jī)或云計(jì)算實(shí)例上,您將最終得到一個(gè)無(wú)法通過(guò)云提供商的元數(shù)據(jù)API泄露憑據(jù)的集群。
?
如果您正在使用GKE,我建議您激活此功能以防止任何憑據(jù)通過(guò)元數(shù)據(jù)服務(wù)泄漏。我還認(rèn)為云提供商不應(yīng)該將憑證嵌入到可通過(guò)API訪問(wèn)的元數(shù)據(jù)中。即使這樣做是為了方便,但這是一種不必要的風(fēng)險(xiǎn),可能會(huì)產(chǎn)生難以想象的后果。
創(chuàng)建和定義集群網(wǎng)絡(luò)策略
直接部署或由Rancher部署的RKE集群默認(rèn)使用Canal,當(dāng)然,您也可以選擇Calico或Flannel。Canal和Calico都支持網(wǎng)絡(luò)策略。當(dāng)使用Canal作為網(wǎng)絡(luò)提供商時(shí),Rancher部署的集群也支持Project網(wǎng)絡(luò)策略。激活后,工作負(fù)載可以與其項(xiàng)目中的其他工作負(fù)載通信,而系統(tǒng)項(xiàng)目(包括入口控制器等集群范圍的組件)可以與所有項(xiàng)目進(jìn)行通信。
?
早期版本的Rancher默認(rèn)啟用Project網(wǎng)絡(luò)策略,但這給一些不了解額外安全性的用戶(hù)造成了混亂。因此,為了給用戶(hù)提供最佳體驗(yàn),此功能現(xiàn)在默認(rèn)情況下已關(guān)閉,但如果您想啟用,也可以在啟動(dòng)后輕松激活。
運(yùn)行集群范圍的Pod安全策略
Pod安全策略(PSP)控制Pod必須具有某些功能和配置才能在集群中運(yùn)行。例如,您可以阻止特權(quán)模式、主機(jī)網(wǎng)絡(luò)或以root身份運(yùn)行容器。通過(guò)Rancher或RKE安裝集群時(shí),您可以選擇是否要默認(rèn)啟用受限制的PSP。如果選擇啟用它,則您的集群將立即對(duì)工作負(fù)載權(quán)限強(qiáng)制實(shí)施強(qiáng)制限制。
受限制的和不受限制的PSP在RKE和Rancher中是相同的,因此它們?cè)诎惭b時(shí)激活的內(nèi)容是一樣的。Rancher允許無(wú)限數(shù)量的額外PSP模板,所有這些都可以在全局范圍內(nèi)處理。管理員定義PSP,然后將它們應(yīng)用于Rancher管理的每個(gè)集群。與前面討論的RBAC配置類(lèi)似,它將安全配置保存在一個(gè)位置,并大大簡(jiǎn)化了策略的配置和應(yīng)用。
加強(qiáng)節(jié)點(diǎn)安全
這不是Kubernetes特定的建議,而是一個(gè)很好的普適策略。當(dāng)要與您無(wú)法控制的流量進(jìn)行交互時(shí)(例如,在Kubernetes中運(yùn)行的應(yīng)用程序的用戶(hù)點(diǎn)擊量),應(yīng)該讓其在攻擊面較小的節(jié)點(diǎn)上運(yùn)行。此外,禁用和卸載不需要的服務(wù)也是必要的。還有,應(yīng)該通過(guò)SSH限制root訪問(wèn)權(quán)限并需要sudo密碼加密。在SSH密鑰上使用密碼短語(yǔ),或使用2FA、U2F密鑰或Krypton等服務(wù)將密鑰綁定到用戶(hù)擁有的設(shè)備。 以上這些是安全系統(tǒng)的基本標(biāo)準(zhǔn)配置示例。
除了受支持的Docker版本之外,Rancher在主機(jī)上不需要其他。并且,RKE只需要SSH訪問(wèn),它將在繼續(xù)安裝Kubernetes之前安裝Kubernetes支持的最新版本的Docker。
?
如果您想進(jìn)一步減少攻擊面,可以了解一下RancherOS,這是一個(gè)輕量級(jí)Linux操作系統(tǒng),可以將所有進(jìn)程作為Docker容器運(yùn)行。System Docker僅運(yùn)行提供訪問(wèn)所需的最少數(shù)量的進(jìn)程,并在用戶(hù)空間中為實(shí)際工作負(fù)載運(yùn)行Docker實(shí)例。
啟用審核日志(Audit Logging)
Rancher服務(wù)器可在RKE集群內(nèi)部運(yùn)行,因此除了Kubernetes審核日志之外,激活對(duì)服務(wù)器本身的API調(diào)用的審核日志也很重要。此日志將顯示用戶(hù)對(duì)任何集群執(zhí)行的所有操作,包括發(fā)生的事件、執(zhí)行操作的人員、執(zhí)行操作的時(shí)間以及執(zhí)行操作的集群。從有問(wèn)題的服務(wù)器發(fā)送這些日志也很重要。Rancher可以連接到Splunk、Elasticsearch、Fluentd、Kafka或任何系統(tǒng)日志端點(diǎn),您可以從中生成可疑活動(dòng)的儀表盤(pán)和警報(bào)。
?
有關(guān)為Rancher 服務(wù)器啟用審核日志的信息,請(qǐng)參閱我們的文檔。
(https://rancher.com/docs/rancher/v2.x/en/admin-settings/api-audit-log/)
?
有關(guān)為RKE集群?jiǎn)⒂脤徍巳罩镜男畔?#xff0c;請(qǐng)參閱下一節(jié)。
保障安全行動(dòng)正在進(jìn)行中
真正保護(hù)Kubernetes集群需要9項(xiàng)以上的操作,Rancher有一份安全強(qiáng)化指南(https://rancher.com/docs/rancher/v2.x/en/faq/security/)和一份自我評(píng)估指南(https://releases.rancher.com/documents/security/latest/Rancher_Benchmark_Assessment.pdf),涵蓋了CIS基準(zhǔn)用于保護(hù)Kubernetes的100多種控制。
?
如果您十分在意安全性,那么Rancher、RKE以及RancherOS將會(huì)幫助您。
福利
掃描添加小編微信,備注“姓名+公司職位”,加入【云計(jì)算學(xué)習(xí)交流群】,和志同道合的朋友們共同打卡學(xué)習(xí)!
推薦閱讀:
50個(gè)最有價(jià)值的數(shù)據(jù)可視化圖表(推薦收藏)
一鍵免費(fèi)自動(dòng)AI摳圖,效果連PS大哥也點(diǎn)贊!
被V神點(diǎn)贊, 我是如何用五子棋打敗以太坊排名最高的應(yīng)用的? |人物志
那些簡(jiǎn)歷造假拿 Offer 的程序員,后來(lái)都怎么樣了?
華為立 Flag:一年超越三星做全球智能手機(jī)老大!
騙局翻新, 暗網(wǎng)活躍度倍增, 2018加密貨幣犯罪報(bào)告敢看嗎?
春晚鬼畜 B 站日排行最高,趙本山:我的時(shí)代還沒(méi)有結(jié)束!
PDF翻譯神器,再也不擔(dān)心讀不懂英文Paper了
新聞聯(lián)播也可以拿來(lái)做數(shù)據(jù)分析?
喜歡就點(diǎn)擊“好看”吧
總結(jié)
以上是生活随笔為你收集整理的K8S安全军规101:对CNCF最佳实践的扩充的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: oracle表压缩比,oracle的co
- 下一篇: 七台河至昌吉回族自治州车师古道会经过哪些