Complete Mediation 完全仲裁原則 確保每次存取請求都經過嚴格安全驗證的核心機制 在現代資訊安全的設計哲學中, Complete Mediation(完全仲裁原則) 是由 Jerome Saltzer 與 Michael Schroeder 於 1975 年在其經典論文《The Protection of Information in Computer Systems》中所提出的八大安全設計原則之一。這項原則看似直觀,卻往往是系統在面對複雜存取情境時最容易忽略的防線。一旦任何一次存取請求未經驗證便被放行,就可能成為攻擊者藉以突破整個防護體系的缺口。 本文將深入解析完全仲裁原則的核心概念、常見的違反情境、以及如何透過實際程式碼與架構設計確保每一次存取都受到嚴格管控,協助開發者在日常工程實踐中真正落實這項關鍵安全原則。 什麼是 Complete Mediation?核心概念解析 Complete Mediation(完全仲裁) 的核心定義是:系統中的 每一次 對受保護資源的存取請求,都必須通過存取控制機制的完整驗證,不得因任何理由(如快取、效能考量或假設前次已驗證)而跳過這道程序。這與「一次驗證、終身信任」的思維完全相反。 Saltzer 與 Schroeder 在原始論文中以作業系統的檔案存取為例:當使用者第一次開啟檔案時,系統會驗證其權限;但若系統在後續操作中信賴了已快取的權限結果,卻未察覺使用者的存取權限已在此期間被撤銷,便構成了對此原則的違反。這種場景在現代 Web 應用程式、微服務架構與 API 設計中同樣普遍存在。 📌 原則核心三要素 每次(Every time) :不存在「免驗證的第二次請求」,每一次存取皆需重新驗證。 每個主體(Every subject) :無論是人類使用者、服務帳號或內部系統元件,皆需受到相同的驗證規則約束。 每個物件(Every object) :所有受保護的資源,包含 API 端點、檔案、資料庫記錄,皆在保護範疇之內。 常見的違反情境:快取權限與信任假設的陷阱 違反完全仲裁原則的情況往往不是刻意為之,而是來自 效能最佳化的過度妥協 或對安全邊界的錯誤假設。以下是幾個高頻發生的違反情境,值得開發者特別留...