🎋 竹子日誌

零信任

最近在研究一個東西,越挖越覺得有趣,想先寫一篇科普當鋪陳。

主題是「零信任」。

朋友聽到的第一反應是:「這是什麼?聽起來很邊緣人欸,誰都不信任?」

欸!不是啦,但⋯⋯其實你也沒說錯XD

邊界防禦:把系統當成一座城堡

先講傳統的資安思維。

以前我們保護系統,就像蓋一座城堡。

外面挖護城河、架高牆、城門派士兵站崗。只要你通過城門的檢查,進到城裡,恭喜,你就是自己人了。

城裡的酒館、糧倉、金庫,你想去哪就去哪,沒人再攔你。

這就是所謂的「邊界防禦」。VPN 就是那道城門,內網就是城裡。

聽起來很合理吧?

但問題來了。

城牆早就不存在了,你還在守城門

現在的系統早就不是一座城堡了。

微服務架構下,一個產品背後可能是幾十個、上百個服務,散落在不同的雲、不同的 cluster,彼此瘋狂通訊。

人在咖啡廳、在家裡、在高鐵上,用自己的手機、公司的筆電輪流連線。

城牆早就不存在了,你還在守城門,守個寂寞。

更慘的是,只要有一個壞人混進城門——偷了通行證也好、內部叛變也好——整座城對他來說就是吃到飽。

他可以在「可信任」的內網裡自由掃描,一台打穿再打下一台,這招叫「橫向移動」。

這幾年一堆重大資安事件,都不是城牆被轟破,而是有人拿著合法的鑰匙走進來,然後在裡面橫著走。

內網 ≠ 安全,這件事大家終於痛過才學會。

零信任的核心:Never trust, always verify

零信任(Zero Trust)的核心就一句話:

Never trust, always verify.

永不信任,持續驗證。

我不管你人在城裡還是城外,我不管你昨天有沒有驗證過,你每一次要拿東西,都給我重新證明你是誰、你有沒有資格。

飯店房卡:每一道門都是一次驗證

我覺得最貼切的比喻是飯店房卡。

你入住的時候,櫃檯驗你的證件,給你一張房卡。

這張房卡只能開你自己的房間,只能搭到你住的樓層,只能在退房日之前使用。

你想去頂樓行政酒廊?抱歉,你的卡刷不進去。

每一道門,都是一次驗證。這就是最小權限:你的工作只需要碰 A 服務,那就只給你 A 服務的門禁,多一分都不給。沒被明確允許的,一律拒絕。

更狂的一招:讓整棟飯店直接隱形

但零信任玩到極致,還有更狂的一招。

不只是每道門都要刷卡——

是讓整棟飯店直接隱形。

——

什麼意思?

傳統的服務要對外提供功能,就得在網路上開一個 port,像是在路邊開一扇門。

門開在那裡,路過的人都看得到。壞人拿著掃描工具在網路上晃一圈,馬上知道你家有幾扇門、哪扇門看起來比較舊、哪扇門的鎖有已知漏洞。

而零信任的進階做法是:服務不開任何門。

對,一個 port 都不開。

所有連線都是由服務自己「從裡面往外撥出去」的,外面沒有任何入口可以敲。

沒有憑證的人來掃描,得到的結果是——什麼都沒有。不是「拒絕連線」,是連這個服務存在的痕跡都找不到。

你不能攻擊一個你看不見的東西。

判斷依據從「你從哪裡來」換成「你是誰」

那授權的人怎麼連?

關鍵在於,判斷依據從「你從哪裡來」變成「你是誰」。

以前的網路世界,IP 位置就是你的身份證。但 IP 會變、會被偽造、會共用,拿地址當身份,本來就很荒謬。

零信任改用密碼學的身份:每個服務、每台裝置、每個使用者,都有自己的憑證。連線的兩端互相亮出憑證驗明正身,中間再由一套規則決定「這個身份能不能碰這個服務」。

你要連的不再是某個 IP 加 port,而是一個「有名字的服務」。整段路徑端對端加密,中間經過誰都拆不開。

爆炸半徑:就算他進來了,也走不了多遠

這樣設計最爽的地方在哪?

爆炸半徑。

假設最壞的狀況真的發生了,某台服務被打穿。攻擊者興奮地環顧四周,準備開始橫向移動——

然後發現,什麼都看不到。

他能碰的,只有這台服務原本被授權存取的那幾扇門。其他服務對他來說根本不存在。

與其賭壞人進不來,不如設計成「就算他進來了,也走不了多遠」。

這才是成熟的資安態度。

導入零信任,最難的其實是心智模型

也許有人會說,這樣不是很麻煩嗎?

老實說,導入確實是一場長期抗戰。

最難的不是技術,是心智模型的轉換——整個團隊要從「IP 思維」轉到「身份思維」,一堆老系統等著你去踩坑,開防火牆 port 的工單文化也要跟著改。

但體感上反而常常更順:使用者不用再連那個慢到懷疑人生的 VPN,工程師不用再為了開一個 port 跑流程,權限用宣告式的規則管理,誰能連誰,一目瞭然。

——

寫到這裡先收個尾。

最近和朋友把上面講的這一整套——隱形服務、憑證身份、細粒度授權、端對端加密——全部包好了,甚至可以直接嵌進應用程式裡,讓你的服務天生就活在這個看不見的網路上。

我最近就在玩這個,踩了一些坑,也挖到一些寶。

這篇先當個鋪陳,到底實際故事發生什麼,之後找時間再寫吧

留言