安全管理三層次模型
SQL Server 安全管理採分層架構,由外而內逐層把關:
- 登入帳戶層:能否進入 SQL Server 伺服器
- 資料庫存取層:能否連接特定資料庫、伺服器/資料庫角色權限
- 物件權限層:對資料庫內部物件(資料表、檢視、預存程序)的具體操作權限
第一層:登入帳戶管理
兩種驗證模式
| 模式 | 特性 | 適用場景 |
| Windows 驗證 | 整合 Windows/AD 帳戶,單一登入,密碼策略由域控管 | 企業內網、域環境、需集中身分管理 |
| 混合模式 | 同時支援 Windows 與 SQL Server 驗證(自建帳密) | 跨域、非域環境、舊版應用相容、ISP 代管 |
關鍵操作
- Windows 群組授權: 將 AD 群組 (如
DOMAIN\SQL_Admins) 直接加為 SQL Server 登入,群組成員自動獲得存取權
- 拒絕存取: 對特定群組成員單獨設定「拒絕存取」覆蓋群組授權
- sa 帳戶防護: 強制複雜密碼、勿用於應用程式、定期輪換、考慮重命名/停用(需另建 sysadmin 帳戶)
第二層:伺服器角色與資料庫角色
8 種固定伺服器角色(不可增刪改)
| 角色 | 核心權限 |
sysadmin | 執行任何動作,最高權限 |
securityadmin | 管理登入帳戶、讀取錯誤日誌 |
serveradmin | 設定伺服器選項、關閉伺服器 |
setupadmin | 管理複寫、擴充預存程序 |
processadmin | 管理執行中程序 (KILL) |
diskadmin | 管理資料庫檔案 (磁碟) |
dbcreator | 建立、修改、卸除資料庫 |
bulkadmin | 執行 BULK INSERT |
10 種固定資料庫角色(每資料庫獨立,可自訂角色)
| 角色 | 權限範圍 |
db_owner | 資料庫完全控制(含結構、資料、權限) |
db_securityadmin | 管理角色成員、權限、稽核 |
db_datareader | 讀取所有使用者資料表/檢視 |
db_datawriter | 新增/刪除/修改所有使用者資料表 |
db_ddladmin | 執行 DDL (CREATE/ALTER/DROP) |
db_backupoperator | 備份資料庫 |
db_accessadmin | 管理資料庫使用者存取 |
db_denydatareader | 拒絕讀取所有資料表/檢視 |
db_denydatawriter | 拒絕寫入所有資料表 |
權限疊加規則
- 用戶擁有 所有角色權限的聯集
- DENY 優於 GRANT:任何角色含 DENY,該權限即被封鎖
第三層:物件層級細粒度權限
| 權限 | 適用物件 | 說明 |
| SELECT | 資料表、檢視、資料行 | 讀取資料 |
| INSERT | 資料表、檢視 | 新增資料列 |
| UPDATE | 資料表、檢視、資料行 | 修改資料 |
| DELETE | 資料表、檢視 | 刪除資料列 |
| EXECUTE | 預存程序、函數 | 執行程式碼 |
| REFERENCES | 資料表、資料行 | 建立外鍵參考 |
授權語法範例
-- 資料行級授權
GRANT UPDATE ON Employees (Salary, Bonus) TO HR_Role;
-- 預存程序授權
GRANT EXECUTE ON usp_GetCustomerOrders TO Sales_Role;
-- 撤銷權限
REVOKE DELETE ON Customers FROM Public;
安全強化實戰清單
- 優先使用 Windows 驗證,整合 AD 密碼策略、帳戶鎖定、群組管理
- 最小權限原則: 應用程式使用專用低權限登入,僅授予必要物件權限
- 移除/停用高風險擴充預存程序:
-- 命令殼層 (極高風險)
EXEC sp_dropextendedproc 'xp_cmdshell';
-- OLE 自動化 (可存取檔案系統、登錄)
EXEC sp_dropextendedproc 'xp_OACreate';
-- ... 同類 xp_OA*
-- 登錄存取 (可讀取密碼雜湊等敏感資訊)
EXEC sp_dropextendedproc 'xp_regread';
-- ... 同類 xp_reg*
- 啟用通訊加密: 設定 Force Protocol Encryption 或憑證型 SSL/TLS,保護傳輸中密碼與資料
- 稽核登入事件: 伺服器屬性 → 安全性 → 稽核層級:「成功與失敗登入」,定期檢視錯誤日誌
- 安裝後立即修改 sa 密碼,避免空白/弱密碼
總結
建構安全的 SQL Server 環境需從作業系統、網路、SQL Server 設定、應用程式設計多層面著手。三層次權限模型提供結構化管理框架,配合定期稽核、修補、最小權限原則,可有效降低資料外洩與破壞風險。
- 上一篇文章: SQL Server 連結伺服器實作:存取 Oracle 資料庫完整步驟
- 下一篇文章: SQL Server 使用游標取得所有使用者資料表資訊(含列數、建立日期、筆數)
Copyright ©
程式碼之家 All Rights Reserved