一、驗證方法選擇:Windows 驗證 vs SQL Server 驗證
核心概念區分
- 驗證:確認使用者身分(登入時)。
- 授權:決定使用者可執行動作(存取資料/指令時)。
Windows NT/2000 驗證(推薦)
若伺服器可連線網域控制站,應優先使用 Windows 驗證。域控制站驗證使用者合法性,回傳存取權杖(含使用者 SID 與群組 SID),SQL Server 憑 SID 授權。無論使用 SQL Server 2000/7.0、Win2K/NT 驗證,產生的 SID 結果一致。
SQL Server 驗證的缺點
- 僅對單一伺服器有效,多伺服器環境管理困難。
- 每個資料庫需個別管理權限,無法集中授權。
- 僅適合使用者少(<25)、權限變動少的情境。
二、Web 環境驗證挑戰與對策
常見錯誤做法
將固定 SQL 登入帳密內嵌於 ASP/CGI 程式,Web 伺服器自行驗證使用者,應用程式以單一高權限帳號(甚至 sa)存取資料庫。缺點:
- 無法稽核個別使用者在伺服器活動。
- 完全依賴 Web 應用程式驗證機制。
- SQL Server 無法區分不同使用者以限定權限。
IIS 5.0/4.0 四種驗證方式
- 匿名 NT 帳戶:為每個網站/虛擬目錄建立專用匿名 NT 帳戶,所有應用程式以此安全內容登入 SQL Server,透過授予該帳戶適當權限改善稽核與驗證。
- 基本驗證:使用者輸入合法帳密才能瀏覽頁面,IIS 透過 NT 安全資料庫(本機或網域)驗證,並將身分資訊傳遞給 SQL Server。
- 整合式 Windows 驗證:使用 Kerberos/NTLM 進行無縫單一登入,最安全且使用者體驗佳。
- 憑證/表單驗證:搭配 ASP.NET 表單驗證或用戶端憑證,彈性最高但實作複雜。
建議採用 整合式 Windows 驗證 搭配資料庫層級的角色型存取控制(RBAC),實現端到端安全性。