![将 ASP.NET 身份分配给 AD 组以访问远程 SQL Server](https://linux22.com/image/678604/%E5%B0%86%20ASP.NET%20%E8%BA%AB%E4%BB%BD%E5%88%86%E9%85%8D%E7%BB%99%20AD%20%E7%BB%84%E4%BB%A5%E8%AE%BF%E9%97%AE%E8%BF%9C%E7%A8%8B%20SQL%20Server.png)
我在名为 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 组?
答案1
您需要将 WEBSERV 的计算机帐户添加为 SQL 登录。
您可以通过 T-SQL 执行此操作:
CREATE LOGIN [WEBSERV$] FROM WINDOWS;
或者从 GUI 像平常一样创建登录,但YOURDOMAIN\WEBSERV$
在搜索 AD 帐户时在搜索对话框中输入。
此后,您可以像平常一样将用户映射到数据库。
可能更理想的是创建一个 AD 用户作为应用程序池标识的服务帐户,为其设置一个非常长的密码,并在帐户上设置“密码永不过期”标志。这可以说比授予计算机帐户访问权限更安全,但这取决于您的 IT 部门对服务帐户密码策略的灵活性。
无论如何,使用您自己的 AD 帐户作为服务帐户都是一个坏主意。