將 ASP.NET 身份分配給 AD 組以訪問遠端 SQL Server
我有一個在名為 WEBSERV 的伺服器(Window Server 2008 R2 Standard)上執行的 ASP.NET 4.0 (IIS 7.5) 應用程序,以及在另一台名為 DATASERV 的伺服器上執行的 SQL Server (2008) 數據庫。SQL Server 以具有讀取權限的數據庫使用者身份登錄設置。我是與 SQL Server 登錄關聯的 AD 組的所有者,名為 READGROUP,我使用集成安全性訪問數據庫,我理解這是 Windows 身份驗證。ASP.NET 應用程序的應用程序池標識設置為 NetworkService。啟用匿名身份驗證。ASP.NET 模擬、基本身份驗證、摘要式身份驗證、表單身份驗證、Windows 身份驗證全部禁用。如果需要,我可以啟用這些。為了讓人類使用者可以讀取數據庫,我將它們添加到 READGROUP。
我的目標是向 READGROUP 添加 1 個非人類使用者,以便 ASP.NET 應用程序可以查詢數據庫並在 HTML 表中顯示數據。我有程式碼在我的開發盒上執行,但它使用我的憑據執行,因為我是 READGROUP 的一部分,所以它可以訪問數據。當應用程序在 WEBSERV 上執行時,其 Windows 標識顯示為“NT AUTHORITY\Network Service”。
我不想像這樣在 WEBSERV 上儲存我的密碼。我必須每 90 天更換一次,維護起來非常痛苦,IT 人員強烈反對這樣做。
有沒有辦法讓 WEBSERV + ASP.NET + 我的應用程序添加到我的 AD 組中的特定使用者?
您需要將 WEBSERV 的電腦帳戶添加為 SQL 登錄名。
您可以從 T-SQL 執行此操作:
CREATE LOGIN [WEBSERV$] FROM WINDOWS;
或從 GUI 像往常一樣創建登錄名,但
YOURDOMAIN\WEBSERV$
在搜尋 AD 帳戶時輸入搜尋對話框。在此之後,您可以像往常一樣將使用者映射到數據庫。
可能需要創建一個 AD 使用者以用作應用程序池身份的服務帳戶,為其提供一個極長的密碼,並在該帳戶上設置“密碼永不過期”標誌。這可以說比授予對電腦帳戶的訪問權限更安全,但這取決於您的 IT 部門對服務帳戶密碼策略的靈活性。
在任何情況下,使用您自己的 AD 帳戶作為服務帳戶都是一個壞主意。