由于很多原因需要作出安全决定的人常常没有明白数据的真正价值所以经常无法对数据进行足够的保护让需要你数据的人能够在需要的时候访问到它并确保其有效性可能是数据库管理员最重要的职责但是保持数据能够被访问并不意味着要让它对所有的人都开放因此你需要仔细保护数据的安全然后只对需要它的人开放
安全措施
普通的维护和数据库的更改应该让位于安全措施这一过程包括如下步骤
● 为缺省的系统管理员(SA)帐号分配一个复杂的密码然后创建你唯一命名的帐号来处理管理工作并给该帐号分配sysadmin角色要确保新的帐号也具有复杂的密码然后你就可以从sysadmin角色里把SA帐号删掉
● 为每个用户设置单独的密码但是更好的方法是使用Windows集成的安全(机制)并让Windows来强制执行严格的密码规则
● 要确定哪些用户需要查看什么数据然后分配适当的许可不要仅仅为图省事而给予用户过多的权限例如你的数据输入操作员就的确不需要查看其他人的工资
● 确定哪些用户需要更改什么数据然后再分配适当的许可帐号管理人员应该可以看到所有的客户信息但是你可能希望限制谁才有权更改这些信息具体的说掌握特定帐号的帐号管理人员可能是唯一一个被赋予权限更改客户数据的人
通过本系列的文章你会了解到更多关于这些措施的内容但是你应该从一开始就考虑安全的问题否则你数据库的任何用户都可能窃取或者删除你最敏感的数据
可能是什么出错?
众所周知SQL服务器在刚安装好的的时候并不安全你必须花一些心思和精力来充分和成功地保证你服务器的安全甚至在开始安装服务器之前你就需要考虑两个非常重要的问题
● 保护管理员帐号和密码的安全
● 保护你的系统不受Slammer蠕虫病毒的侵害
● 保护刚刚安装好的服务器
利用SA帐号SQL服务器的确具有缺省的安全(措施)在安装过程中SQL服务器会自动地创建一个管理员用户并为其指定SA这个用户名和一个空白的密码有些管理员会把这个SA的密码留成空白或者设置为大家都知道的一个常见密码这就使得其整个系统能够被轻易攻破如果你犯了这个错误那么任何人都可以登录进你的数据库并做他们想做的事情具有管理员许可的任何人都可以做他们想做的任何事——不仅仅是数据库还有整台计算机这肯定不是一件好事你希望限制每个用户只让他们访问他们需要的东西——不多也不少
在日常的管理工作中不要使用SA帐号用一个真正安全的密码来收藏好这个帐号然后为管理工作专门创建另外一个帐号(具体是SQL服务器帐号还是Windows帐号这要根据你的验证模式)你需要避免很容易就会被猜出来的帐号名或者控制整台服务器的帐号的密码因为如果有人使用这个帐号成功地登录进来那么游戏就此结束
一次令人警醒的事件——Slammer蠕虫
年月一个感染性极强的恶意代码Slammer蠕虫将攻击目标瞄准了SQL服务器的安装过程通过利用SQL服务器代码里的漏洞它能够在安装SQL服务器的时候绑架计算机并将自己的多个副本安插进其他被攻破的计算机里利用某些帐号这个蠕虫在被释放出来的分钟之内就渗透进了Internet微软花了大量的精力来发布补丁但是Slammer的影响现在还时有发生有些媒体甚至还宣称它破坏了SQL服务器工作组的工作结果导致SQL服务器下一版本的beta版发布被推迟
为什么在这一事件爆发数月之后你还需要关注这个问题?因为现在在网上每天还有受到感染的机器在向外发送Slammer的副本如果把没有打补丁的SQL服务器连接到Internet上你就可能成为下一个受害者这次事件告诉我们在插上连接到Internet的电缆之前你需要保护好自己服务器的安全并安装最新的服务包和补丁
服务包的重要性
服务包可以免费下载所以你不会因为买不起而不去安装Slammer蠕虫不会破坏数据但是它会导致你服务的严重崩溃其后果和数据被破坏一样严重保护措施非常简单下载服务包或者服务包a
这个蠕虫如何工作的技术细节在这里并不重要重要的是Slammer蠕虫所攻击的漏洞已经在个月之前由微软发布补丁进行了修补但是还造成这么大的损失受到这个蠕虫攻击的商业机构两次受害一次是由没有保护好系统的管理员造成的另一次是由蠕虫造成的
你也应该要记住没有什么能够保证SQL服务器服务包能够修补所有的漏洞你应该定期访问微软的安全公告牌页面以确保你能够得知未来服务包和补丁的发布
选择验证模式
在安装SQL服务器过程中你要首先作出的一个决定是选择使用哪种安全模式安全模式有两种
● Windows验证模式(也叫做集成模式)
● 混合模式
在Windows验证模式下用户通过已有的Windows用户帐号连接到SQL服务器上当用户使用合法的用户名和密码连接到服务器的时候SQL服务器会验证用户的Windows登录信息这样用户只需要一次就能够同时登录进Windows和SQL服务器帐号信息由Windows严格保存
混合模式是Windows验证和SQL服务器验证的结合在混合验证模式下有的用户可以只需要一次注册就可以继续使用Windows的帐号来访问SQL服务器而其他的人可以使用SQL服务器的用户帐号这一帐号是同Windows帐号完全分离的每个SQL服务器的帐号都会保存自己的用户名和密码即使这两个登录的值完全相同用户也必须登录两次——一次用于进入Windows另一次用于进入SQL服务器
Windows验证模式要优于混合模式其原因如下
● 它提供了比SQL服务器验证更多的特性
● 大多数管理员都认为Windows验证是两种模式中更容易实现和使用的
● 在Windows验证模式下没有必要在连接字符串里保存密码——又少了一样要保护的东西
● Windows验证意味着你只需要在一个地方管理密码而不是两个地方
不幸的是不是所有的人都可以使用Windows验证SQL服务器(或者更早的版本)要求使用混合模式Windows验证只能在SQL服务器上使用在某些情况下(例如当你正在使用域以外的Web服务器从域以内的SQL服务器上获取数据的时候)Windows验证无法工作因为信任书无法通过域的边界在这些情况下你必须使用混合模式和SQL服务器登录
其他关于安装的提示
在安装SQL服务器的时候有一些东西需要你考虑
● 要将TCP/IP用作SQL服务器的网络库这是微软所推荐的库所顺理成章地成为经过测试的最佳库如果服务器会被放在公众的Internet上那么就要使用一个非标准的端口这就可以让坏小子们更难找到它
● 要使用一个低权限的帐号来运行SQL服务器而不是用管理员帐号这会在安全系统被攻破的时候限制其造成的损失
● 不要允许未受安全保护的来宾帐号访问任何包含有保护数据的数据库
● 将服务器从物理上锁在服务器房间或者柜子里以保证其安全要记住大多数入侵都来自内部
结论
让安全从一开始就成为你工作重点的头一个无论是保护你的数据不因为能力不足而遭受损失还是要防止有意破坏而受到的损失你都要花时间学习安全模式然后小心地应用它只需要一次安全恶梦你就会成为安全的相信者所以正视安全睡个好觉