SQL Server安全 2:身份验证
下面是译文,你也可以看老外的文章:Stairway to SQL Server Security。
你需要保护你的server和数据,抵御当今复杂多变的攻击,在这些方面SQL Server都可以做到。但是在你使用这些安全有效的功能之前,你需要知道你面临的威胁和一些基本的安全概念。这篇文章是一些基础内容,以便您可以充分利用SQL Server的安全功能,不用浪费时间在数据安全方面。
身份验证是一个核实主体的过程,验证一个用户或者需要访问SQL Server DB进程的权限。一个用户需要有唯一的标识,以便于SQL Server能够确定这个主体有哪些权限。在为访问DB提供保护的时候,第一步必须的就是正确的身份验证。
SQL Server支持两种途径的身份验证:Windows和SQL Server身份验证。你使用的途径依赖于网络环境,访问数据库的应用程序类型和这些应用程序的用户类型。
- Windows身份验证:这种身份验证的形式依赖于Windows,当用户登录到Windows的时候验证身份。访问SQL Server对象的权限是通过
分配权限给Windows登陆账号来实现的。当SQL Server所在的Windows支持Windows NT 或者 Kerberos身份验证的时候,那么 Windows身份验证是很有用的,在Windows 2000之后,这个几乎是一个标准了。
- SQL Server身份验证:就其本身而言,SQL Server能够完全管理身份验证。这样的话,你就可以创建一个唯一的用户名(称之为 登录名)和一个密码。一个用户或者应用程序连接SQL Server并且申请证书去访问相关对象。可以将权限直接分配给账号,也可以通过membership在角色里面分配。
配置SQL Server身份验证不是一个简单的非此即彼的选择在这两种类型之间,你可以配置身份验证使用以下两种方法之一:
- 混合身份验证模式:这个Server支持SQL Server和Windows双重的身份验证。
- 只是Windows模式:这个Server只支持Windows身份验证。
微软强烈推荐尽可能的使用Windows身份验证。Windows拥有健全的身份验证的设置,包括密码策略,但是在实际的应用里面,Windows认证并不总是切实可行。SQL Server身份验证能嵌入Windows验证的一些功能,但是这总是不安全的。
Windows Authentication
如果你采用了Windows身份验证模式去配置SQL Server, SQL Server和Windows Server假定一种信任关系。当用户登录Windows的时候,
SQL Server认为Windows已经认证这个用户,然后SQL Server检查这个用户,一些Windows组和一些SQL Server角色(用户可能是一个角色的成员,根据这个角色权限来决定该用户是否有权限访问一些数据库对象)
Windows身份认证比SQL Server身份认证有以下几点优势: