第十二章SQLServer2000的安全管理SQLServer数据库应用技术SQLServer20002本章主要内容12.1SQLServer2000的安全认证模式12.2创建和管理安全帐户12.3管理数据库用户和角色12.4SQLServer权限管理SQLServer2000312.1安全认证模式数据的安全性是指保护数据以防止因不合理的使用而造成数据的泄密和破坏,这就要采取一定的安全保护措施。SQLServer2000的安全模型分为3层结构,分别为服务器安全管理、数据库安全管理和数据库对象的访问权限管理。(1)第1关,用户必须登录到SQLServer的服务器实例。(2)第2关,在要访问的数据库中,用户的登录名要有对应的用户账号。(在数据库管理系统中,用检查口令等手段来检查用户身份,通过检查的用户才能进入数据库系统中)(3)第3关,数据库用户账号要具有访问相应数据对象的权限。SQLServer2000412.1安全认证模式为了实现安全性,SQLServer对用户的访问进行两个阶段的检验:(1)身份验证阶段(Authentication):用户在SQLServer上获得对任何数据库的访问权限之前,必须登录到SQLServer上,并且被认为是合法的。SQLServer或者WindowsNT/2000对用户进行验证。如果验证通过,用户就可以连接到SQLServer上,否则,服务器将拒绝用户登录。从而保证了系统安全。(2)权限认证阶段(PermissionValidation):用户身份验证通过后,登录到SQLServer上,系统检查用户是否有访问服务器上数据的权限。在身份验证阶段,系统是对登录的用户进行验证。SQLServer和WindowsNT/2000是结合在一起的,因此产生了两种验证模式:Windows身份验证模式和混合身份验证模式。SQLServer20005身份验证----Windows身份验证模式在该验证模式下,SQLServer检测当前使用的Windows用户帐号,并在Syslogins表中查找该帐号,以确定该帐号是否有权登录。在这种方式下,用户不必提供密码或者登录名让SQLServer验证。Windows验证模式下主要有以下优点:1.数据库管理员的工作可以集中在管理数据库上面,而不是管理用户帐户。对用户帐户的管理可以交给WindowsNT/2000去完成。2.WindowNT/2000有着更强的用户帐户管理工具。可以设置帐户锁定、密码期限等。如果不是通过定制来扩展SQLServer,SQLServer是不具备这些功能的。3.WindowsNT/2000的组策略支持多个用户同时被授权访问SQLServer。p288注意事项SQLServer20006身份验证----混合身份验证模式混合验证模式允许以SQLServer验证或者Windows验证模式来进行验证。使用哪个模式取决于在最初的通信时使用的网络库。如果一个用户使用的是TCP/IPSockets进行登录验证,则将使用SQLServer验证模式;如果用户使用命名管道,则登录时将使用Windows验证模式。这种模式能更好地适应用户的各种环境。但是对于Windows9X系列的操作系统,只能使用SQLServer验证模式。SQLServer验证模式下,处理登录的过程为:用户在输入登录名和密码后,SQLServer在系统注册表中检测输入的登录名和密码。如果输入的登录名存在,而且密码也正确,就可以登录到SQLServer上。SQLServer20007身份验证总结:验证模式的选择通常与网络验证的模型和客户与服务器间的通信协议有关。如果网络主要是WindowsNT/2000网,则用户登录到WindowsNT/2000时已经得到了确认,因此,使用Windows验证模式将减轻系统的工作负担;但是,如果网络主要是Novell网络或者对等网,则使用SQLServer验证模式将是很方便的。因为,这种情况下,只需创建SQLServer登录帐户,而不用创建WindowsNT/2000帐户。SQLServer20008身份验证注意:修改验证模式后,必须首先停止SQLServer服务,然后重新启动SQLServer,才能使新的设置生效。SQLServer20009权限认证但是通过认证阶段并不代表用户能够访问SQLServer中的数据,同时他还必须通过许可确认。用户只有在具有访问数据库的权限之后,才能够对服务器上的数据库进行权限许可下的各种操作,这种用户访问数据库权限的设置是通过用户帐号来实现的。即:数据库中的用户帐户用于为数据库中的对象设置安全权限,用户帐户的数据库访问权限决定了用户在数据库中可以执行哪些操作SQLServer20001012.1安全认证模式一种比较通用的DBMS安全模型:一个角色(Role)一般是指一个机构内的一个称谓或一个任务的集合。为了方便,可把用户归属不同的角色,对不同的角色有不同的授权。SQLServer20001112.2创建和管理安全帐户在SQLServer中,帐号有两种:一种是登录服务器的登录帐号(loginname)另外一种是使用数据库的用户帐号(username)。登录帐号是指能登录到SQLServer的帐号,属于服务器的层面,它本身并不能让用户访问服务器中的数据库,而登录者要使用服务器中的数据库时,必须要有用户帐号才能够存取数据库。就如同公司门口先刷卡进入(登录服务器),然后再拿钥匙打开自己的办公室(进入数据库)一样。用户名要在特定的数据库内创建,并关联一个登录名(当一个用户创建时,必须关联一个登录名)。用户定义的信息存放在服务器的每个数据库的sysusers表中。通过授权给用户来指定用户可以访问的数据库对象的权限。SQLServer200012一.登录帐户---A.查看登录帐号方法1:使用企业管理器在安装SQLServer后,系统默认创建两个登录帐号。进入企业管理器,展开“SQLServer组”,找到所要连接的SQLServer服务器,展开该服务器对应的文件夹,再展开“安全性”文件夹,单击“登录”选项,即可看到系统创建的默认登录帐号及已建立的其他登录帐号。其中:BUILTIN\Administrators、sa是默认的登录帐号方法2:使用存储过程使用sp_helplogins可查看登录帐号。格式是:execsp_helploginsSQLServer200013B.创建SQLServer登录帐户1.在企业管理器下创建使用Windows身份验证的登录账户图1选择Windows2000用户添加到SQLServer登录中SQLServer200014B.创建SQLServer登录帐户2.在企业管理器下创建使用SQLServer身份验证的登录账户3.使用SQL语句创建两种登录账户(A)在查询分析器下,可以使用系统存储过程sp_grantlogin将一个Windows2000系统客户映射为一个使用Windows身份验证的SQLServer登录账户。sp_grantlogin的基本语法格式如下。sp_grantlogin‘登录名’SQLServer200015二.数据库的用户账号一个SQLServer的登录帐号只有成为该数据库的用户时,对该数据库才有访问权限。在安装SQLServer后,默认数据库如:master、tempdb、msdb等包含两个用户:dbo和guest。数据库的guest用户是一个特殊的用户,它允许非数据库用户以该用户身份访问该数据库。在SQLServer中,登录账户只能访问允许的数据库,但如果一个数据库有guest账户,则不管登录账户是否被授权,都可通过guest用户访问数据库。SQLServer200016二.数据库的用户账号任何一个登录帐号都可以通过guest用户帐号来存取相应的数据库。但是当新建一个数据库时,默认只有dbo用户帐号而没有guest用户帐号。如果希望非数据库用户也能访问数据库,则可为数据库添加guest用户。每个登录帐号在一个数据库中只能有一个用户帐号,但每个登录帐号可以在不同的数据库中各有一个用户帐号。如果在新建登录帐号过程中,指定对某个数据库具有存取权限,则在该数据库中将自动创建一个与该登录帐号同名的用户帐号。(p293注意事项)SQLServer200017A.查看数据库的用户帐户方法1:使用企业管理器在企业管理器中,展开SQLServer组及其服务器,在“数据库”文件夹中,展开某数据库如:Student的文件夹,单击“用户”选项,则可在企业管理器的右窗格中显示出目前该数据库中所有的用户。方法2:利用存储过程格式是:EXECsp_helpuser则显示当前数据库中的用户信息【例】USEStudentEXECsp_helpuser可列出目前Study数据库中所有的数据库用户帐户。SQLServer200018B.创建数据库的用户帐户1.在登陆帐户属性下添加数据库用户SQLServer200019B.创建数据库的用户帐户2.p293~p294所描述SQLServer200020C.设置数据库用户帐户的权限步骤如下:(1)在企业管理器的右窗格中的用户帐号上单击鼠标右键,然后选择“属性”命令,打开“数据库用户属性”对话框。(2)在“数据库用户属性”对话框中,单击“权限”按钮,打开权限设置对话框。在此对话框中,可以设置用户对数据库对象所具有的权限。在“对象”列中,显示了数据库中所有的对象,而“所有者”列则显示了相应对象的所有者。其后的6列则是对数据库对象的操作,具体含义如下:SQLServer200021C.设置数据库用户帐户的权限SELECT:对表或者视图的查询INSERT:在表或者视图中插入记录UPDATE:对表或者视图中的数据修改DELETE:删除表或者视图中的数据EXEC:执行存储过程DRI:DeclarativeReferentialIntegrity,可对表的外键加上限制,以达成表的参照完整性。对某个数据库对象而言,如果选中对应的复选框,则表示具有对该对象进行相应操作的权限。每个复选框具有3种状态。空白时表示未指定权限,或权限还原到未设置状态;当打“√”时表示具有该权限;当打“╳”时,表示不具有该权限。(3)如果要设置对表或者视图的某一字段进行操作的权限,可在列表中选择表或者视图对象,然后单击“列”按钮,可打开“列权限”对话框。使用该对话框即可进行相应权限的设置。SQLServer200022SQLServer20002312.3管理数据库用户和角色在SQLServer2000中,将一些用户集中到一个单元中并对该单元统一设定权限,这样的单元称为角色(role).数据库用户角色在SQLServer中联系着两集合,一个是权限的集合,另一个是数据库用户的集合.权限在用户成为角色成员时自动生效.角色分为服务器角色和数据库角色两种,前者用于为整个服务器设置权限,后者用于为单个数据库设置权限.SQLServer200024一.服务器角色服务器角色是指根据SQLServer的管理任务,以及这些任务相对的重要性等级来把具有SQLServer管理职能的用户划分为不同的用户组,每一组所具有的管理SQLServer的权限都是SQLServer内置的,即不能对其进行添加、修改和删除,只能向其中加入用户或者其他角色。对数据库服务器操作的权限不能直接赋给其他登录账户,只能使某些登录账户成为固定服务器角色的成员,才能使他们具有这些权限。SQLServer2000具有如下服务器角色:SQLServer200025一.服务器角色(1)sysadmin,有权在SQLServer中进行任何活动。(2)serveradmin,有权设置服务器一级的配置选项,关闭服务器。(3)setupadmin,有权管理链接服务器和启动过程。(4)securityadmin,有权管理登录和CREATEDATABAS