首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

打造安全穩定 SQL Server 資料庫實戰指南(二):Web 環境驗證策略與群組授權深化

     編輯:關於SqlServer

Web 應用是資料庫安全最脆弱的攻擊面。本文分析 Web 驗證常見陷阱、IIS 5.0/6.0 四種驗證機制比較、全域群組授權細節與伺服器/資料庫角色對應實作。

Web 應用驗證的經典反模式

-- ASP/ASPX 內嵌連線字串 (極度危險)
conn.Open "Provider=SQLOLEDB; Data Source=DB; User ID=sa; Password=P@ssw0rd;"

三大致命缺陷

  1. 零稽核能力: 資料庫層面只見單一應用程式帳戶 (甚至 sa),無法分辨實際終端使用者。
  2. 完全仰賴應用程式驗證: 應用層邏輯漏洞 (SQL Injection, 驗證繞過) 直接導致資料庫淪陷。
  3. 權限最小化失效: 所有使用者共享同一高權限連線,違反最小權限原則。

IIS 5.0/6.0 四種驗證機制與資料庫整合策略

IIS 驗證方式機制資料庫整合建議安全性
匿名存取 (Anonymous) 預設 IUSR_MACHINE 或自訂網域帳戶 為**每個網站/虛擬目錄**建立專用網域帳戶,對應資料庫登入,授與最小權限 ⭐⭐ (需嚴格帳戶隔離)
基本驗證 瀏覽器彈出對話框,明文傳輸 Base64 編碼帳密 IIS 驗證通過後,**模擬使用者身分** 連線資料庫 (需 Kerberos 委派/约束委派) ⭐ (明文傳輸,**必須搭配 SSL/TLS**)
整合式 Windows 驗證 (NTLM/Kerberos) 瀏覽器自動送出登入憑證 (IE/Edge/Chrome 支援) **最佳選擇**:IIS 模擬使用者身分連線資料庫,支援跨網域信任、雙重躍點 (Kerberos 委派) ⭐⭐⭐⭐⭐ (企業內網首選)
用戶端憑證對應 個人數位憑證映射至網域帳戶 憑證取代帳密登入,IIS 映射後同整合驗證流程 ⭐⭐⭐⭐ (高安全需求、PKI 基礎建設就緒時)
**結論:Web 環境首選「整合式 Windows 驗證」+ Kerberos 委派**,次選「基本驗證 + SSL」+ 指定網域帳戶。嚴禁在程式碼/設定檔內嵌 sa 或高權限帳密。

全域群組授權實作細節 (承接上篇)

1. 基礎登入建立與拒絕策略

-- 允許登入群組 (僅 CONNECT)
EXEC sp_grantlogin 'DOMAIN\SQL_Server_Users';
EXEC sp_defaultdb 'DOMAIN\SQL_Server_Users', 'master';
-- 不加入任何角色,不授與資料庫存取

-- 拒絕登入群組 (Deny 絕對優先)
EXEC sp_grantlogin 'DOMAIN\SQL_Server_Denied_Users';
EXEC sp_denylogin 'DOMAIN\SQL_Server_Denied_Users';

2. 管理群組對應伺服器角色


EXEC sp_addsrvrolemember 'DOMAIN\SQL_Server_Admins', 'sysadmin';
EXEC sp_addsrvrolemember 'DOMAIN\SQL_Server_DBCreators', 'dbcreator';
EXEC sp_addsrvrolemember 'DOMAIN\SQL_Server_Security_Ops', 'securityadmin';
-- 參數 1 必須為完整網域路徑:DOMAIN\GroupName

3. Model 資料庫預配置資料庫角色


-- 在 Model 資料庫內執行
EXEC sp_addrolemember 'db_securityadmin', 'DOMAIN\SQL_Server_Security_Ops';
EXEC sp_addrolemember 'db_owner', 'DOMAIN\SQL_Server_Developers';
-- 新資料庫自動擁有此角色成員

4. 突破 EM 限制:直接授權網域群組進入資料庫角色

Enterprise Manager 僅允許選擇**已建立資料庫使用者**。但 SQL Server 引擎允許直接對 **SID (網域群組/使用者)** 授權:


-- 直接將網域群組加入資料庫角色 (無需先 CREATE USER)
EXEC sp_addrolemember 'db_datareader', 'DOMAIN\Acct_Report_Writers';
EXEC sp_addrolemember 'db_datawriter', 'DOMAIN\Acct_DataEntry_Operators';
-- 此技巧極大簡化管理:AD 群組增減成員即時生效,無需異動資料庫

群組命名規範建議

  • 前綴 SQL_ / DB_ 區分伺服器/資料庫層級。
  • 業務系統縮寫 + 功能角色:Acct_DataEntry_Operators。
  • 避免空格、特殊字元,長度 < 64 字元。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved