《数据库系统的安全性管理.ppt》由会员分享,可在线阅读,更多相关《数据库系统的安全性管理.ppt(33页珍藏版)》请在三一办公上搜索。
1、2005年9月 第1页,第8章 数据库系统的安全性管理,教学内容:SQL Server安全控制机制SQL Server登录账户管理SQL Server管理数据库用户 SQL Server管理权限 SQL Server角色管理 SQL Server安全性管理的途径,2005年9月 第2页,8.1 SQL Server安全控制机制,8.1.1 数据库系统的安全控制模型,2005年9月 第3页,8.1.2 数据库权限和用户分类,对数据库管理系统正常运行而进行的维护权限 对数据库中的对象和数据的操作权限 对数据库对象的权限 对数据库数据的操作权 用户按其操作权限的大小可分为 数据库系统管理员 数据库对
2、象拥有者 普通用户,2005年9月 第4页,8.1.3 SQL Server的安全机制,建立在认证和访问许可机制上的身份验证 访问权验证 操作权验证 SQL Server登录账户的来源有两种:Windows授权用户:来自于Windows的用户或组;SQL授权用户:来自于非Windows的用户,我们也将这种用户称为SQL用户。,2005年9月 第5页,1Windows身份验证模式,Windows登录帐号的建立和取消,2005年9月 第6页,2SQL Server身份验证模式,用户在连接SQL Server 时必须提供登录名和登录密码,这些登录信息存储在系统表syslogins 中,与NT 的登录
3、账号无关。,2005年9月 第7页,3混合验证模式,2005年9月 第8页,8.1.4 设置SQL Server的认证模式,2005年9月 第9页,8.2 管理SQL Server登录账户,有两类登录账户一类是由SQL Server自身负责身份验证的登录账户;另一类是登录到SQL Server的Windows NT/2000网络账户,可以是组账户或用户账户。,2005年9月 第10页,系统的登录账户,2005年9月 第11页,管理登录账户,2005年9月 第12页,2使用系统存储过程管理登录账户,sp_addlogin:创建新的使用SQL Server 认证模式的登录账号;sp_revokel
4、ogin:删除账户,但不能删除系统管理者SA以及当前连接到SQL Server的登录。如果与登录相匹配的用户仍存在数据库sysusers表中,则不能删除该登录账号。sp_addlogin和sp_droplogin只能用在SQL Server认证模式下。sp_denylogin:拒绝某一用户连到SQL Server上。sp_granlogin:设定windows用户或组成员为SQL Server用户。sp_granlogin和sp_revokelogin只有使用于NT认证模式下对NT用户或用户组账号做设定,而不能对SQL Server维护的登录账号进行设定。sp_droplogin:删除登录SQ
5、L Server账户,禁止该用户访问。sp_helplogins:用来显示所有登录到SQL Server账户的信息。,2005年9月 第13页,8.3 管理数据库用户,数据库用户简介 数据库用户用来指出哪一个人可以访问哪一个数据库。用户对数据的访问权限以及对数据库对象的所有关系都是通过用户账号来控制的,用户账号总是基于数据库的。用户账号和登录账号 登录账号只表明该账号通过了NT 认证或SQL Server 认证,但不能表明其可以对数据库数据和数据对象进行某种或某些操作,所以一个登录账号总是与一个或多个数据库用户账号(这些账号必须分别存在相异的数据库中)相对应,这样才可以访问数据库。,2005年
6、9月 第14页,管理数据库用户,2005年9月 第15页,2使用系统存储过程管理数据库用户,SQL Server 利用以下系统过程管理数据库用户sp_adduser、sp_granddbaccess:创建新数据库用户。sp_dropuser、sp_revokedbaccess:删除数据库用户。sp_helpuser:查看用户和数据库角色的信息。,2005年9月 第16页,8.4 管理权限,1对象权限对象权限是指用户对数据库中的表、视图、存储过程等对象的操作权,如:对表和视图,可以使用SELECT、INSERT、UPDATE和DELETE权限。对于表和视图的字段;可以使用SELECT和UPDAT
7、E权限。对于存储过程;可以使用EXECUTE权限。2语句权限语句权限相当于数据定义语言(DDL)的语句权限,这种权限专指是否允许执行下列语句:CREATETABLE、CREATEPROCEDURE、CREATEVIEW等与创建数据库对象有关的操作。3隐含权限隐含权限是指由SQL Server预定义的服务器角色、隐含权限相当于内置权限,而不再需要明确地授予这些权限。例如,数据库拥有者自动地拥有对数据库进行一切操作的权限。,2005年9月 第17页,权限的管理,权限的管理包含如下三个内容;授予权限(GRANT):允许用户或角色具有某种操作权。收回权限(REVOKE):不允许用户或角色具有某种操作权
8、,或者收回曾经授予的权限。拒绝访问(DENY):拒绝某用户或角色具有某种操作权,既使用户或角色由于继承而获得这种操作权,也不允许执行相应的操作。,2005年9月 第18页,1使用企业管理器管理对象权限,2005年9月 第19页,2使用企业管理器管理语句权限,2005年9月 第20页,8.5 管理角色,具有相同权限的用户就称为角色。角色分为:系统预定义的固定角色用户根据自己的需要定义的用户角色系统角色又根据其作用范围的不同而被分为:固定的服务器角色,是为整个服务器设置的固定的数据库角色,是为具体的数据库设置的。,2005年9月 第21页,8.5.1 固定的服务器角色,2005年9月 第22页,1
9、查看固定的服务器角色,2005年9月 第23页,2添加固定的服务器角色的成员,2005年9月 第24页,8.5.2 固定的数据库角色,2005年9月 第25页,8.5.3 用户自定义角色,为某些数据库用户设置相同的权限,但这些权限不等同于预定义的数据库角色所具有的权限。用户自定义的数据库角色具有以下几个优点:SQL Server 数据库角色可以包含NT 用户组或用户;在同一数据库中用户可以具有多个不同的自定义角色,这种角色的组合是自由的,而不仅仅是public 与其它一种角色的结合;角色可以进行嵌套,从而在数据库实现不同级别的安全性。,2005年9月 第26页,用户定义的数据库角色有两种类型,
10、标准角色它通过对用户权限等级的认定而将用户划分为不同的用户组,使用户总是相对于一个或多个角色,从而实现管理的安全性。应用程序角色让某些用户只能通过特定的应用程序间接地存取数据库中的数据(比如通过Microsoft Excel)而不是直接地存取数据库数据时,我们就应该考虑使用应用程序角色。,2005年9月 第27页,1创建用户自定义的角色,2005年9月 第28页,2为用户定义的角色授权,2005年9月 第29页,8.6 SQL Server安全性管理的途径,使用视图作为安全机制 使用存储过程作为安全机制,2005年9月 第30页,8.6.1 使用视图作为安全机制,1使用行级、列级别安全性的视图
11、例8-1:在该例中某一销售点只能查看它自己的销售信息。我们使用pubs 数据库中的sales 表。首先创建视图:USE pubsCREATE VIEW vwSpecificsale ASSELECT ord_num,ord_date,qty,payterms,title_id FROM salesWHERE stor_id=7067当执行SELECT*FROM vwSpecificsale时只显示stor_id=7067的部分数据,把其他的数据屏蔽了,来保证其他数据安全。,2005年9月 第31页,2视图与权限结合,将访问视图的权限授予给用户,这样即使该用户不具有访问视图所引用的基本表的权限,
12、但其仍可以从中查看相应的数据信息。,2005年9月 第32页,8.6.2 使用存储过程作为安全机制,让该用户具有存储过程的EXEC 权限就可以了。当然要确保该存储过程中包含了查询语句。比如可创建下面的存储过程:create procedure selsales asselect*from sales然后将存储过程的EXEC 权限授予用户,当用户执行该存储过程时就可以查看到相应信息。,2005年9月 第33页,8.7 小 结,SQL Server 2000将权限的认证过程分为三步:第一步是验证用户是否是合法的服务器的登录账户;第二步是验证用户是否是要访问的数据库的合法用户;第三步是验证用户是否具有适当的操作权。,