在SQL Server 2008中所包含的分面的其中之一是Surface Area 分面,你可以使用这个分面来定义一个控制许多SQL Server 2008特性的状态的政策。通过创建一个定义你想要的用于你的服务器的surface area设置的政策,你可以很容易地在你公司里的所有SQL Server实例上实施最小限度的surface area,并且可以降低恶意攻击的可能性。
3. 验证
Microsoft部署SQL Server 2000时是当数据和服务器要求保护但不需要抵挡如今在网络上所看到的攻击的时候。基本的验证问题仍然相同,“你是谁、你怎样证明?”但是SQL Server 2008提供更多强大的验证特性,它们提供了更好的支持,在服务器的安全防卫上让好人通过,把坏人阻挡在外。
SQL Server 验证提供了对不是基于Windows的客户端或应用程序的验证,它使用一个简单的连接字符串,其中包含用户ID和密码。尽管这个登陆易于使用并在应用程序开发人员中很流行,但是它不像Windows 验证一样安全,是不建议使用的验证机制。
SQL Server 2008改进了SQL Server验证的选项。首先,它支持默认情况下通过使用SQL产生的证书进行路线加密。管理员不需要获得和安装一个有效的SSL证书来确保SQL证书流程的路线是安全的。有了SQL Server 2008 自动生成这些证书,当传送登陆包时它在默认情况下自动加密路线。这发生在客户端是SQL Server 2005级别或以上的情况下。
注意 当攻击者在网络上搜寻时,SQL Server产生的本地证书防止被动的中间人攻击。为了更有效地保护你的系统免受中间人攻击,你应该部署和使用客户端信任的证书。
SQL Server 2008进一步地加强了SQL Server验证,因为默认情况下,在与Windows 2003 server或以上版本结合使用时,数据库引擎目前采用Windows Group Policy用于密码复杂度、密码期限和在SQL登陆中的账户锁定。这意味着你可以对你的SQL Server帐户实施Windows密码政策。
3.1 实施密码政策
对于SQL Server 2008,密码政策的实施是内嵌到服务器中的。使用NetValidatePasswordPolicy()API,它是Windows Server 2003上的NetAPI32 库的一部分,SQL Server 在验证期间和按照Windows对于密码强度、期限和帐户锁定的政策进行密码的设置和重置期间进行密码验证。表3列出了这个政策的组成部分。
ALTER LOGIN alice WITH PASSWORD = '3x1Tq#PO^YIAz' UNLOCK