現代企業網路中,網路安全的概念正迎來劇烈的轉捩點。本篇文章將以Google的 BeyondCorp 計畫為例,針對擺脫邊界防禦與 零信任網路架構 的本質,進行非常詳細的解說。
1. 傳統邊界型防禦的極限與崩壞
過去,企業的IT基礎設施是基於「內部」與「外部」這種簡單的二元論來設計的。這就是 邊界型防禦 (Perimeter Security)。
1.1 邊界型防禦的基本模型
在邊界型防禦中,會使用防火牆、VPN、IPS/IDS等安全設備,在公司內部網路(安全的內部)與網際網路(危險的外部)之間建立起堅固的牆。原則上,能夠通過這道牆的使用者與裝置會被視為「可信任的」,並被允許存取公司內部網路中的各種資源。
graph TD
subgraph "外部網路(不可信)"
A["遠端使用者"]
B["網際網路"]
end
subgraph "企業網路(可信)"
D["內部應用程式 1"]
E["內部應用程式 2"]
F["資料庫"]
end
C["防火牆 / VPN 閘道"]
A --> C
B --> C
C --> D
C --> E
C --> F
1.2 迎來極限的背景
然而,隨著雲端運算的普及、遠端工作的常態化以及SaaS應用程式的擴大使用,這個模型正逐漸瓦解。
- 邊界的模糊化 :資料與應用程式不再只配置於地端的資料中心,而是分散於多個雲端環境中。要明確定義應該守護的「邊界」在何處,已經變得十分困難。
- 內部威脅的嚴重化 :對於一旦入侵到內部的攻擊者(惡意軟體或惡意內部人員)毫無防備能力。由於橫向移動(Lateral Movement),存在著損害擴大的風險。
- VPN的效能與安全課題 :將所有流量透過VPN路由至公司內部網路的方式,會導致頻寬受到擠壓與延遲,顯著損害使用者體驗。
2. 零信任的定義(NIST SP 800-207)
零信任不僅僅是產品或技術,而是對安全的全新概念與架構框架。美國國家標準暨技術研究院(NIST)發布的 NIST SP 800-207 ,提供了零信任的標準定義。
零信任的基本理念是「 Never Trust, Always Verify (永不信任,始終驗證)」。無論網路位置(公司內或公司外)為何,預設不信任任何事物。
NIST SP 800-207 中的7個基本原則
- 將所有資料來源與運算服務視為資源。
- 無論網路位置為何,保護所有的通訊。
- 對個別企業資源的存取,是以工作階段為單位進行允許。
- 對資源的存取,由客戶端的身分識別、應用程式、要求的資產狀態,以及其他行為屬性或環境屬性的動態原則來決定。
- 監控並測量所有擁有及相關資產的完整性與安全狀態。
- 所有資源的驗證與授權皆為動態進行,並在允許存取前嚴格執行。
- 盡可能收集有關資產、網路基礎設施與通訊現狀的資訊,並活用於改善安全措施。
3. Google BeyondCorp:零信任的具體實現
Google以2009年被稱為極光行動的大規模網路攻擊為契機,從根本重新審視了公司內部網路的架構。其結果誕生的就是 BeyondCorp 。
BeyondCorp廢除了特權性的企業網路,將存取控制從「網路的邊界」轉移至「個別的使用者與裝置」。
3.1 BeyondCorp的架構
以下的Mermaid圖表顯示了BeyondCorp的基本存取控制流程。
graph TD
User["使用者 / 裝置"]
AccessProxy["存取代理 (Envoy / IAP)"]
AccessControl["存取控制引擎"]
DeviceInventory["裝置盤點清單"]
UserDB["使用者與群組資料庫 (IAM)"]
TrustInferer["信任推論器"]
App["內部應用程式"]
User -->|"請求存取"| AccessProxy
AccessProxy -->|"查詢原則"| AccessControl
AccessControl -.->|"取得使用者狀態"| UserDB
AccessControl -.->|"取得裝置狀態"| DeviceInventory
AccessControl -.->|"取得信任分數"| TrustInferer
AccessControl -->|"決策 (允許/拒絕)"| AccessProxy
AccessProxy -->|"轉發 (若允許)"| App
3.2 構成要素的詳細說明
- Access Proxy :作為所有應用程式入口的反向代理。負責執行TLS終止、負載平衡,以及最重要的存取控制執行(Enforcement)。
- Device Inventory :企業管理的全部裝置資料庫。持續收集憑證、OS版本、修補程式套用狀況、磁碟加密狀態等資訊,並管理其狀態。
- User and Group Database (IAM) :管理使用者的身分識別、所屬群組、角色等資訊。利用SAML或OIDC提供強大的驗證(如MFA)。
- Trust Inferer :即時分析裝置的盤點資料與使用者的情境資訊,算出目前的「信任度分數」。
- Access Control Engine :接收來自Access Proxy的請求,對照發出請求的使用者、裝置的信任度,以及目標應用程式的資源需求,決定允許或拒絕存取的原則引擎。
4. 信任度評估與風險分數計算模型
在零信任中,允許存取的判斷並非基於靜態規則,而是基於動態的風險分數來進行。
使用者 $U$ 與裝置 $D$ 在存取資源 $R$ 時的整體風險分數 $Risk(U, D, R)$ ,可定義為各種要素的函數。
$ Risk(U, D, R) = w_1 \cdot P_{user}(U) + w_2 \cdot P_{device}(D) + w_3 \cdot P_{context}(C) $
這裡:
- $P_{user}(U)$ 是使用者的風險設定檔(驗證強度、MFA狀態、過去的可疑行為等)。
- $P_{device}(D)$ 是裝置的風險設定檔(OS漏洞、疑似感染惡意軟體、憑證有效性等)。
- $P_{context}(C)$ 是情境風險(來源IP位址、時間帶、地理位置等)。
- $w_i$ 是各要素的權重係數($\sum w_i = 1$)。
信任度 $Trust$ 表現為風險的倒數,或者是從一定閾值減去風險後的值。 例如,允許存取的條件可公式化如下。
$ Trust(U, D, R) = 1 - Risk(U, D, R) \geq Threshold(R) $
這裡 $Threshold(R)$ 是根據目標資源 $R$ 的機密性所設定的要求信任度等級。對機密性較高的財務資料進行存取時,會設定較高的閾值。
5. 微切分(Microsegmentation)的角色
在建構零信任網路時不可或缺的另一個要素是 微切分 (Microsegmentation)。
它比傳統基於VLAN的網路區段劃分更加精細,以工作負載、應用程式為單位,或是程序(Process)為單位來控制通訊。藉此,即使萬一某個元件遭到入侵,也能將對其他元件的橫向移動(Lateral Movement)抑制在最小限度。
利用軟體定義網路(SDN)或基於身分的防火牆,嚴格定義各元件間的通訊原則(誰可以和誰通訊,以及使用哪個連接埠/協定),並完全阻斷不必要的通訊路徑。
6. 實作範例:IAM原則與代理設定
在這裡,我們展示用來實作零信任架構的具體設定概念範例。
6.1 IAM原則的JSON範例(類似AWS IAM)
以下的JSON是一個原則範例,僅允許來自特定IP位址範圍且經過MFA驗證的使用者,存取特定資源。在零信任中,會像這樣精細地設定基於情境的條件。
| |
(註: custom:DeviceTrustScore 是一個概念上的自訂條件金鑰。)
6.2 使用Envoy代理的存取控制概念範例
在作為Access Proxy運作的Envoy中,會與外部的驗證・授權服務(ExtAuthz)整合來實作存取控制。
| |
透過此設定,Envoy在路由所有HTTP請求前,會將請求的詮釋資料發送給 access_control_engine_cluster (存取控制引擎),以查詢是否允許授權。
總結
轉移至零信任網路架構絕非一朝一夕能完成。這是一項長期的工作,需要與現有的傳統系統整合、組織文化的變革,以及持續的監控與調整。
然而,正如Google的 BeyondCorp 所證明的,透過實作基於「身分與情境」而非「網路位置」的存取控制,在雲端時代面對日益多樣化的威脅時,將能夠建構出更具韌性與彈性的安全基礎。
