【发布时间】:2010-10-05 18:19:36
【问题描述】:
对于我的带有表单身份验证的 asp.net 网站,我将使用 Windows 集成安全性来访问 sql 数据库。我将授予 ASPNET 或 NETWORK SERVICE 的 DB 权限。在什么情况下我会改用 SQL 身份验证?
【问题讨论】:
标签: asp.net sql-server permissions
对于我的带有表单身份验证的 asp.net 网站,我将使用 Windows 集成安全性来访问 sql 数据库。我将授予 ASPNET 或 NETWORK SERVICE 的 DB 权限。在什么情况下我会改用 SQL 身份验证?
【问题讨论】:
标签: asp.net sql-server permissions
当您的网站由外部 ISP 托管时,通常也需要 SQL 身份验证。它们通常不支持 Windows 身份验证或不允许您向 Windows 帐户授予权限。
【讨论】:
当您需要非 Windows 机器建立数据库连接时使用 SQL Auth。
请记住,它添加了另一个攻击向量(另一组用于危害机器的凭据),因此请确保在使用之前确实需要它。
【讨论】:
当您不能使用 Windows 身份验证时,您确实使用 SQL 身份验证。在我看来,这是唯一一次。 Windows 身份验证更安全,可以在使用 Active Directory 的地方集中管理。如果您有真正知道如何管理 Active Directory 的人,并且您在 Windows 环境中,则没有充分的理由使用 sql 身份验证。
使用 Sql 身份验证,您必须管理连接字符串中的密码等,这意味着为了更改访问数据库的帐户,必须有人知道应用程序的功能或至少知道信息的存储位置。使用 Windows 身份验证,网络管理员所要做的就是在 IIS 应用程序设置中输入正确的用户名和密码,然后您就可以开始摇滚了。无需开发人员交互。
您有额外的步骤来保护连接字符串信息,例如密码等在存储在配置文件中时应加密。与 Windows 身份验证相比,使用 Sql Server 身份验证有效且安全地涉及更多步骤。如果使用相同的 sql server 凭据跨多个服务器访问多个数据库,则尤其如此。
【讨论】:
如果您想完全管理用户帐户,您应该使用 SQL 身份验证。 这样,您就可以完全控制用户帐户。例如,您可以强制他们输入私人信息。
另外,就像 Corbin 提到的,如果客户端没有运行 Windows 操作系统,则不能使用 Windows 身份验证(显然)。
【讨论】:
请注意,Windows 身份验证是推荐的身份验证模式,原因很简单,它继承了操作系统身份验证。有许多因素可能会导致您不使用上述 Windows 身份验证。
【讨论】:
这取决于。如果您正在开发内部 Web 应用程序并且网络 IT 人员在大厅里,那么请使用 Windows 身份验证。如果您将应用部署给客户并且无法控制他们的网络基础设施,那么我会使用 SQL 身份验证
【讨论】:
如果您无法控制 Active Directory(例如在托管情况下)或有用户使用 Windows 以外的操作系统,则您别无选择。
是否需要使用一些脚本即时创建用户帐户?对于 sql 用户,它必须比 Active Directory 更容易(可能并非不可能)。
【讨论】:
除了以上所有,考虑这样一个案例:
您需要使用的帐户来自域 A。 该数据库位于域 B 上。 域 A 和域 B 没有信任关系。
您需要 SQL 身份验证才能克服这种情况。 希望这会有所帮助。
(为了更清楚):数据库未在活动目录中注册。那么就不能使用windows认证了。
【讨论】: