「三個高危漏洞,全部來自基礎鏡像——應用代碼本身完全干凈。」這是2025年11月一個工程團隊在準備上線時的真實遭遇。他們的ClickHouse容器還沒進生產環境,就被安全團隊攔了下來。
一次典型的企業部署困境
![]()
這個團隊正在Kubernetes上自托管Langfuse,一款開源的大語言模型可觀測性平臺。作為生產準備的一部分,他們把ClickHouse鏡像上傳到了AWS ECR。流水線掃描器返回的結果讓所有人措手不及:三個關鍵漏洞,無一出自ClickHouse本身,全部藏在基礎鏡像里。
安全團隊看到報告后,直接凍結了部署。GitHub Issue #286記錄了這一事件,日期是2025年11月28日。
如果你最近往企業環境推送過容器,這個場景應該不陌生。功能完全正常的部署,不是因為代碼故障被阻,而是掃描器在應用從未調用的包里發現了CVE編號。接下來的一天花在調查上,風險例外申請寫出來,安全團隊依然拒絕——漏洞技術上真實存在,哪怕對你的工作負載實際上毫無影響。
這正是Docker強化鏡像(Docker Hardened Images,簡稱DHI)試圖解決的問題:當安全團隊因CVE卡住容器部署時,如何脫困。本文以ClickHouse為例——它是Docker Hub上被拉取最頻繁的數據庫鏡像之一。
ClickHouse的速度優勢與安全短板
ClickHouse是一款開源的列式數據庫,專為大規模分析型負載設計。它能查詢數十億行數據,在毫秒級返回結果,這是傳統行式數據庫無法匹敵的能力。Cloudflare、Uber、Spotify都將其用于生產環境。Docker Hub上的拉取量超過1億次,已成為需要高吞吐分析的團隊默認基礎設施選項。
但默認鏡像的安全設計優先考慮開發者易用性,而非企業生產環境所需的加固標準。這個缺口正是麻煩的源頭。
ClickHouse采用分層架構。SQL查詢通過HTTP(8123端口)或TCP(9000端口)進入,經優化器解析為抽象語法樹并剪枝后,由流水線執行器接管,分發給并行線程處理。查詢層之下是MergeTree存儲引擎——ClickHouse的核心,以列式.bin文件存儲數據,利用稀疏主鍵索引跳過無關數據塊,無需讀取整列;后臺合并進程持續壓縮數據片段,維持長期查詢性能。
存儲層可插拔:本地磁盤、S3、HDFS或Azure Blob,配合熱/溫/冷分層策略平衡成本與延遲。分布式部署中,ClickHouse Keeper(或ZooKeeper)協調副本復制,分片將數據水平切分至多個節點,使讀寫能力獨立擴展。最終呈現的是一個能處理數億級數據的數據庫系統。
強化鏡像的破局邏輯
Docker強化鏡像的解決思路很直接:不是等掃描器報出問題再修補,而是在構建階段就剔除不必要的組件,縮小攻擊面。對于ClickHouse這類分析型數據庫,這意味著剝離開發工具、調試符號、shell解釋器——這些在運行態分析查詢時根本不需要,卻常年潛伏在標準鏡像里成為CVE載體。
具體到ClickHouse的加固版本,鏡像體積的縮減直接對應著漏洞數量的下降。更少包、更精簡的依賴樹、更可控的供應鏈——這是企業安全團隊愿意簽字的底層邏輯。開發團隊拿到的是功能無損、掃描干凈的鏡像,安全團隊看到的是可審計的精簡清單,部署流程因此重新流動起來。
回到2025年11月那個被攔截的團隊。他們的困境并非技術債務或架構缺陷,而是企業安全流程與開源生態之間的摩擦。標準鏡像為了覆蓋最大用戶群而包容萬物,企業環境為了最小風險敞口而追求極簡——DHI本質上是在這兩個訴求之間架橋。
對于每天處理容器部署的工程師,這件事的價值在于:它把「說服安全團隊放行」這個不確定的人際博弈,轉化為「選擇正確鏡像標簽」的技術決策。省下的時間不是小時,是數天的排查、會議和例外申請。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.