SQL Server的安裝有兩個關於安全模式的選項。它們之間的差異在於由哪一個軟體執行認證過程。認證是一個確認將要連接SQL Server的使用者身分的過程。一旦執行了認證,SQL Server就能驗證這個使用者是否有授權來連結一個被要求的資源,例如一個資料庫。如果使用者俱有連接資料庫的許可,那麼SQL Server將允許連線請求成功,否則,連線失敗。這個驗證使用者許可的過程也被稱為授權。
· Windows Authentication(也被稱為Trusted Authentication或Integrated Security)使用進行連線請求程序的Windows使用者身分來執行資料庫的授權。在這種情況下,連接字串不必提供明確的使用者名稱和密碼。 ASP.NET以一個名為"ASPNET"的本機使用者來運作(或在IIS 6.0當中使用使用者名稱"Network Service"),所以當使用Windows Authentication時,SQL將會檢查這個使用者是否擁有使用資料庫的授權。此時,所有的ASP.NET應用程式都以這個相同的使用者執行,所以該安全模式對這些應用程式一視同仁。雖然可以在單獨的ASP.NET進程中運行每一個應用程式(單獨的用戶運行每個程式),或者可以模擬進行連接請求的瀏覽器客戶的Windows用戶身份,但是這些內容都超出了本書所要講述的範圍。不過,客戶模擬的情況在Web應用程式中是Windows Authentication最常見的使用方式。
· SQL Authentication針對在SQL Server內設定的使用者來檢查明確提供的使用者名稱和密碼(無需涉及作業系統)。在這種情況下,在ASP.NET進程中運行的每個應用程式都能以單獨的憑證來連接資料庫,這樣就把應用程式合理地隔離開了(應用程式A如果沒有B的使用者名稱和密碼就不能連接至B的資料庫)。這是用於部署的網路應用程式最常見的認證模式,特別是在共用宿主的情況下。它的一個小缺點是需要應用程式保留用於連接的用戶帳戶的密碼,並且如果該密碼被惡意用戶獲取,那麼將危及資料庫的安全性。但是,在本書後面將會看到,ASP.NET提供了一個安全的方式,將SQL Authentication密碼以加密的格式保存在Web.config檔中,這樣就降低了密碼被取得的風險。
· Mixed Mode是SQL Server的配置,它既允許Windows Authentication,也允許SQL Authentication。
在安裝SQL Server或SSE時,請選擇一種認證模式。在SQL Server中,有精靈會在安全步驟中協助選擇,而在SSE中,預設選擇是Windows Authenti cation。如果要安裝SQL Authentication,就必須明確設定。本文使用的是Windows Authentication。
如果已經安裝了SQL Server或SSE,就能透過開啟RegEdit來檢視所指定的認證模式(當然需要先備份),找到HKey_Local_Machine/Software/Microsoft/Microsoft SQL Server並搜尋LoginMode。值為1的註冊子鍵表示Windows Auth entication,而值2表示Mixed Authentication模式。
表3-1總結了這些模式之間的差異。
表3-1
Windwos Authentication | SQL Authentication | |
可替換名稱 | Trusted Authentication Integrated Security | 沒有,但Mixed Mode Authen tication允許使用Windows或SQL Authentication |
典型環境 | 內部網 | 因特網 |
使用者和認證過程清單的位置 | Windows | SQL Server |
SSE安裝 | 預設安裝 | 需要指定安裝 |
連接字串 | Trusted_connection=true或Integrated Security=true | user=username; password=password |
ASP.NET Web應用程式的使用者 | ASP.NET程序、ASPNET(IIS 5.x)或Network Service(IIS 6) | SQL使用者 |
優勢 | 較好的安全性;可以對使用者在SQL事件和Windows事件中的活動進行追蹤 | 無需建立新帳戶即可在宿主機上部署;獨立於作業系統 宿主的內部網站點只需一般技術 為應用程式提供更靈活的方式以不同的憑證來連接每個資料庫 |
劣勢 | 給予Web應用程式Windows憑證有可能會將OS中的權限範圍設定過大 | 密碼儲存在Web應用程式中(在Windows認證中則不是)。確認密碼儲存在Web.config檔中並已加密。 允許使用sa憑證的網路應用程式的低階操作。總是為ASP.NET Web應用程式建立新的憑證並只給予所需的權限 |