| 模式 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| Windows 驗證 | 集中管理、Kerberos/NTLM、支援審計、多伺服器單一身份 | 需網域環境 | 企業內部、多伺服器、用戶 > 25 |
| SQL Server 驗證 | 簡單、跨平台、舊應用相容 | 密碼管理分散、多伺服器同步困難、無審計 | 獨立應用、用戶少、非網域環境 |
| 混合模式 | 兼顧兩者 | 面臨上述所有缺點 | 過渡期、特定舊模組 |
建議:預設啟用 Windows 驗證;僅在必要時開啟混合模式,並嚴格限制 SQL 登入用途。
sa 或固定 SQL 登入。| 群組命名範例 | 業務含義 |
|---|---|
| SQL_Admins | 系統管理員 (sysadmin) |
| SQL_DBCreators | 建立資料庫 (dbcreator) |
| SQL_SecurityOps | 安全管理 (securityadmin) |
| AppName_ReadOnly | 特定應用唯讀 |
| AppName_ReadWrite | 特定應用讀寫 |
| SQL_DenyAccess | 明確拒絕登入 |
群組名採「前綴_角色」規範,利於辨識與自動化。
-- 建立伺服器登入 (Windows 群組)
CREATE LOGIN [DOMAIN\SQL_Users] FROM WINDOWS;
-- 授予連線權限
GRANT CONNECT SQL TO [DOMAIN\SQL_Users];
-- 加入固定伺服器角色
EXEC sp_addsrvrolemember 'DOMAIN\SQL_Admins', 'sysadmin';
EXEC sp_addsrvrolemember 'DOMAIN\SQL_DBCreators', 'dbcreator';
技巧:用 sp_addsrvrolemember 而非 EM,可直接授權未在 syslogins 列出的群組。
model 中建立使用者定義角色:App_ReadOnly, App_ReadWrite, App_Admin。GRANT SELECT ON SCHEMA::dbo TO App_ReadOnly;sys.server_permissions、sys.database_permissions。安全策略不是一次性專案,而是持續治理流程。以 Windows 整合驗證為基石、角色導向授權為樞紐、Model 資料庫為範本,即可構建既彈性又可審計的 SQL Server 防線。