我没有使用这个,但这是一个有趣的问题。如果我在 IIS 上设置 Web 应用程序以使用 Windows 身份验证并模拟经过身份验证的用户和我的 ConnectionString 到 SQLServer 数据库使用Integrated Security=true;
,我的应用程序在尝试连接到数据库时将使用应用程序验证的用户?
如果是,这是一件好事吗?(该数据库具有 LDAP/AD“域用户”权限。考虑到一个可审计的数据库,每个用户都会记录您的操作。)
我没有使用这个,但这是一个有趣的问题。如果我在 IIS 上设置 Web 应用程序以使用 Windows 身份验证并模拟经过身份验证的用户和我的 ConnectionString 到 SQLServer 数据库使用Integrated Security=true;
,我的应用程序在尝试连接到数据库时将使用应用程序验证的用户?
如果是,这是一件好事吗?(该数据库具有 LDAP/AD“域用户”权限。考虑到一个可审计的数据库,每个用户都会记录您的操作。)
是的,与 SQL Server 的连接将在这些用户之下。
一般来说,它并不好。但这取决于情况。以下是要考虑的主要因素:
是的,它将使用经过身份验证的用户并模拟“经过身份验证的用户”权限来访问数据库。有关更多信息,请查看此链接How To: Use Impersonation and Delegation in ASP.NET 2.0
另一种方法是使用服务帐户,即对数据库具有完全访问权限的非交互式 Windows 域帐户。
这允许连接池消除复杂的权限模型,例如允许选定的用户对一组数据执行删除。
然而,这确实意味着必须将审计逻辑添加到应用程序的数据层和访问数据库的存储过程中,以确保调用用户作为数据库访问的一部分被记录,否则服务帐户将是唯一的帐户审计表。