SQL Server 中的身份验证 (ADO.NET)

SQL Server 支持两种身份验证模式,Windows 身份验证模式和混合模式。

  • Windows 身份验证是默认模式(通常称为集成安全),因为此 SQL Server 安全模型与 Windows 高度集成。 信任特定 Windows 用户和组帐户登录 SQL Server。 已经过身份验证的 Windows 用户不必提供附加的凭据。

  • 混合模式支持通过 Windows 和 SQL Server 进行的身份验证。 用户名和密码对保留在 SQL Server 中。

安全说明安全说明

我们建议尽可能使用 Windows 身份验证。Windows 身份验证使用一系列加密消息验证 SQL Server 中的用户。使用 SQL Server 登录时,会通过网络传递 SQL Server 登录名和密码,这样会降低它们的安全性。

使用 Windows 身份验证,已经登录到 Windows 的用户不必再单独登录到 SQL Server。 下面的 SqlConnection.ConnectionString 可指定 Windows 身份验证,而无需用户名或密码。

"Server=MSSQL1;Database=AdventureWorks;Integrated Security=true;
注意注意

登录名与数据库用户名不同。您必须通过单独的操作将登录或 Windows 组映射到数据库用户或角色。然后向用户或角色授予访问数据库对象的权限。

身份验证方案

在下列情形中,Windows 身份验证通常为最佳选择:

  • 存在域控制器。

  • 应用程序和数据库位于同一台计算机上。

  • 您正在使用 SQL Server Express 的实例。

SQL Server 登录常常在以下情况中使用:

  • 您有工作组。

  • 用户从其他不受信任的域进行连接。

  • Internet 应用程序(例如 ASP.NET)。

注意注意

指定 Windows 身份验证不会禁用 SQL Server 登录。使用 ALTER LOGIN DISABLE Transact-SQL 语句会禁用具有高特权的 SQL Server 登录。

登录类型

SQL Server 2000 支持三种登录类型:

  • 本地 Windows 用户帐户或受信任的域帐户。 SQL Server 依赖 Windows 来对 Windows 用户帐户进行身份验证。

  • Windows 组。 向 Windows 组授予访问权限会向作为该组的成员的所有 Windows 用户登录授予访问权限。

  • SQL Server 登录。 SQL Server 将用户名和密码的哈希形式都存储在 master 数据库中,使用内部身份验证方法验证尝试的登录。

注意注意

SQL Server 2005 添加从证书或非对称密钥创建的登录名,仅用于代码签名。但无法使用这些登录名连接到 SQL Server。

混合模式身份验证

如果您必须使用混合模式身份验证,则必须创建 SQL Server 登录名,将其存储在 SQL Server 中。 然后必须在运行时提供 SQL Server 用户名和密码。

安全说明安全说明

SQL Server 使用名为 sa(“系统管理员”的缩写)的 SQL Server 登录进行安装。为 sa 登录分配一个强密码,并且不要在应用程序中使用 sa 登录。sa 登录名会映射到 sysadmin 固定服务器角色,它对整个服务器有不能撤销的管理凭据。如果攻击者以系统管理员的身份获取了访问权限,则可能造成的危害是无法预计的。默认情况下,Windows BUILTIN\Administrators 组(本地管理员组)的所有成员均为 sysadmin 角色的成员,但可以从该角色中移除这些成员。

SQL Server 2005 为在 Windows Server 2003 或更高版本上运行的 SQL Server 登录引入了 Windows 密码策略机制。 密码复杂性策略通过增加可能密码的数量来阻止强力攻击。 SQL Server 2005 可将 Windows Server 2003 中使用的相同的复杂性和到期策略应用到 SQL Server 中使用的密码。

安全说明安全说明

连接来自用户输入的连接字符串会使您遭受连接字符串注入攻击。可使用 SqlConnectionStringBuilder 在运行时创建语法构成有效的连接字符串。有关更多信息,请参见连接字符串生成器 (ADO.NET)

外部资源

有关更多信息,请参见下列资源。

资源

说明

Principals(主体)

描述 SQL Server 2008 中的登录和其他安全主体。

Principals(主体)

介绍了 SQL Server 2005 中的登录名和其他安全主体。

Logins(登录)

描述 SQL Server 2000 中的登录和身份验证。

请参见

概念

SQL Server 中的应用程序安全机制方案 (ADO.NET)

其他资源

保证 ADO.NET 应用程序的安全

连接到数据源 (ADO.NET)

连接字符串 (ADO.NET)