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

时间:2014-10-07 08:30:31

标签: iis-8.5 applicationpoolidentity sql-server-2014-express

我有一个运行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>安全性>登录和数据库> [ActivbaseLive]>安全>用户,这样就解决了这个问题。

我的问题如下:

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

Login failed for user NT AUTHORITY\IUSR

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