SQL Server 安全性架構採分層防禦模型,每一層皆需通過身分驗證才能進入下一層。本文系統闡述四大安全層級、兩種驗證模式、Windows 整合驗證與 SQL Server 驗證的交互關係,為 DBA 建立完整安全治理認知框架。
四層安全防禦架構

- Windows 作業系統層: 登入 Windows 需帳號/密碼,為最外層防線。
- SQL Server 實例層: 登入 SQL Server 實例,受驗證模式控制。
- 資料庫層: 連線至特定資料庫,需對應資料庫使用者與權限。
- 物件/資料列層: 執行 DML/DDL、存取特定資料行/列,受權限、RLS、資料行權限控制。
身分驗證模式
- Windows 驗證模式: 僅允許 Windows/AD 帳號登入,利用 Kerberos/NTLM 權杖,免傳遞密碼,支援群組授權,安全性最高,為預設與推薦模式。
- 混合模式: 同時允許 Windows 驗證與 SQL Server 驗證(帳號/密碼儲於 master 資料庫),相容舊應用與非 Windows 用戶端。
驗證流程與權杖傳遞
- 用戶端連線 → 提供認證(Windows 權杖或 SQL 登入帳密)。
- SQL Server 驗證登入有效性 → 產生 登入權杖(含 SID、群組成員資格、伺服器角色)。
- 切換資料庫內容 → 對應 資料庫使用者 → 產生 使用者權杖(含資料庫角色、結構描述擁有權、物件權限)。
- 執行陳述式 → 引擎依權杖進行權限檢查(GRANT/DENY/REVOKE)。
關鍵安全物件與管理要點
- 登入: 伺服器層級主體,對應 Windows 使用者/群組或 SQL 登入。
- 伺服器角色: sysadmin、securityadmin、serveradmin 等固定角色,不可自訂。
- 資料庫使用者: 資料庫層級主體,對應登入,可無登入(含資料庫專用)。
- 資料庫角色: 固定角色 + 使用者自訂角色,彈性授權。
- 結構描述: 物件容器,擁有者可控制內含物件權限。
- 權限層級: 伺服器/資料庫/結構描述/物件/資料行/資料列 (RLS) 多層次授權。
最佳實踐建議
- 生產環境強制啟用 Windows 驗證模式,停用 `sa` 或重命名並設強密碼。
- 遵循 最小權限原則:服務帳戶、應用程式帳戶僅授予必要資料庫角色。
- 善用 結構描述分離 替代使用者擁有物件,簡化權限管理。
- 定期稽核
sys.server_principals、sys.database_principals、sys.server_permissions、sys.database_permissions。
- 啟用 SQL Server 稽核 記錄登入失敗、結構變更、敏感資料存取。