6

我有一个运行 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. 这样做有安全问题吗?(注意:这将是一个生产环境)

谢谢,克里斯

4

1 回答 1

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. 匿名身份验证很可能会在您的设置中启用。右键单击匿名身份验证,然后选择编辑
  5. Edit Anonymous Authentication Credentials对话框中,单击Application pool identity选项,然后单击OK

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

用户 NT AUTHORITY\IUSR 登录失败

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

于 2019-09-20T14:26:15.983 回答