IIS AppPool 到 SQL Server 权限(添加 NT AUTHORITY\IUSR)

Chr*_*lsh 5 applicationpoolidentity sql-server-2014-express iis-8.5

我有一个运行 Windows Server 2012 R2、IIS 8.5(包括 ClassicASP 功能)和 SQL Server 2014 Express 的新服务器版本。我想使用应用程序池标识连接到数据库。数据库设置为“Windows 身份验证模式”。

我的应用程序池标识名为activbase.net. 我在 SQL Server 中设置了一个名为的安全登录IIS AppPool\activbase.net,用户将它映射到我的数据库db_datareaderdb_datawriter访问。

但是,当我尝试从网站访问数据库时,我得到:

无法打开登录请求的数据库“ActivbaseLive”。登录失败。

我认为这足以使连接正常工作。应用程序日志(事件查看器)显示:

用户“NT AUTHORITY\IUSR”登录失败。原因:无法打开明确指定的数据库“ActivbaseLive”。[客户: ]

所以我NT AUTHORITY\IUSR同样添加到 SQL Server>Security>Logins and Databases>[ActivbaseLive]>Security>Users,这解决了问题。

我的问题如下:

  1. NT AUTHORITY\IUSR除了IIS AppPool\activbase.net登录名/用户之外,我是否还需要向我的 SQL Server 实例和数据库添加登录名/用户?
  2. 这样做是否存在安全问题?(注意:这将是一个生产环境)

谢谢,克里斯

Ste*_*nja 6

不需要NT AUTHORITY\IUSR。除了标识之外,您不需要为标识添加 SQL Server 登录名IIS AppPool\activbase.net。对于IIS AppPool\activbase.net使用 Windows 身份验证连接到 SQL Server,仅应用程序池标识的登录就足够了。

NT AUTHORITY\IUSR是一个内置的 Windows 帐户,它是为您的应用程序启用匿名身份验证时使用的默认身份。此页面描述了帐户的基本原理。

要使用该IIS AppPool\activbase.net身份连接到您的数据库,您需要将为匿名用户设置的帐户从NT AUTHORITY\IUSR您的IIS AppPool\activbase.net应用程序池身份更改为您的应用程序池身份。请按以下步骤进行更改:

  1. 打开Internet 信息服务 (IIS) 管理器
  2. Connections面板中,找到并单击以选择托管您的应用程序的网站,例如Default Web Site。(如果您想在您的网站下配置特定的应用程序,您可以选择该应用程序。)
  3. 在中心面板的功能视图中,双击Authentication
  4. 匿名身份验证很可能会在您的设置中启用。右键单击Anonymous Authentication,然后选择Edit
  5. 在“编辑匿名身份验证凭据”对话框中,单击“应用程序池标识”选项,然后单击“确定”

下面链接中的问题(及其答案)解决了同样的问题:

用户 NT AUTHORITY\IUSR 登录失败

关于您的第二个问题,“这样做是否存在安全问题?”,答案是“是”。您最好不要让NT AUTHORITY\IUSR内置帐户访问您的 SQL Server 数据库,因为它在您的 IIS Web 服务器上托管的任何其他网站(及其应用程序)上用作默认匿名帐户。这意味着那些其他网站和应用程序将能够连接到您的数据库。如果它们在攻击中受到损害,它们可能会被用来访问您的数据。所以最好不要为NT AUTHORITY\IUSR. 相反,限制对您网站(或应用程序)应用程序池标识的数据库访问。