核心概念區分
- 驗證:確認使用者身分(登入時發生)。
- 授權:決定使用者能做什麼(存取資料/執行指令時發生)。
第一步:選擇驗證模式
Windows 驗證(推薦)
- 由網域控制站驗證身分,SQL Server 接收存取權杖,內含使用者 SID 與群組 SID。
- 優點:單一登入、密碼策略集中管理、群組權限繼承、多伺服器環境易管理、支援稽核。
- 適用:伺服器可連線網域控制站的企業環境。
SQL Server 驗證
- 帳密儲存於
master..sysxlogins,由 SQL Server 自行比對。
- 缺點:僅對單一伺服器有效、多伺服器管理困難、每個資料庫需個別授權、無法利用 NT 群組簡化管理。
- 適用:使用者 < 25 人、權限變動少、非網域環境、應用程式直接管理安全性的特殊情境。
Web 環境驗證難題
典型架構:Web 應用程式(ASP/CGI)內嵌單一 SQL 登入(甚至 sa),Web 伺服器負責驗證終端使用者。
缺點:
1. 無法在 SQL 層稽核個別使用者活動。
2. 完全仰賴 Web 應用程式驗證邏輯。
3. SQL 端無法區分不同終端使用者,難以實施細緻權限。
IIS 5.0/4.0 四種驗證方式因應
- 匿名 NT 帳戶:為每個網站/虛擬目錄建立專用 NT 匿名帳戶,應用程式以此安全內容連線 SQL Server,授予該帳戶適當權限可改善稽核與驗證。
- 基本驗證:瀏覽器傳送 Base64 編碼帳密,需 SSL 加密傳輸,SQL 端仍用單一帳號連線。
- 整合 Windows 驗證 (NTLM/Kerberos):瀏覽器與 IIS 協商,若啟用委派,可將使用者身分傳遞到 SQL Server(雙跳),實現真正的使用者層級權限與稽核。
- 憑證/表單驗證:自訂驗證邏輯,同樣面臨單一 SQL 連線帳號問題。
建議策略
企業內部系統:優先採用 Windows 整合驗證 + 受限委派,實現端到端身分流傳。
對外 Web 系統:若無法委派,採用 連線池化的單一低權限 SQL 登入,於應用層實作使用者權限矩陣,並完整記錄稽核日誌。