《第7章数据库的安全与保护.》由会员分享,可在线阅读,更多相关《第7章数据库的安全与保护.(105页珍藏版)》请在金锄头文库上搜索。
1、2019/10/15,1,第7章 数据库的安全与保护,主要内容 数据库的安全控制 数据库的恢复技术 数据库的并发控制 SQL Server 2005数据库安全与保护技术,2019/10/15,2,数据库的安全与保护,数据库的安全性是指保护数据库,以防止非法使用所造成数据的泄露、更改或破坏。 数据库的安全措施是一级一级层层设置的 。其安全模型为:,2019/10/15,3,7.1 数据库的安全控制,主要内容 用户标识和鉴别 存取控制,2019/10/15,4,用户标识和鉴别 (1),用户标识和鉴别(Identification & Authentication)是系统提供的最外层安全保护措施。其
2、方法是由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供机器使用权。 1. 用户标识 用一个用户名(User Name)或者用户标识号(User IDentifica-tion,UID)来标明用户身份。系统内部记录着所有合法用户的标识,系统鉴别此用户是否是合法用户,若是,则可以进入下一步的核实;若不是,则不能使用该系统。,2019/10/15,5,2. 口令 为了进一步核实用户,系统常常要求用户输入口令(Password)。 用户名与口令容易被人窃取,因此还可以用更复杂的方法。 例如每个用户都预先约定好一个计算过程或者函数,鉴别用户身份时,
3、系统提供一个随机数,用户根据自己预先约定的计算过程或者函数进行计算,系统根据用户计算结果是否正确进一步鉴定用户身份。一般用户约定比较简单的计算过程或函数,以便计算起来方便。例如,让用户记住函数5x+3y+6,当鉴别用户身份时,系统随机告诉用户x=2,y=5,如果用户回答31,那就证实了用户身份。 还可以使用磁卡或IC卡,但系统必须有阅读磁卡或IC卡的装置。还可以使用签名、指纹、声波纹等用户特征来鉴别用户身份,,用户标识和鉴别 (2),2019/10/15,6,存取控制 (1),数据库安全性所关心的主要是DBMS的存取控制机制。 1. 存取控制机制 用户权限定义和合法权限检查机制一起组成了DBM
4、S的安全子系统: 定义用户权限,用户使用数据库的方式称为权限。用户权限主要有下列几种:查询(Select)、插入(Insert)、修改(Update)、删除(Delete)等。 某个用户应该具有何种权限是个管理问题和政策问题而不是技术问题。DBMS的功能是保证这些权限的执行。 DBMS提供适当的语言来定义用户权限,这些定义经过编译后存放在数据字典中,被称做安全规则或授权规则。 合法权限检查。每当用户发出存取数据库的操作请求后(请求一般应包括操作类型、操作对象和操作用户等信息),DBMS查找数据字典,根据安全规则进行合法权限检查。,2019/10/15,7,存取控制 (2),2. 自主存取控制方
5、法 当前大型的DBMS一般都支持自主存取控制(Discretionary Access Control,简记为DAC),如Oracle系统。在自主存取控制中,用户具有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可以将其拥有的存取权限转授给其他用户。,2019/10/15,8,存取控制 (3), 授予权限语句GRANT GRANT语句的一般格式为 GRANT , ON , TO , WITH GRANT OPTION; 其语义为:将对指定操作对象的指定操作权限授予指定用户。发出该GRANT语句的可以是DBA,也可以是该数据库的创建者,也可以是已经拥有该权限的用户。接受权限的用户
6、可以是一个或多个具体用户,也可以是PUBLIC,即全体用户。 如果指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限授予其他的用户。 不允许循环授权 :,2019/10/15,9,存取控制 (4),例7.1 把查询S表的权限授给用户U1。 GRANT SELECT ON TABLE S TO U1; 例7.2 把对S表和C表的全部操作权限授予用户U2和U3。 GRANT ALL PRIVILEGES ON TABLE S,C TO U2,U3; 例7.3 把对SC表的查询权限授予所有用户。 GRANT SELECT ON TABLE SC TO PUBLIC;
7、例7.4 把查询S表和修改学生学号的权限授给用户U4。 GRANT UPDATE(SNO),SELECT ON TABLE S TO U4;,2019/10/15,10,存取控制 (5),例7.5 把对SC表的INSERT权限授予U5用户,并允许将此权限再授予其他用户。 GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION; 执行此SQL语句后,U5不仅拥有了对表SC的INSERT权限,还可以传播此权限,即由U5用户转发上述GRANT命令给其他用户。例如U5可以将此权限授予U6: 例7.6 GRANT INSERT ON TABLE SC TO U6
8、 WITH GRANT OPTION; 同样,U6还可以将此权限授予U7: 例7.7 GRANT INSERT ON TABLE SC TO U7; /* 因为U6未给U7传播的权限,因此U7不能再传播此权限。*/,2019/10/15,11,存取控制 (6),执行了例7.1到例7.7的语句后得到如下图的教务管理数据库中的用户权限定义。,2019/10/15,12,存取控制 (7), 收回权限语句REVOKE 授予的权限可以由DBA或其他授权者用REVOKE语句收回,一般格式为: REVOKE , ON , FROM , CASCADE | RESTRICT; 例7.8 把用户U4修改学生学号
9、的权限收回。 REVOKE UPDATE(SNO) ON TABLE S FROM U4; 例7.9 收回所有用户对表SC的查询权限。 REVOKE SELECT ON TABLE SC FROM PUBLIC;,2019/10/15,13,存取控制 (8),例7.9 收回所有用户对表SC的查询权限。 REVOKE SELECT ON TABLE SC FROM PUBLIC; 例7.l0 把用户U5对SC表的INSERT权限收回。 REVOKE INSERT ON TABLE SC FROM U5 CASCADE; 用户对自己建立的基本表和视图拥有全部的操作权限,并且可以用GRANT语句把其
10、中某些权限授予其他用户。被授权的用户如果有“继续授权”的许可,还可以把获得的权限再授予其他用户。 所有授予出去的权限在必要时又都可以用REVOKE语句收回。,2019/10/15,14,存取控制 (9), 创建数据库模式的权限 对数据库模式的授权则由DBA在创建用户时实现。 CREATE USER语句一般格式如下: CREATE USER WITHDBA | RESOURCE | CONNECT; 只有系统的超级用户才有权创建一个新的数据库用户。 新创建的数据库用户有三种权限:CONNECT、RESOURCE和DBA。 CREATE USER命令中如果没有指定创建的新用户的权限,默认该用户拥有
11、CONNECT权限。拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库。 拥有RESOURCE权限的用户能创建基本表和视图,成为所创建对象的属主。但是不能创建数据库,不能创建新的用户。 拥有DBA权限的用户是系统中的超级用户,可以创建新的用户、创建数据库、创建基本表和视图等;DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户。,2019/10/15,15,存取控制 (10), 数据库角色 数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。 在SQL中首先用CREATE ROLE语句创建角色,然后用GRANT语句给角色授权。
12、 角色的创建 创建角色的SQL语句格式是 CREATE ROLE 刚刚创建的角色是空的,没有任何内容。可以用GRANT为角色授权。 给角色授权 GRANT , ON 对象名 TO , DBA和用户可以利用GRANT语句将权限授予某一个或几个角色。 将一个角色授予其他的角色或用户 GRANT , TO , WITH ADMIN OPTION 该语句把角色授予某用户,或授予另一个角色。,2019/10/15,16,存取控制 (11), 角色权限的收回 REVOKE , ON FROM , 用户可以回收角色的权限,从而修改角色拥有的权限。 REVOKE动作的执行者或者是角色的创建者,或者是拥有在这个
13、(些)角色上的ADMIN OPTION。,2019/10/15,17,存取控制 (12),例7.11 通过角色来实现将一组权限授予一个用户。步骤如下: 首先创建一个角色R1: CREATE ROLE R1; 然后使用GRANT语句,使角色R1拥有S表的SELECT、UPDATE、INSERT权限: GRANT SELECT,UPDATE,INSERT ON TABLE S TO R1; 再将这个角色授予王平,张明,赵玲。使他们具有角色Rl所包含的全部权限: GRANT R1 TO 王平,张明,赵玲; 我们也可以一次性的通过R1来回收王平的这3个权限: REVOKE R1 FROM王平;,201
14、9/10/15,18,存取控制 (13),3. 强制存取控制方法 当前有些DBMS同时还支持强制存取控制(Mandatory Access Control,简记MAC)。在强制存取控制中,每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。 所谓MAC是指系统为保证更高程度的安全性所采取的强制存取检查手段。它不是用户能直接感知或进行控制的。MAC适用于那些对数据有严格而固定密级分类的部门,例如军事部门或政府部门。 在MAC中,DBMS所管理的全部实体被分为主体和客体两大类。 主体是系统中的活动实体,既包括DBMS所管理的
15、实际用户,也包括代表用户的各进程。 客体是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等。对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)。,2019/10/15,19,存取控制 (14),敏感度标记被分成若干级别: 绝密(Top Secret); 机密(Secret); 可信(Confidential); 公开(Public)等。 主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级(Classification Level)。MAC机制就是通过对比主体的Label和客体的Label,最终确定主体是否能够存取客体。 当某一用户(或某一主体)以
16、标记label注册进入系统时,系统要求他对任何客体的存取必须遵循如下规则: 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体; 仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体。,2019/10/15,20,存取控制 (15),在某些系统中,第条规则与这里的规则有些差别。这些系统规定:仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体,即用户可以为写入的数据对象赋予高于自己的许可证级别的密级。这样一旦数据被写入,该用户自己也不能再读该数据对象了。这两种规则的共同点在于它们均禁止了拥有高许可证级别的主体更新低密级的数据对象,从而防止了敏感数据的泄漏。 强制存取控制(MAC)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分隔的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。 较高安全性级别提供的安全保护要包含较低级别的所有保护,因此在实现MAC时