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