《第四章用户和安全性管理.ppt》由会员分享,可在线阅读,更多相关《第四章用户和安全性管理.ppt(36页珍藏版)》请在三一办公上搜索。
1、-SQL Server 2000,第四章 用户和安全性管理,用户和安全性管理,SQL Server的安全性管理是建立在authentication和permission两者机制上的。认证是指来确定登录SQL Server的用户的登录账号和密码是否正确,以此来验证其是否具有连接SQL Server的权限。通过认证阶段并不代表能够访问SQL Server中的数据,用户只有在获取访问数据库的权限之后,才能够对服务器上的数据库进行权限许可下的各种操作。用户访问数据库权限的设置是通过用户账号来实现的。同时在SQL Server中角色作为用户组的代替物,大大地简化了安全性管理,SQL Server 的安全
2、验证 登录到SQL Server,WINDOWS 认证模式SQL Server 数据库系统通常运行在WINDOWS2000或NT服务器平台,WINDOWS认证模式正是利用这一用户安全性和账号管理的机制,允许SQL Server也可以使用NT的用户名和口令。在该模式下用户只要通过WINDOWS 的认证,就可连接到SQL ServerWINDOWS 认证模式比起SQL Server 认证模式来有许多优点原因在于WNDOWS认证模式集成了NT 或WINDOWS 2000 的安全系统并且NT 安全管理具有众多特征如安全合法性口令加密对密码最小长度进行限制等所以当用户试图登录到SQLServer 时它从
3、NT 或WNDOWS 2000 的网络安全属性中获取登录用户的账号与密码并使用NT 或WINDWOS 2000 验证账号和密码的机制来检验登录的合法性从而提高了SQL Server 的安全性在WINDOWS NT 中使用了用户组所以当使用WINDOWS 认证时我们总是把用户归入一定的NT 用户组以便当在SQL Server 中对NT 用户组进行数据库访问权限设置时能够把这种权限设置传递给单一用户而且当新增加一个登录用户时也总把它归入某一NT 用户组这种方法可以使用户更为方便地加入到系统中并消除了逐一为每一个用户进行数据库访问权限设置而带来的不必要的工作量,SQL Server 的安全验证 登录
4、到SQL Server,混合认证模式在混合认证模式下WINDOWS认证和SQL Server认证这两种认证模式都是可用的。NT的用户既可以使用NT认证,也可以使用SQL Server认证。SQL Server认证:在该认证模式下,用户在连接SQL Server时必须提供登录名和登录密码。这些登录信息存储在系统表syslogins中,与NT的登录账号无关,SQL Server 自己执行认证。,SQL Server 的安全验证 登录到SQL Server,SQL Server 认证 在该认证模式下用户在连接SQL Server 时必须提供登录名和登录密码这些登录信息存储在系统表syslogins
5、中与NT 的登录账号无关SQL Server 自己执行认证处理如果输入的登录信息与系统表syslogins 中的某条记录相匹配则表明登录成功,SQL Server 的安全验证 SQL Server认证模式的设置,启动企业管理器选择要进行认证模式设置的服务器右击该服务器,在弹出菜单中选择“属性”将弹出SQL Server Properties对话框在SQL Server Properties对话框中选择“安全性”选项在“安全性”选项栏的”身份验证”处,选择要设置的认证模式。同时可以在”审核级别”处选择任意一个单选按钮,来决定跟踪记录用户登录时的哪种信息。在”启动服务帐户”设置当启动Enterpr
6、ise Manager时默认的登录者,SQL Server 的安全验证 管理SQL Server登录账号,用企业管理器管理SQL Server登录启动企业管理器单击登录服务器紧邻的+标志单击安全性文件夹旁边的+标志右击”登录”图标从弹出菜单中选择“新建登录”选项,将弹出新建登录对话框,SQL Server 的安全验证 管理SQL Server登录账号,使用Transact_SQL管理SQL Server登录在SQL Server中一些系统存储过程提供了管理SQL Server登录功能,主要包括:sp_addlogin 创建新的使用SQL Server 认证模式的登录账号sp_droplogin
7、 SQL Server 中删除该登录账号禁止其访问SQL Serversp_granlogin 设定一WINDOWS NT 用户或用户组为SQL Server 登录者sp_denylogin 拒绝某一NT 用户或用户组连接到SQL Serversp_revokelogin 用来删除NT 用户或用户组在SQL Server 上的登录信息,SQL Server 的安全验证 管理SQL Server登录账号,sp_addlogin loginame=login passwd=password defdb=database deflanguage=language sid=sid encryptopt
8、=encryption_option其中 loginame 登录名 passwd 登录密码 defdb 登录时缺省数据库 deflanguage 登录时缺省语言 sid 安全标识码 encryptopt 将密码存储到系统表时是否对其进行加密 encryptopt 参数有三个选项NULL 表示对密码进行加密skip_encryption 表示对密码不加密skip_encryption_old 只在SQL Server 升级时使用表示旧版本已对密码加密,SQL Server 的安全验证 管理SQL Server登录账号,例:新建SQL Server 登录者albert,密码为foot,默认数据库为
9、studentEXEC sp_addlogin albert,food,studentsp_droplogin loginame=login例:删除SQL Server 登录者albertexec sp_droplogin albertsp_grantlogin loginame=login例:将WINDOWS NT 用户MIS96XJ 设定为SQL Server 登录者exec sp_grantlogin MIS96XJ例:拒绝NT 用户MIS96XJ 登录到SQL Serverexec sp_denylogin MIS96XJ 例:删除NT 用户MIS96XJ 登录到SQL SERVER
10、的登录信息exec sp_revokelogin MIS96XJ,注意事项,SQL Server 的登录名和密码最大长度为128 个字符,这些字符可以是英文字母符数字。但下面三种情况下的登录名将被视为无效的:登录名包括字符新建的登录名是保留名如sa或public或是已经存在的登录名登录名不能为NULL或是一个空字符串不能删除系统管理者sa 以及当前连接到SQL Server 的登录如果用户仍存在数据库sysusers表中则不能删除该登录账号sp_addlogin 和sp_droplogin 只能用在SQL Server 认证模式下sp_granlogin 和sp_revokelogin 只能使
11、用于NT 认证模式下对NT 用户或 用户组账号做设定而不能对SQL Server 维护的登录账号进行设定以上介绍的各系统过程只有属于sysadmin(系统管理员,可以在 SQL Server 中执行任何活动)和securityadmin(安全管理员,可以设置服务器范围的配置选项,关闭服务器)服务器角色的成员才可以执行这些命令如果使用了NT 认证模式,如果已经把某一NT用户或用户组设定为SQL Server的登录者。那么若从NT 域中删除该NT用户或用户组,则相应的SQL Server登录将成为孤儿,而且其SQL Server登录信息仍存储在系统表syslogins 中,SQL Server 的
12、安全验证 管理SQL Server数据库账号,数据库用户用来指出哪一个人可以访问哪一个数据库。在一个数据库中,用户ID惟一标识一个用户,用户对数据的访问权限,以及对数据库对象的所有关系都是通过用户账号来控制的。用户账号总是基于数据库的,即两个不同数据库中可以有两个相同的用户账号。在数据库中用户账号与登录账号是两个不同的概念,一个合法的登录账号只表明该账号通过了NT认证或SQL Server认证,但不能表明其可以对数据库数据和数据对象进行某种或某些操作。所以一个登录账号总是与一个或多个数据库用户账号相对应。,SQL Server 的安全验证 管理SQL Server数据库账号,通常而言数据库用户
13、账号总是与某一登录账号相关联但有一个例外那就是guest 用户在安装系统时guest 用户被加入到master pubs tempdb 和Northwind 数据中那么SQL Server 为什么要进行这样的处理呢让我们看看在用户通过NT 认证或SQLServer 认证而成功登录到SQL Server 之后SQL Server 又做了哪些事情1 SQL Server 检查该登录用户是否有合法的用户名如果有合法用户则允许其以用户名访问数据库否则执行第二步2 SQL Server 检查是否有guest 用户如果有则允许登录用户以guest 用户来访问数据库如果没有则该登录用户被拒绝由此可见gues
14、t 用户主要是让那些没有属于自己的用户账号的SQL Server 登录者把其作为缺省的用户从而使该登录者能够访问具有guest 用户的数据库通常我们可以像删除或添加其它用户那样删除或添加guest 用户但是不能从master 或 tempdb 数据库中删除该用户并且在一个新建的数据库中不存在guest 用户除非将其添加进行,SQL Server 的安全验证 管理SQL Server数据库账号,利用SQL Server Enterprise Manager管理数据库用户 启动SQL Server Enterprise Manager单击登录服务器旁边的+标志打开数据库文件夹打开要创建用户的数据库
15、右击”用户”图标在弹出菜单中选择”新建用户”弹出“新建用户”对话框在“登录名”选择框内选择已经创建的登录账号,在”用户名”选择框内输入数据库用户名称,SQL Server 的安全验证 管理SQL Server数据库账号,利用系统过程管理数据库用户 创建新数据库用户:sp_granddbaccess 就是被用来为SQL Server登录者或NT用户或用户组建立一个相匹配的数据用户账号 删除数据库用户:sp_revokedbaccess 用来将数据库用户从当前数据库中删除 查看数据库用户信息:sp_helpuser 被用来显示当前数据库的指定用户信息,管理SQL Server 的权限,用户在登录到
16、SQL Server之后,其用户账号所归属的NT组或角色被授予的权限,决定了该用户能够对哪些数据库对象执行哪种操作,以及能够访问修改哪些数据。在SQL Server中包括两种类型的权限即:对象权限和语句权限在SQL Server 中我们使用GRANT REVOKE 和DENY 三种命令来管理权限:GRANT 用来把权限授予某一用户以允许该用户执行针对该对象的操作REVOKE 取消用户对某一对象或语句的权限这些权限是经过GRANT 语句DENY 用来禁止用户对某一对象或语句的权限明确禁止其对某一用户对象,允许的类型,授予、拒绝及废除权限,授予权限,禁止权限,废除权限,管理SQL Server 的
17、权限,对象权限对象权限是针对表视图存储过程而言它决定了能对表视图存储过程执行哪些操作如UPDATE DELETE INSERT EXECUTE,管理SQL Server 的权限,语句权限语句权限主要指用户是否具有权限来执行某一语句。这些语句通常是一些具有管理性的操作,如创建数据库、表、存储过程等语句,管理SQL Server 的权限,利用企业管理器管理权限启动企业管理器登录到指定的服务器展开指定的数据库然后单击“用户”图标此时在右窗格中将显示数据库所有用户在数据库用户清单中选择要进行权限设置的用户右击用户名然后在弹出菜单中选择”属性”弹出”数据库用户属性”对话框在”数据库用户属性”对话框中单击
18、”权限”按钮弹出”数据库用户属性”对话框在该对话框中进行对象权限设置,管理SQL Server 的权限,利用 Transact_SQL管理权限GRANT ALL PRIVILEGES|permission.n column.n ON table|view|ON table|view column.n|ON stored_procedure|extended_procedure|ON user_defined_function TO security_account.n WITH GRANT OPTION AS group|role REVOKE 和DENY 语法格式与GRANT 语法格式一样,
19、利用角色管理SQL Server,自SQL Server 7.0版本开始引入了新的概念角色。从而替代以前版本中组的概念,和组一样SQL Server管理者可以将某些用户设置为某一角色。这样只对角色进行权限设置,便可实现对所有用户权限的设置。大大减少了管理员的工作量。在SQL Server中主要有两种角色类型:服务器角色与数据库角色,利用角色管理SQL Server 服务器角色,服务器角色是指根据SQL Server的管理任务,以及这些任务相对的重要性等级,来把具有SQL Server管理职能的用户,划分成不同的用户组,每一组所具有管理SQL Server的权限已被预定义。服务器角色适用在服务器
20、范围内,并且其权限不能被修改。,利用角色管理SQL Server 数据库角色,我们在数据库中添加新数据库角色,或使用已经存在的数据库角色。并让这些有着相同数据库权限的用户归属于同一角色。由此可见数据库角色能为某一用户或一组用户授予不同级别的管理或访问数据库或数据库对象的权限,这些权限是数据库专有的,而且还可以使一个用户具有属于同一数据库的多个角色,SQL Server提供了两种数据库角色类型:预定义的数据库角色用户自定义的数据库角色,预定义数据库角色,预定义数据库角色是指这些角色所有具有的管理、访问数据库权限已被SQL Server定义,并且SQL Server管理者不能对其所具有的权限进行任
21、何修改。SQL Server中的每一个数据库中都有一组预定义的数据库角色。在数据库中使用预定义的数据库角色,可以将不同级别的数据库管理工作分给不同的角色,从而很容易实现工作权限的传递。,用户自定义的数据库角色,当我们打算为某些数据库用户设置相同的权限,但是这些权限不等同于预定义的数据库角色所具有的权限时,我们就可以定义新的数据库角色来满足这一要求。SQL Server数据库角色可以包含NT 用户组或用户在同一数据库中用户可以具有多个不同的自定义角色这种角色的组合是自由的而不仅仅是public与其它一种角色的结合角色可以进行嵌套从而在数据库实现不同级别的安全性用户定义的数据库角色有两种类型:标准
22、角色和应用角色标准角色类似于SQL Server 7.0版本以前的用户组它通过对用户权限等级的认定而将用户划分为不同的用户组,应用角色,应用角色是一种比较特殊的角色类型。当我们打算让某些用户只能通过特定的应用程序,间接地存取数据库中的数据,比如通过查询分析器或Microsoft Excel,而不是直接地存取数据库数据时,我们就应该考虑使用应用角色。当某一用户使用了应用角色时,他便放弃了已被赋予的所有数据库专有权限。他所拥有只是应用角色被设置的权限。通过应用角色总能实现这样的目标:即以可控制方式来限定用户的语句或对象权限。应用角色不像标准角色那样具有组的含义,因此不能像使用标准角色那样把某一用户
23、设置为应用角色成员当用户在数据库中激活应用角色时,必须提供密码。即应用角色是受口令保护的,而标准角色并不受口令保护,管理服务器角色,使用企业管理器查看服务器角色成员启动SQL Server Enterprise Manager 登录到指定的服务器单击“安全性”文件夹单击”服务器角色”图标在右窗格中右击服务器角色在弹出菜单中选择“属性”然后弹出“服务器角色属性”对话框,使用存储过程管理服务器角色,添加服务器角色:sp_addsrvrolemember loginame=login rolename=role例:将 Windows NT 用户 CorporateHelenS 添加到 sysadmi
24、n 固定服务器角色中 EXEC sp_addsrvrolemember CorporateHelenS,sysadmin 删除服务器角色:sp_dropsrvrolemember loginame=login rolename=role例:从 sysadmin 固定服务器角色中删除登录 JackO EXEC sp_dropsrvrolemember JackO,sysadmin,管理数据库角色,启动企业管理器登录到指定的服务器展开指定的数据库选中“角色”图标右击图标在弹出菜单中选择“新建数据库角色”弹出“数据库角色属性-新建角色”对话框在“名称”框中输入该数据库角色的名称在“数据库角色类型”选
25、项栏中选择数据库角色类型标准角色或应用角色如果选择“标准角色”可单击“添加”按钮将数据库用户增加到新建的数据库角色当中如果选择了应用角色则在”密码”框中输入口令,使用存储过程管理数据库角色,在SQL Server 中支持数据库角色管理的存储过程有添加数据库角色:sp_addrole sp_addapprole删除数据库角色sp_droprole sp_dropapprole 查看数据库角色sp_helprole sp_helprolemember添中服务器角色与删除服务器角色sp_addrolemember sp_droprolemember,SQL Server安全性管理的途径,使用用户帐号管理用户登录使用角色管理用户的权限使用视图作为安全机制使用存储过程作为安全机制,