AAA | Authentication, Authorization, Audit Logging
簡單介紹 AAA(驗證、授權、審計),打造更安全的系統!

What is AAA
AAA 是一套關於「誰、能做什麼、做了什麼」的標準流程,確保系統安全且可溯源。
就像走進銀行金庫:
- 你先證明自己是誰 -> 驗證(Authentication)
- 銀行決定你能否進金庫 -> 授權(Authorization)
- 銀行會記錄你進出過金庫、動過哪些保險箱 -> 審計Audit Logging)
驗證(Authentication)和授權(Authorization)常被混淆,我以前也搞錯過。
搞清楚它們的界線,是打造安全系統的第一步。少了其中任何一個,資安防線就會 ——
◢▆▅▄▃ 崩╰(〒皿〒)╯潰 ▃▄▅▆◣
Authentication - 驗證
Authentication(簡稱 AuthN),是「證明你就是你所說的那個人」。
常見驗證方式:
- 你知道的事:密碼、PIN、金鑰、安全問題(別用問題「你第一隻寵物的名字」當答案噢!)
- 你擁有的物品:身份證、工作卡、安全金鑰、行動裝置
- 你本身的特徵:指紋、臉、聲音、虹膜
建議採用多因素驗證(MFA),就像大門有雙重鎖:指紋不夠,還需虹膜辨識才能進門,大幅提升安全性。
有更多疑問?請參考~~ 電影《Mission: Impossible》~~ OWASP Authentication Cheat Sheet。
Authorization - 授權
Authorization(簡稱 AuthZ)是「你被允許做哪些事」。
通過身份驗證後,系統會根據你的角色與權限,決定能存取哪些資源。 常見的授權實作如下:
- 角色權限(RBAC):例如員工、經理、系統管理員
- 資源存取控制清單(ACL):針對每個檔案或 API 設定權限
- 條件式規則:根據地理位置、時間或裝置來源決定能否操作(像 Netflix 根據地區顯示不同影片)
進階概念:
- 零信任(Zero Trust):不信任任何用戶,每次操作都需驗證。
- 最小權限原則:只給予完成任務所需的最低權限,例如實習生無法刪除資料庫。
- 限時授權:權限有時間限制,過期後自動失效,減少風險。
Audit Logging - 審計
Audit Logging(或稱為 Accounting)記錄「誰在什麼時間做了什麼」。
這一步常被忽略,但它是優秀系統的核心支柱。
它不只是「流水帳」,更是資安事件發生時的真相來源,幫助追蹤責任與還原事件。
就像是飛機上的黑匣子!
在帳號系統中,Audit Logging 通常包括:
- 登入與登出紀錄
- API 存取日誌
- 權限變更紀錄
- 管理員操作追蹤
換句話說,它能回答這些問題:
- 誰刪除了那筆資料?
- 誰在凌晨三點登入了伺服器?
- 誰把客戶的錢轉走再轉回來?
沒有這層紀錄,整個系統就像沒有監視器的銀行:出了事,每個人都會說不是我。
小提醒:日誌需妥善儲存並防止篡改,確保可信度。
一點例子
例子 1
- 你登入 Netflix,系統確認你是帳號主人。 → 驗證 AuthN
- Netflix 檢查你的方案與地區,只開放 1080p 的台灣片庫 → 授權 AuthZ
- Netflix 紀錄你昨天看了三集《The Big Bang Theory》 → 審計 Audit Logging
例子 2
- 你呼叫 API
/users/login→ 驗證帳號密碼(AuthN) - 後端發出 JWT Token,限制角色
user只能呼叫/profile而非/admin→ (AuthZ) - 系統在資料庫的
audit_logs表裡記下"user_id=123"於2025-10-12 19:45呼叫了/profile/update→ (Audit Logging)
小結
AAA 是系統安全的三層保險:
- AuthN:我是不是我
- AuthZ:我能不能做
- Audit Logging:我做了什麼
理解這三個「A」,能讓你的系統更安全,無論是個人帳號還是企業應用。
試著在你的專案中實作 AAA,打造固若金湯的資安防線吧!