Windows 整合的身分識別驗證串連SQL Server資料庫,打造更安全的串連

來源:互聯網
上載者:User
server|window|安全|資料|資料庫

摘要:今天用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.NET(aspnet_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 資訊服務”視窗隨即開啟。

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;



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。