数据库管理员的主要职责之一是:确保他们所管理的所有SQL Server实例都安全。SQL Server安全本身是一个非常广泛的主题,这篇文章仅仅是我介绍的八个最佳实践,为您保护管理SQL Server的工作提供一点参考。加密数据库备份的重要性
数据库备份对一个组织从来都很重要。如果备份文件没有被加密,就能轻松地复制和还原到任何一个SQL Server,从而导致数据窃取和安全问题。通过使用内置的MEDIAPASSWORD功能创建数据库备份,数据库管理员可以避免这种情况。下面的示例脚本用于在SQL Server中创建加密的数据库备份:
BACKUP DATABASE AdventureWorks
TO DISK='C:AdventureWorks.BAK'
WITH MEDIAPASSWORD='C0mplexP@ssW0rd'
GO通过删除不需要的用户保护数据库备份文件夹
数据库管理员应限制数据库备份文件夹的访问权限,只授予那些真正需要访问的用户。未经授权的访问会导致数据库备份文件夹中易受攻击的备份文件被复制到远程服务器,另外还可能导致意外删除关键的备份文件,从而破坏数据库的还原顺序。因此,作为数据库管理员,确保只有正确的用户有权访问数据库备份文件夹是非常关键的。使用Windows身份验证,不使用SQL Server验证模式
SQL Server安全的其中一个最佳实践是使用Windows身份验证连接到SQL Server。SQL Server的Windows身份验证模式是利用企业级的Active Directory、帐户、组和密码策略来实现更安全的访问。如果你必须要用SQL Server身份验证模式连接到SQL Server,建议不要使用系统管理员(SA)帐户。即使使用SQL Server身份验证,在设置用户帐户密码时也可以利用Windows密码策略。将系统管理员帐户密码设置得更复杂
如果使用SQL Server的混合模式身份验证,一定要为SA帐户设置一个复杂的密码;而且要避免在Web 应用程序中用SA帐户连接到SQL Server,避免用系统管理员帐户执行日常维护活动。对于日常的操作,使用具有适当权限的Windows帐户。不要忘记每几天更改一次SA帐户密码。审核登录
一定要审核SQL Server登录失败的操作。一旦在SQL Server中启用登录审核,登录失败和登录成功的信息都将写入SQL Server错误日志。定期监测SQL Server错误日志用以发现可疑活动。关闭SQL Server浏览器服务
数据库管理员在运行SQL Server 默认实例时,应关闭SQL Server浏览器服务。哪怕正在运行一个命名实例,也可以显式定义端口,并在应用程序的连接字符串中指定以连接到SQL Server的命名实例。禁用SQL Server中未使用的功能
禁用诸如XP_CMDSHELL、OLE AUTOMATION、OPENROWSET和OPENDATASET等功能以减少受攻击的可能性。在SQL Server 2005中,可以使用SQL Server Configuration Manager(配置管理器)启用或禁用这些功能。如果使用SQL Server 2008或更高版本,可以使用基于策略的管理功能来启用或禁用上述功能。减少SQL Server服务帐户的特权
最后一个的最佳实践是数据库管理员应该始终以最低权限的本地域帐户来运行SQL Server服务。避免在本地系统、本地管理员或域管理员帐户等上下文环境中运行SQL Server服务。但是,请确保SQL Server服务帐户具有对数据、日志和备份目录的读取和写入活动的“完全控制”权限。