微軟提供彈性強大的安全管理機制。本文依循「驗證 → 授權 → 稽核」三階段,從驗證模式選擇、Web 應用隔離、最小權限原則、稽核部署四大面向,構建經得起考驗的 SQL Server 安全策略 (適用 SQL 7.0/2000/2005+)。
一、 驗證模式選擇:Windows 驗證為首選
核心差異
| 面向 | SQL Server 驗證 | Windows 驗證 |
| 管理範圍 | 單一實例 | 網域/森林層級 (集中管理) |
| 密碼策略 | 自行實作 | 繼承網域策略 (複雜度/過期/鎖定) |
| 跨伺服器 | 需同步帳密 | 單一身分識別 (SSPI/Kerberos) |
| 稽核粒度 | 僅 SQL 登入 | 整合 OS 事件日誌 |
| 憑證委派 | 不支援 | 支援 (多層應用傳遞身分) |
決策建議
- **能連網域控制器 → 強制 Windows 驗證** (Enterprise Manager → 伺服器屬性 → 安全性 → 「僅限 Windows」)
- 僅 25 用戶以下、權限極少變動、無跨伺服器需求 → 可考慮 SQL 驗證
- 舊應用相容 → 獨立實例/容器隔離,啟用混合模式但**禁用 sa**
二、 Web 環境驗證隔離模式 (避免單一連線池洩露所有資料)
常見反模式
ASP/ASPX 內嵌 sa 或固定 SQL 帳號連線字串 → 所有使用者共用最高權限、無法稽核個人操作、密碼洩露風險極高。
四種 IIS 整合驗證模式
| 模式 | 運作方式 | 適用場景 | 優/缺點 |
| 匿名帳號 (IUSR_*) | IIS 建立本地/網域匿名帳號,應用池以此身分連線 SQL | 公開唯讀網站 | 簡單但無法區分使用者、無法細粒度授權 |
| 基本驗證 | 瀏覽器彈窗輸入帳密,IIS 對網域驗證 | 內部網、需識別使用者 | 傳輸明文 (需 HTTPS)、使用者體驗差 |
| 整合 Windows 驗證 (NTLM/Kerberos) | 瀏覽器自動送出目前登入憑證,無彈窗 | 企業內網、AD 環境 | 最佳體驗、支援委派、需設定 SPN |
| 憑證對應 | Client Certificate → AD 帳號映射 | 高安全需求、跨網域 | 部署複雜、需 PKI |
推薦架構:應用層身分傳遞 (Trusted Subsystem)
- 前端使用 Windows 整合驗證識別使用者
2. 中間層 (COM+/WCF/Web API) 以**固定低權限服務帳號**連線 SQL
3. 在預存程序/應用邏輯中傳入 @CurrentUser = SUSER_SNAME() 或應用層 UserId 實作**資料列層級安全性 (RLS)**
4. 稽核記錄包含真實使用者身分
三、 最小權限實作清單
- 服務帳號:專用 gMSA,僅
Log on as service + 資料目錄 Modify
- 應用帳號:僅
EXEC 必需預存程序、SELECT 必需檢視表/表
- DBA 帳號:個人網域帳號加入
sysadmin,**禁用/重命名 sa**
- 開發/測試帳號:僅開發/測試環境
db_owner,生產環境無權限
- Guest/ Public:移除所有不必要授權,
REVOKE CONNECT FROM guest
四、 稽核與持續監控
- SQL 2008+:SQL Server Audit 物件 → 伺服器審核規格 (登入/登出/權限變更) + 資料庫審核規格 (DML/DDL/SELECT 敏感表)
- 目標:檔案 (啟用輪替/加密) 或 Windows 安全性日誌
- 轉發:Log Forwarding → SIEM (Splunk/Azure Sentinel/ELK) 即時告警
- 關鍵告警規則:連續 5 次登入失敗、非工作時間 sysadmin 登入、大量資料匯出、結構變更 (ALTER/DROP)
五、 總結:安全策略落地檢查表
| 階段 | 關鍵動作 | 驗收標準 |
| 驗證 | Windows 驗證模式、禁用 sa、gMSA 服務帳號 | MBSA/Defender 掃描零高風險 |
| Web 隔離 | 應用層身分傳遞、RLS、無硬編碼連線字串 | 滲透測試無法越權存取他人資料 |
| 授權 | 最小權限矩陣、定期審查 (季) | 權限矩陣文件與實際一致 |
| 稽核 | Audit 啟用、SIEM 對接、告警規則 | 紅隊演練 100% 被偵測/阻擋 |