Istio 首次安全评估结果公布
本文譯自 Istio 社區(qū)官方博客?Announcing the results of Istio’s first security assessment[1],作者 Neeraj Poddar,譯者宋凈超。
Istio 服務(wù)網(wǎng)格已在各行各業(yè)獲得廣泛的生產(chǎn)應(yīng)用。該項(xiàng)目的成功,以及其在基礎(chǔ)設(shè)施中執(zhí)行關(guān)鍵安全策略的重要用途,都需要對(duì)與該項(xiàng)目相關(guān)的安全風(fēng)險(xiǎn)進(jìn)行公開(kāi)和中立的評(píng)估。
為了實(shí)現(xiàn)這一目標(biāo),Istio 社區(qū)去年與?NCC 集團(tuán)[2]簽約,對(duì)該項(xiàng)目進(jìn)行第三方安全評(píng)估。審查的目標(biāo)是 “確定與 Istio 代碼庫(kù)有關(guān)的安全問(wèn)題,突出管理員常用的高風(fēng)險(xiǎn)配置,并提供關(guān)于安全功能是否充分解決它們旨在提供的問(wèn)題的觀點(diǎn)”。
NCC 集團(tuán)在 Istio 社區(qū)的領(lǐng)域?qū)<业膮f(xié)作下,進(jìn)行了為期五周的審查。在這篇博客中,我們將研究報(bào)告的主要發(fā)現(xiàn),為實(shí)施各種修復(fù)和建議而采取的行動(dòng),以及我們對(duì) Istio 項(xiàng)目的持續(xù)安全評(píng)估和改進(jìn)的行動(dòng)計(jì)劃。你可以下載并閱讀安全評(píng)估報(bào)告的未刪節(jié)版本[3]。
范圍和主要發(fā)現(xiàn)
本次評(píng)估從整體上評(píng)估了 Istio 架構(gòu)的安全相關(guān)問(wèn)題,重點(diǎn)是 Istiod(Pilot)、Ingress/Egress 網(wǎng)關(guān)等關(guān)鍵組件,以及 Istio 作為數(shù)據(jù)平面代理的整體 Envoy 使用情況。此外,還審計(jì)了 Istio 的文檔,包括安全指南,以確保其正確性和清晰性。該報(bào)告是針對(duì) Istio 1.6.5 版本編制的,此后,隨著新漏洞的披露,產(chǎn)品安全工作組發(fā)布了幾個(gè)安全版本,同時(shí)還針對(duì)新報(bào)告中提出的問(wèn)題進(jìn)行了修復(fù)。
該報(bào)告的一個(gè)重要結(jié)論是,審計(jì)人員在 Istio 項(xiàng)目中沒(méi)有發(fā)現(xiàn) “關(guān)鍵 “問(wèn)題。這一發(fā)現(xiàn)驗(yàn)證了 Istio 的產(chǎn)品安全工作組(PSWG)實(shí)施的持續(xù)和積極的安全審查和漏洞管理流程。對(duì)于報(bào)告中提到的其余問(wèn)題,PSWG 開(kāi)始著手解決,我們很高興地報(bào)告,所有標(biāo)為 “高 “的問(wèn)題和幾個(gè)標(biāo)為 “中 / 低 “的問(wèn)題在報(bào)告發(fā)布后已經(jīng)得到解決。
該報(bào)告還圍繞創(chuàng)建一個(gè)加固指南提出了戰(zhàn)略建議,現(xiàn)在可以在我們的安全最佳實(shí)踐指南[4]中找到。這是一份全面的文件,匯集了 Istio 社區(qū)的安全專家和在生產(chǎn)中運(yùn)行 Istio 的行業(yè)領(lǐng)導(dǎo)者的建議。我們正在努力為在安全環(huán)境中安裝 Istio 創(chuàng)建一個(gè)有見(jiàn)地的、強(qiáng)化的安全配置文件,但在這期間,我們建議用戶遵循安全最佳實(shí)踐指南,配置 Istio 以滿足他們的安全需求。說(shuō)到這里,讓我們看看對(duì)報(bào)告中提出的各種問(wèn)題的分析和解決。
解決方法和心得
無(wú)法保證控制面網(wǎng)絡(luò)通信的安全
該報(bào)告標(biāo)記了舊版本的 Istio 中可用的配置選項(xiàng),以控制如何保證控制面的通信安全。自 1.7 以來(lái),Istio 默認(rèn)保護(hù)所有控制面通信的安全,報(bào)告中提到的許多管理控制面加密的配置選項(xiàng)不再需要了。
報(bào)告中提到的調(diào)試端點(diǎn)是默認(rèn)啟用的(從 Istio 1.10 開(kāi)始),允許用戶使用 istioctl 工具調(diào)試他們的 Istio 服務(wù)網(wǎng)格。它可以通過(guò)設(shè)置環(huán)境變量?ENABLE_DEBUG_ON_HTTP?為 FALSE 來(lái)禁用,正如安全最佳實(shí)踐指南中提到的。此外,在即將到來(lái)的版本(1.11)中,這個(gè)調(diào)試端點(diǎn)默認(rèn)是安全的,需要一個(gè)有效的 Kubernetes 服務(wù)賬戶令牌才能訪問(wèn)。
缺少安全相關(guān)的文檔
報(bào)告指出了與 Istio 1.6 一起發(fā)布的安全相關(guān)文檔的差距。此后,我們創(chuàng)建了詳細(xì)的安全最佳實(shí)踐指南,并提出建議,以確保用戶能夠安全地部署 Istio,以滿足他們的要求。今后,我們將繼續(xù)用更多的加固建議來(lái)充實(shí)這個(gè)文檔。我們建議用戶關(guān)注該指南的更新。
缺乏 VirtualService Gateway 字段驗(yàn)證使請(qǐng)求被劫持
對(duì)于這個(gè)問(wèn)題,報(bào)告使用了一個(gè)有效但允許的 Gateway 配置,可能導(dǎo)致請(qǐng)求被錯(cuò)誤地路由。與 Kubernetes 的 RBAC 類似,Istio 的 API,包括 Gateway,可以根據(jù)你的要求調(diào)整為允許性或限制性。然而,該報(bào)告浮現(xiàn)了我們的文檔中與最佳實(shí)踐和指導(dǎo)用戶保護(hù)其環(huán)境有關(guān)的缺失環(huán)節(jié)。為了解決這些問(wèn)題,我們?cè)谖覀兊陌踩罴褜?shí)踐指南中增加了一個(gè)章節(jié),其中包括安全運(yùn)行網(wǎng)關(guān)[5]的步驟。特別是描述在網(wǎng)關(guān)資源的主機(jī)規(guī)范中使用命名空間前綴[6]的部分,我們強(qiáng)烈建議加強(qiáng)你的配置,防止這種類型的請(qǐng)求劫持。
生成的 Ingress Gateway 配置使請(qǐng)求被劫持
報(bào)告指出,在使用默認(rèn)機(jī)制,即在網(wǎng)關(guān)資源中通過(guò)標(biāo)簽跨命名空間選擇網(wǎng)關(guān)工作負(fù)載時(shí),可能出現(xiàn)請(qǐng)求劫持。這種行為是默認(rèn)選擇的,因?yàn)樗试S將管理網(wǎng)關(guān)和 VirtualService 資源委托給應(yīng)用程序團(tuán)隊(duì),同時(shí)允許運(yùn)維團(tuán)隊(duì)集中管理入口網(wǎng)關(guān)工作負(fù)載,以滿足其獨(dú)特的安全要求,例如在專用節(jié)點(diǎn)上運(yùn)行。正如報(bào)告中所強(qiáng)調(diào)的,如果這種部署拓?fù)浣Y(jié)構(gòu)在你的環(huán)境中不是一個(gè)要求,強(qiáng)烈建議將網(wǎng)關(guān)資源與你的網(wǎng)關(guān)工作負(fù)載放在一起,并將環(huán)境變量?PILOT_SCOPE_GATEWAY_TO_NAMESPACE?設(shè)置為 true。
請(qǐng)參考網(wǎng)關(guān)部署拓?fù)浣Y(jié)構(gòu)指南[7],了解 Istio 社區(qū)推薦的各種部署模式。此外,正如安全最佳實(shí)踐指南[8]中提到的,網(wǎng)關(guān)資源的創(chuàng)建應(yīng)使用 Kubernetes RBAC 或其他政策執(zhí)行機(jī)制進(jìn)行訪問(wèn)控制,以確保只有授權(quán)實(shí)體可以創(chuàng)建。
其他中等和低嚴(yán)重程度的問(wèn)題
有兩個(gè)中等嚴(yán)重程度的問(wèn)題被報(bào)告,與項(xiàng)目?jī)?nèi)不同級(jí)別暴露的調(diào)試信息有關(guān),這些信息可以被用來(lái)獲取敏感信息或策劃拒絕服務(wù)(DOS)攻擊。雖然 Istio 默認(rèn)啟用了這些調(diào)試接口,用于剖析或啟用 “istioctl “等工具,但如上所述,可以通過(guò)將環(huán)境變量?ENABLE_DEBUG_ON_HTTP?設(shè)置為 FALSE 來(lái)禁用它們。
報(bào)告正確地指出,Istio 提供的默認(rèn)鏡像中安裝的各種實(shí)用程序,如?sudo、tcpdump?等,可能導(dǎo)致特權(quán)升級(jí)攻擊。提供這些工具是為了幫助運(yùn)行時(shí)調(diào)試流經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)包,建議用戶在生產(chǎn)中使用這些鏡像的加固版本[9]。
該報(bào)告還提出了一個(gè)已知的架構(gòu)限制,即任何基于 sidecar 代理的服務(wù)網(wǎng)格實(shí)現(xiàn)都使用?iptables?來(lái)攔截流量。這種機(jī)制很容易被?sidecar 代理繞過(guò)[10],這對(duì)安全環(huán)境來(lái)說(shuō)是一個(gè)有效的問(wèn)題。它可以通過(guò)遵循安全最佳實(shí)踐指南的深入防御[11]建議來(lái)解決。我們也在與 Kubernetes 社區(qū)合作,研究更安全的選項(xiàng)。
有用和安全之間的權(quán)衡
你可能已經(jīng)注意到了評(píng)估結(jié)果和為解決這些問(wèn)題提出的建議中的一個(gè)趨勢(shì)。Istio 提供了各種配置選項(xiàng),以根據(jù)您的要求創(chuàng)建一個(gè)更安全的安裝,我們還推出了一個(gè)全面的安全最佳實(shí)踐指南,供用戶遵循。由于 Istio 在生產(chǎn)中被廣泛采用,對(duì)我們來(lái)說(shuō),在切換到安全默認(rèn)值和現(xiàn)有用戶在升級(jí)時(shí)可能出現(xiàn)的遷移問(wèn)題之間,是一個(gè)權(quán)衡。Istio 產(chǎn)品安全工作組評(píng)估了這些問(wèn)題中的每一個(gè),并在給我們的用戶一些版本選擇安全配置和遷移他們的工作負(fù)載后,創(chuàng)建了一個(gè)行動(dòng)計(jì)劃,以逐一啟用安全默認(rèn)。
最后,在經(jīng)歷了中立的安全評(píng)估期間和之后,我們有幾個(gè)教訓(xùn)。其中最主要的是確保我們的安全實(shí)踐是強(qiáng)大的,以快速響應(yīng)評(píng)估結(jié)果,更重要的是在保持我們的升級(jí)標(biāo)準(zhǔn)不受影響的情況下進(jìn)行安全改進(jìn)。
為了繼續(xù)這一努力,我們一直在 Istio 產(chǎn)品安全工作組中尋求反饋和參與,所以請(qǐng)加入我們的公開(kāi)會(huì)議[12],提出問(wèn)題或了解我們?yōu)楸3?Istio 的安全所做的工作!
引用鏈接
[1]?Announcing the results of Istio’s first security assessment:?https://istio.io/latest/blog/2021/ncc-security-assessment/
[2]?NCC 集團(tuán):?https://www.nccgroup.com/
[3]?安全評(píng)估報(bào)告的未刪節(jié)版本:?https://istio.io/latest/blog/2021/ncc-security-assessment/NCC_Group_Google_GOIST2005_Report_2020-08-06_v1.1.pdf
[4]?安全最佳實(shí)踐指南:?https://istio.io/latest/docs/ops/best-practices/security/
[5]?網(wǎng)關(guān):?https://istio.io/latest/docs/ops/best-practices/security/#gateways
[6]?使用命名空間前綴:?https://istio.io/latest/docs/ops/best-practices/security/#avoid-overly-broad-hosts-configurations
[7]?網(wǎng)關(guān)部署拓?fù)浣Y(jié)構(gòu)指南:?https://istio.io/latest/docs/setup/additional-setup/gateway/#gateway-deployment-topologies
[8]?安全最佳實(shí)踐指南:?https://istio.io/latest/docs/ops/best-practices/security/#restrict-gateway-creation-privileges
[9]?加固版本:?https://istio.io/latest/docs/ops/configuration/security/harden-docker-images/
[10]?sidecar 代理繞過(guò):?https://istio.io/latest/docs/ops/best-practices/security/#understand-traffic-capture-limitations
[11]?深入防御:?https://istio.io/latest/docs/ops/best-practices/security/#defense-in-depth-with-networkpolicy
[12]?加入我們的公開(kāi)會(huì)議:?https://github.com/istio/community/blob/master/WORKING-GROUPS.md
加入云原生社區(qū) Istio SIG
掃描下面的二維碼加入云原生社區(qū) Istio SIG(微信群),了解更多 Istio 實(shí)踐案例,并與 Istio 專家、愛(ài)好者們共同交流。
點(diǎn)擊下方 “閱讀原文” 查看更多
總結(jié)
以上是生活随笔為你收集整理的Istio 首次安全评估结果公布的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Blazor+Dapr+K8s微服务之服
- 下一篇: 如何通过提问成为更好的开发人员