Windows 集成的身份驗證連接SQL Server數據庫,打造更安全的連接

更安全的SQL Server連接方式

摘要:今天用C#編寫一個Windows 服務程序,其中要連接一個Windows 2003 Server上的SQL Server 2000 數據庫,用SQL Server 身份驗證。發現普通程序都能聯上,但是Windows服務程序就是聯不上。  後來查了資料,找到了解決方法。共享給大家。

三步解決:

1、  在服務器上創建一個用戶,配置好SQL Server數據庫訪問權限。

2、  在客戶端創建一個一樣的用戶。

3、  服務程序以剛創建的那個客戶端用戶登錄。

搞定!

 

關鍵字SSPI, Integrated Security, SQL Server Windows,身份驗證,SQL Server不存在,或者拒絕訪問。

 

參考文檔:Windows 身份驗證和 SQL Server

http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/f_and_m/html/vxconWindowsAuthenticationSQLServer.asp

 

Visual Studio 示例:Fitch and Mather 7.0

 

Windows 身份驗證和 SQL Server

Fitch and Mather 7.0 通過 SQL Server 身份驗證訪問 SQL Server。雖然它非常簡單並提供了易於理解的示例,但它並不是最安全的方法。Fitch and Mather 7.0 將連接字符串(包含數據庫憑據)存儲在兩個位置:Web.config 文件和 COM+ Admin 目錄(在 FMStocks7.GAM.7 組件的構造函數字符串中)。默認情況下,任何用戶都可以讀取這兩個位置,因此很容易無意中泄露保密信息(憑據)。

一種更好的解決方案是使用 Windows 集成安全性。首先,需要 Internet 信息服務 (IIS) 服務器和 SQL Server 數據庫都能識別的 Windows 標識。有兩種方法可供選擇:

·                 域帳戶
如果服務器是域的一部分,並且管理員可以創建應用程序的域帳戶,那麼這是最佳方法。

·                 具有同步密碼的本地帳戶
如果網絡的實現不支持域帳戶,則通過在兩臺計算機上創建相同的本地帳戶(使用相同的密碼),可以安全地訪問 IIS SQL Server 數據庫。

選擇上述方法中的一種,然後創建一個名爲 FMStocks_7 Application 的帳戶(在域中或在兩臺計算機上),並使它僅屬於“Guest”組。這樣,應用程序只需要最低程度的特權即可運行。

然後,更改連接字符串(在 Web.config COM+ admin 目錄中),移除顯式憑據以便能夠使用集成安全性。例如,如果連接字符串如下:

Data Source=MYDBSERVER; User Id=Fitch and Mather 7.0 _login; Password=*********;

    Initial Catalog=Fitch and Mather 7.0 ;

然後將其更改爲:

Data Source=MYDBSERVER;Integrated Security=SSPI;

    Initial Catalog=Fitch and Mather 7.0 ;

這一更改意味着,可以使用線程運行所用的標識來訪問 SQL Server 數據庫。默認情況下,ASP.NETaspnet_wp.exe 進程)在本地 ASPNET 帳戶下運行,但是,應用程序代碼應在 Fitch and Mather 7.0 應用程序帳戶下運行。在 Fitch and Mather 7.0 Application 帳戶下運行應用程序代碼的優點是,這是一個 Windows 帳戶,並且您可以授予它適當的 SQL Server 權限。

下一步,需要將帳戶與 Fitch and Mather 7.0 應用程序關聯。

將帳戶與 Fitch and Mather 7.0 關聯

1.             配置 IIS

a.                      開始菜單上指向程序,然後指向管理工具並單擊“Internet 服務管理器
“Internet
信息服務窗口隨即打開。

b.                     選項卡上,瀏覽目錄樹以搜索 FMStocks7 虛擬目錄。(此虛擬目錄的位置因具體的安裝而異。)找到之後,右擊“FMStocks7”並選擇屬性
“FMStocks7
屬性對話框隨即出現。

c.                      “FMStocks7 屬性對話框中,選擇目錄安全性選項卡。在匿名訪問和驗證控制下,單擊編輯按鈕。
隨即出現驗證方法對話框。

d.                     匿名訪問下,單擊編輯按鈕。
匿名用戶帳號對話框隨即出現。

e.                      清除允許 IIS 控制密碼。這是必需的,因爲 IIS 會存儲憑據並在針對 SQL Server 進行身份驗證時提供這些憑據。

f.                       用戶名密碼下,將匿名用戶帳戶替換爲 FMStocks7_Application,並且輸入它的密碼。

g.                     最後,單擊三次確定以完成。

2.             通過添加以下行啓用 Web.config 中的模擬:

3.                   <system.web>

4.                      <identity impersonate="true" />

      ....

最後一步是在 FMStocks7 FMStocks7_GAM 數據庫中配置 SQL Server,以授予 Fitch and Mather 7.0 Application 帳戶適當的權限(如果這兩個數據庫在不同的計算機上運行,則需要在每臺計算機上重複此過程):

FMStocks7 FMStocks7_GAM 數據庫中配置 SQL Server 權限

1.             打開 SQL Server

·                         開始菜單上指向程序,然後指向“Microsoft SQL Server”並單擊企業管理器
“SQL Server
企業管理器窗口隨即打開。

2.             創建一個 SQL 登錄。

a.  選項卡上,瀏覽目錄樹以搜索服務器名稱下的安全性文件夾,然後展開該文件夾。

b. 右擊登錄文件夾並選擇新建登錄
“SQL Server
登錄屬性新建登錄對話框隨即出現。

c.  名稱框中,輸入“FMStocks7 Application”

d. 身份驗證下,找到框,並選擇本地計算機名(如 MYDBSERVER)或您的域,具體取決於創建 Fitch and Mather 7.0 Application 帳戶的位置。

e.  安全性訪問設置爲允許訪問

f.   默認值下,將數據庫設置爲 FMStocks7

g. 選擇數據庫訪問選項卡,並確保在各自的允許字段中選中 FMStocks7 / FMStocsk7_GAM

h. FMStocks7 / FMSTocks7_GAM 的數據庫角色下,選擇 db_denydatareader db_denydatawriter 權限,以防止該帳戶直接訪問表。

3.             刪除 FMStocks7_login,因爲不再使用它。

 .   仍然是在“SQL Server 企業管理器窗口中的目錄樹選項卡上,雙擊安全性文件夾下的登錄
各個登錄顯示在“SQL Server 企業管理器窗口的右窗格中。

a.  找到 FMStocks7_Login 的項,並右擊該項然後選擇刪除將其刪除。
出現“FMStocks7_Login”對話框。選擇確認刪除。

4.             給所有存儲過程授予執行權限。

 .   仍然是在“SQL Server 企業級管理器窗口的選項卡上,瀏覽目錄樹以搜索位於數據庫文件夾中服務器名下的 FMStocks7 數據庫。

a.  FMStocks 數據庫文件夾中找到並打開存儲過程,然後對非系統存儲過程執行以下操作:

雙擊該存儲過程(例如 Account_Add 項)。
存儲過程屬性對話框隨即出現。

單擊權限按鈕。
對象屬性 - FMStocks7”對話框隨即出現。

權限表中,找到“EXEC”列,並選擇相應的框,向 FMStocks7 Application 帳戶授予“EXEC”權限。

若要驗證 SQL Server 權限配置得是否正確,請運行應用程序並使用 SQL 分析器驗證所使用的帳戶是否爲 Fitch and Mather 7.0 Application

對於每一個請求,現在將發生以下情況:

1.             傳入一個匿名請求,IIS 模擬您爲匿名用戶指定的帳戶(Fitch and Mather 7.0 Application),並將該請求傳遞給 aspnet_wp.exe。請注意,雖然 Fitch and Mather 使用 Forms 身份驗證,但在 IIS 中,所有請求都是匿名的。

2.             由於您已將應用程序配置爲使用模擬(通過更改 Web.config),ASP.NET 在當前線程中模擬 IIS 標識 (Fitch and Mather 7.0 Application)

3.             應用程序打開 SQL 連接時,它在 Fitch and Mather 7.0 Application 登錄下,使用集成 Windows 身份驗證來執行存儲過程。

分佈式方案

運行分佈式方案時,請注意以下內容:

遠程 BLL
上述所有對 Web 服務器的更改需要在應用程序層(運行 BLL 的位置)中完成。

遠程 GAM.NET 遠程處理)
上述所有對 Web 服務器的更改也需要在應用程序層(運行 GAM 的位置)中完成。

遠程 GAM (DCOM)
上述更改只需要在 Web 服務器中進行。另外,在運行 GAM 的計算機(GAM COM+ 服務器應用程序駐留的計算機)上完成以下操作:

設置 GAM

1.             打開組件服務,然後修改 FMStocks7.GAM COM+ 組件的帳戶。

a.                      開始菜單上指向程序,然後指向管理工具並單擊組件服務
組件服務窗口打開。

b.                     選項卡上,瀏覽目錄樹以搜索組件服務”->“計算機”->“我的電腦”->“COM+ 應用程序下的“FMStocks7.GAM”文件夾。

c.                      右擊 FMStocks7.GAM 項並選擇屬性
“FMStocks7.GAM
屬性對話框出現。

d.                     選擇標識選項卡,選擇本用戶,然後在用戶密碼框中提供 FMStocks7 應用程序的 Windows 憑據。單擊確定接受更改。

2.             更改 FMStocks7.GAM.7 構造函數字符串。

a.                      組件服務窗口中“FMStocks7.GAM 應用程序組件文件夾下(參見上面的第 1 步),右擊“FMStocks7.GAM.7”組件並選擇屬性
“FMStocks7.GAM.7
屬性對話框出現。

b.                     選擇激活選項卡。在對象結構下,找到建立者字符串,將字符串更改爲:
Provider=SQLOLEDB;Data Source= MYDBSERVER;Integrated Security=SSPI;Initial Catalog=Fitch and Mather 7.0 _GAM;

請參見

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章