在系統開發的初期,我們常常會為了求快,自己刻一套會員註冊、登入系統。但隨著產品線增加、微服務架構的導入,如果每個服務都自己實作一套登入機制,不僅會陷入「重複造輪子」的泥淖,更會帶來嚴重的資安隱患。
某科技廠內部有一套行之多年的地端 AD,員工每天早上登入辦公室電腦都靠它。但這幾年陸續引進了許多新系統,這些新系統不吃傳統 AD 的 Kerberos 協議,結果就是每個系統都自帶一套帳號密碼資料庫。
在面對 ISO 27001 稽核時,稽核員發現有員工離職了一個月,雖然 AD 帳號停用了,但外部打卡系統的權限卻「漏砍」了
| 方法 | 說明 | 安全考量 |
|---|---|---|
| 自助式 (Self-service) | 使用者透過入口網站申請權限;需經主管/資料擁有者核准 | 存在橡皮圖章式 (rubber-stamping,盲目放行) 審批的風險;需要強大的核准工作流程 |
| 自動化/基於規則 (Automated / Rule-based) | 根據角色、部門或屬性自動授予存取權限 | 速度快,但如果規則定義得過於寬鬆,可能會導致過度授權 |
| 委派式 (Delegated) | 由被指定的管理員為其團隊成員配置存取權限 | 若受委派者缺乏資安意識,將會帶來風險 |
| 集中式 IAM (Centralized IAM) | 由單一的身分識別管理系統 (IAM) 跨所有應用程式統一進行權限派送配置 | 給予最佳的掌控度與能見度;建置成本較高 |
| 實務做法 | 說明 |
|---|---|
| 每個服務專屬唯一 (Unique per service) | 每個應用程式或服務都應擁有自己的專屬帳戶 — 嚴禁共用 |
| 最小權限 (Least privilege) | 僅賦予該服務運作所必須的特定權限 |
| 密碼輪替 (Password rotation) | 自動化進行憑證的定期輪替更換 (使用機密管理工具) |
| 機密管理 (Secrets management) | 將憑證儲存在金鑰儲存庫 (vaults,例如:HashiCorp Vault、AWS Secrets Manager) 中,絕對不要寫死在程式碼裡 |
| 監控機制 (Monitoring) | 針對異常的服務帳戶活動設定並觸發警報 |
| 文件記錄 (Documentation) | 對每一個服務帳戶記錄其設立目的、擁有者以及依賴它的系統/元件 |
| 生命週期管理 (Lifecycle management) | 當相關聯的應用程式退役時,同步註銷該服務帳戶 |
為什麼需要覆核
| 問題點 | 說明 |
|---|---|
| 權限蠕變 (Privilege creep) | 當使用者轉換角色時,逐漸累積新的存取權限,卻未被撤銷舊有職務不再需要的權限 |
| 孤兒帳戶 (Orphaned accounts) | 員工離職後卻依然保持著啟用狀態的帳戶 |
| 法規遵循 (Compliance) | 許多法規要求必須進行定期的存取權限審查 (列如:SOX、HIPAA、PCI DSS) |
| 內部威脅 (Insider threat) | 過大的存取權限增加了遭惡意內部人士濫用時所可能造成的損害 |
Microsoft 聯邦身份識別模式
https://learn.microsoft.com/zh-tw/azure/architecture/patterns/federated-identity
Microsoft Entra ID 將認證委派給集中式 IDP