1.SQLServer2005的安全管理机制SQLServer2005的安全性是指保护数据库中的各种数据,以防止因非法使用而造成数据的泄密和破坏。SQLServer2005的安全管理机制包括验证(authentication)和授权(authorization)两种类型。验证是指检验用户的身份标识;授权是指允许用户做些什么。验证过程在用户登录操作系统和SQLServer2005的时候出现,授权过程在用户试图访问数据或执行命令的时候出现。SQLServer2005的安全机制分为四级,其中第一层和第二层属于验证过程,第三层和第四层属于授权过程,如图错误!文档中没有指定样式的文字。-1所示。图错误!文档中没有指定样式的文字。-1SQLServer的四级安全机制第一层次的安全权限是,用户必须登录到操作系统,第二层次的安全权限控制用户能否到登录SQLServer,SQLServer第三层次的安全权限允许用户与一个特定的数据库相连接,第四层次的安全权限允许用户拥有对指定数据库中一个对象的访问权限。1)登录登录是账户标识符,用于连接到SQLSERVER2005账户都称为登录。其作用是用来控制对SQLServer2005的访问权限。SQLServer2005只有在首先验证了指定的登录账号有效后,才完成连接。但登录账号没有使用数据库的权力,即SQLServer2005登录成功并不意味着用户已经可以访问SQLServer2005上的数据库。SQLServer2005的登录账户相应有两种:SQL账户和Windows账户例如,添加Windows登录帐户EXECsp_grantlogin‘training\S26301’--域名\用户名添加SQL登录帐户EXECsp_addlogin‘zhangsan’,‘1234’--用户名,密码SQLServer2005中有两个默认的登录账户:BUILTIN\Administrators和sa。BUILTIN\Administrators提供了对所有Windows2005管理员的登录权限,并且具有在所有数据库中的所有权限。系统管理员(sa)是一个特殊的登录账户,只有在SQLServer2005使用混合验证模式时有效,它也具有在所有数据库中的所有权限。2)用户在数据库内,对象的全部权限和所有权由用户账户控制。在安装SQLServer后,默认数据库中包含两个用户:dbo和guest,即系统内置的数据库用户dbo代表数据库的拥有者(databaseowner)。每个数据库都有dbo用户,创建数据库的用户是该数据库的dbo,系统管理员也自动被映射成dbo。guest用户帐号在安装完SQLServer系统后被自动被加入到master、pubs、tempdb、和northwind数据库中,且不能被删除。用户自己创建的数据库默认情况下不会自动加入guest帐号,但可以手工创建。guest用户也可以像其他用户一样设置权限。当一个数据库具有guest用户帐号时,允许没有用户帐号的登录者访问该数据库。所以guest帐号的设立方便了用户的使用,但如使用不当也可能成为系统安全隐患。3)角色在SQLServer中,角色是管理权限的有力工具。将一些用户添加到具体某种权限的角色中,权限在用户成为角色成员时自动生效。“角色”概念的引入方便了权限的管理,也使权限的分配更加灵活。角色分为服务器角色和数据库角色两种。服务器角色具有一组固定的权限,并且适用于整个服务器范围。它们专门用于管理SQLServer,且不能更改分配给它们的权限。可以在数据库中不存在用户帐户的情况下向固定服务器角色分配登录。数据库角色与本地组有点类似,它也有一系列预定义的权限,你可以直接给用户指派权限,但在大多数情况下,只要把用户放在正确的角色中就会给予它们所需要的权限。一个用户可以是多个角色中的成员,其权限等于多个角色权限的“和”,任何一个角色中的拒绝访问权限会覆盖这个用户所有的其他权限。4)登录、用户、角色三者联系登录、用户、角色是SQLServer2005安全机制的基础。(1)服务器角色和登录名相对应。(2)数据库角色是和用户对应的,数据库角色和用户都是数据库对象,定义和删除的时候必须选择所属的数据库。(3)一个数据库角色中可以有多个用户,一个用户也可以属于多个数据库角色。2.SQLServer2005的权限管理1)用户的权限分类SQLServer中的权限可以分为以下三种:对象权限、语句权限和隐含权限。2)对象权限对象权限是指用户在数据库中执行与表、视图、存储过程等数据库对象有关的操作的权限。例如,是否可以查询表或视图,是否允许向表中插入记录或修改、删除记录,是否可以执行存储过程等。对象权限的主要内容有:对表和视图,是否可以执行SELECT、INSERT、UPDATE、DELETE语句;对表和视图的列,是否可以执行SELECT、UPDATE语句的操作,以及在实施外键约束时作为REFERENCES参考的列;对存储过程,是否可以执行EXECUTE。3)语句权限是指用户创建数据库和数据库中对象(如表、视图、自定义函数、存储过程等)的权限。例如,如果用户想要在数据库中创建表,则应该向该用户授予CREATETABLE语句权限。语句权限适用于语句自身,而不是针对数据库中的特定对象。语句权限实际上是授予用户使用某些创建数据库对象的Transact-SQL语句的权力。只有系统管理员、安全管理员和数据库所有者才可以授予用户语句权限。表错误!文档中没有指定样式的文字。-1用户权限分类表使用语句作用对象权限(指用户是否具有权限对数据库对象执行的操作)语句权限(指用户是否具有权限来执行某一语句)CREATE授予用户的权限对数据库拥有INSERT、UPDATE、SELECT、DELETE的权限。例如:DENYINSERT,UPDATE,DELETEONauthorsTOMary,John,TomBACKUPDATABASE:备份数据库BACEUPLOG:备份事务日志CREATEDATABASE:创建数据库CREATEDEFAULT:创建默认CREATEINDEX:创建索引CREATEPROCEDURE:创建存储过程CREATERULE:创建规则CREATETABLE创建表CREATEVIEW创建视图例如:DENYCREATEDATABASE,CREATETABLETOMary,JohnREVOKE撤消用户的权限DENY拒绝用户的权限注:REVOKE与DENY的区别REVOKE:废除类似于拒绝,但是,废除权限是删除已授予的权限,并不妨碍用户、组或角色从更高级别继承已授予的权限。因此,如果废除用户查看表的权限,不一定能防止用户查看该表,因为已将查看该表的权限授予了用户所属的角色。DENY:禁止权限,表示在不撤销用户访问权限的情况下,禁止某个用户或角色对一个对象执行某种操作。这个权限优先于所有其他权限,拒绝给当前数据库内的安全账户授予权限并防止安全账户通过其组或角色成员资格继承权限。