通俗地讲资料库是储存具有某些特性的资料的数据库通常我们把使用资料库系统的用户划分为四类资料库设计者资料库管理者应用程序设计者及一般使用者其中资料库管理者负责账号的管理与维护决定所有资料库使用者的使用权限资料库安全管理可说是资料库管理者最重要的工作SQL Server是Microsoft的企业级资料库它是个功能强大易于使用的资料库可直接与Windows NT/的使用者账号做安全机制整合
那么到底什么是安全管理呢?简而言之安全管理是指对需要登入服务器的人员进行管理在应用程序中我们会对资料库的各类使用者设置资料操作权限通常是直接在应用程序中做账号与密码的管理但这种做法需要撰写程序控制而SQL Server具有亲切易操作的图形使用界面可以方便地管理使用者对SQL Server的存取权限
SQL Server 安全管理可分为个层次即登入账户资料库的管理与连接特定资料库的权限和使用者对所连接资料库部分的操作权限下面我们将针对这个层次做详细说明
一登入账户
任何需要存取 SQL Server的使用者皆需要有一组服务器认可的账户和密码SQL Server支持种登入方式一种为Windows验证另一种为SQL Server验证前者只要在SQL Server中建立与Windwos NT/对应的登入账户让使用者登入Windows NT/时所用的账户能与在SQL Server中的账户相互对应即可顺利连上SQL Server由此我们完成了对Windows NT/安全管理机制的整合
接下来资料库管理者在Windows NT上登入账号可直接将Windows NT中的群组加到SQL Server中从而成为一个登入账户
通过上述操作Windows NT登入群组中的成员皆可连接SQL Server如果该群组中某一成员不允许其登入SQL Server可在SQL Server中将该成员的个人账户设为拒绝存取如果把SQL Server安装在 Windows Windows 或Windows Me中则无法使用Windows验证方式
如果使用SQL Server验证必须在SQL Server中为要连接SQL Server的使用者建立登入的账号名称和密码这些账号和密码与Windows NT/的账户无关
二管理与连接特定资料库的权限
在建立登入账户后使用者便能进入SQL Server中但并不代表使用者有连接SQL Server特定资料库的权限必须对使用者或群组设置对SQL Server的操作权限SQL Server中对资料库的操作权限可分为服务器自身的操作权限与资料库的存取权限对SQL Server的操作权限可由服务器角色来设置资料库的存取权限则可由角色与使用者对个别表格的存取权限来设置那么服务器角色与角色之间有什么不同呢?
服务器角色
SQL Server系统内建种服务器角色(可把角色想像成Windows NT账号中的群组)它不能更改或新增当对某一使用者或群组设置好服务器角色后其便拥有该服务器角色所拥有的权限服务器角色是将SQL Server的各项管理工作加以分类如建立账号和资料库备份等它与资料库角色不一样后者为对个别资料库的操作权限
我们简单列出种服务器角色所拥有的权限
system administrators 表示系统管理员可执行任何动作
security administrators 表示管理登入账户
server administrators 表示设置SQL Server的各项参数
setup administrators表示有关replication(复制)的设置与管理扩充预存程序
process administrators 表示管理SQL Server所有执行中的程序
disk administrators表示管理资料库文件
database administrators 表示建立和更改资料库属性
bulk insert administrators 表示对可执行bulk insert操作的管理
角色
SQL Server内建种资料库角色它不能更改或删除但可对个别资料库增加角色若给予使用者有内建角色中的资料库拥有者权限它便拥有该资料库的完整操作权其余各角色的详细权限说明可参考SQL Server的bol(即SQL Server books online)通过查询关键字roles进入标题为roles的项目其中有包含内建服务器角色与资料库角色的完整说明在此不多赘述需要注意的是在对使用者分别设置了各种角色(每一使用者或群组可具有多种角色)后它便拥有所有角色联集的权限但若其中有某一角色对某一操作权(如对某一表格的select权)设置了拒绝它将失去了该项权限换句话说拒绝权限优于授予权限
三资料库中部件的存取权限
对于SQL Server的管理与可连接特定资料库的权限由SQL Server所提供的服务器角色与资料库角色基本上可以符合我们大部份需求另外可直接对使用者或群组设置对资料库中部件的个别存取权限这些个别的存取权限有selectinsertupdatedeleteexec和dri其中exec与dri分别表示对预存程序的执行权限和对表格有效性的验证权限在做直接的权限设置时我们也可针对特殊的使用者(如内建资料库角色不能满足时)当然如果使用相同权限方式的用户比较多时可以增加一个符合需求的资料库角色或将这些使用者在Windows NT/上先归于某群组再对该群组设置权限这样做比较方便于管理与维护
除上述内容之外在实际运行时笔者对于资料库安全的把关总结出以下几点建议
除非必要否则尽量以Windows验证来管理可连接SQL Server的使用者以整合Windows NT/的安全机制
善用SQL Server的服务器角色与资料库角色功能
善用SQL Server的加密功能
SQL Server提供了登入账号网络传输虚拟表和预存程序的加密功能其中账号的密码加密是预设的而网络间传输资料则可用SSL方式进行加密要启动此功能必须启动netlibrary的加密功能同时要配合Windows 的CA功能并在服务器端与用户端设置完成从而双方在传输资料前便会在SSL加密后再进行传输由于虚拟表和预存程序的定义是以明码保存在系统资料表中若要将虚拟表和预存程序加密可在其建立时在eNTerprise manager中设置加密选项或以 alter 叙述来设置加密
系统安装完毕后务必更改预设的sa密码免得有其他使用者义务管理您的SQL Server