《7-1 数据库完整性与安全》由会员分享,可在线阅读,更多相关《7-1 数据库完整性与安全(26页珍藏版)》请在金锄头文库上搜索。
1、1/,数据库原理与应用,滁州学院计算机与信息工程学院,2/,第10讲 数据库完整性与安全,教学目标:要求熟练掌握数据库管理系统安全性保护的基本原理与方法,并能熟练运用SQL中的GRANT和REVOKE语句进行授权,3/,目 录,数据库安全性,4/,1数据库安全性,安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。数据库系统中大量数据集中存放,且为许多最终用户直接共享,安全性问题更为突出。,5/,1.1 数据库安全的基本概念,数据库安全保护目标是确保只有授权用户才能访问数据库,未被授权的人员则无法接近数据。安全措施是指计算机系统中用户直接或通过应用程序访问数据库所要经过的安全认证过程
2、。数据库安全认证过程如图9-1所示,6/,1.1 数据库安全的基本概念,用户标识与鉴别(identification & authentication)当用户访问数据库时,要先将其用户名(user name)与密码(password)提交给数据库管理系统进行认证;只有在确定其身份合法后,才能进入数据库进行数据存取操作。数据库安全保护通过身份认证的用户,拥有了进入数据库的“凭证”;用户在数据库中执行什么操作,需通过“存取控制”或视图进行权限分配。,7/,1.1 数据库安全的基本概念,存取控制:决定用户对数据库中的哪些对象进行操作、进行何种操作。存取控制机制主要包括两部分:定义用户权限及将用户权限
3、登记到数据字典中;合法权限检查:当用户发出操作请求后,DBMS查找数据字典并根据安全规则进行合法权限检查,若操作请求超出了定义的权限,系统将拒绝执行此操作。视图:通过为不同的用户定义不同的视图,达到限制用户访问范围的目的。视图机制能隐藏用户无权存取的数据,从而自动地对数据库提供一定程度的安全保护;视图的主要功能在于提供数据库的逻辑独立性,其安全性保护不太精细,往往不能达到应用系统的要求;在实际应用中,通常将视图与存取控制机制结合起来使用,如先通过视图屏蔽一部分保密数据,然后进一步定义存取权限。,8/,1.1 数据库安全的基本概念,审计:是一种监视措施,用于跟踪并记录有关数据的访问活动。审计追踪
4、把用户对数据库的所有操作自动记录下来,存放在审计日志(audit log)中;审计日志的内容一般包括:操作类型(如修改、查询、删除);操作终端标识与操作者标识;操作日期和时间;操作所涉及到的相关数据(如基本表、视图、记录、属性);数据库的前映像(即修改前的值)和后映像(即修改后的值)。利用这些信息,可找出非法存取数据库的人、时间和内容等;数据库管理系统往往将审计作为可选特征,允许操作者打开或关闭审计功能。,9/,1.1 数据库安全的基本概念,操作系统安全保护通过操作系统提供的安全措施来保证数据库的安全性 数据密码存储访问控制和存取控制可将用户的应用系统访问范围最小化和数据对象操作权限最低化,但
5、对一些敏感数据进行“加密存储”也是系统提供的安全策略;数据加密(data encryption):防止数据库中数据存储和传输失密的有效手段;加密的基本思想:先根据一定的算法将原始数据(即明文, plaintext)加密为不可直接识别的格式(即密文, ciphertext),然后数据以密文的方式存储和传输。,10/,1.2 安全标准,最有影响的标准为TCSEC(Trusted Computer System Evaluation Criteria,美国国防部标准,1985年)和 CC(Common Criteria for IT Security Evaluation,ISO标准,1999年)。
6、 TCSEC将系统划分为组共七个级别,依次为D, C(C1、C2), B(B1、B2、B3)和A(A1):D:最低级,DOS属于该级别,几乎没有专门的安全机制;C1:初级的自主安全保护。将用户和数据分离,实现自主存取控制,限制用户权限的传播;C2:安全产品的最低档,提供受控的存取保护,实施审计和资源隔离:如Windows 2000、Oracle10g、SQL Server 2000等;在SQL中,通过授权语句GRANT和REVOKE来实现。,11/,1.2 安全标准,B1:标记安全保护。对数据加以标记,对主体和客体实施强制存取控制:这类产品一般加上安全或信任字样,如Trusted Oracle
7、7;该标准的核心是强制存取控制。B2:隐蔽通道和形式化,适合于网络工作方式,目前国内外尚无符合该标准的数据库系统。B3:访问监控器,适合于网络工作方式,目前国内外尚无符合该标准的数据库系统。A1:验证设计,较高的形式化要求,仅仅是一种理想化的等级,目前没有相应的系统。国际标准化组织提出的CC文本由三部分组成:简介及一般模型、安全功能要求、安全保证要求。我国于1999年颁布了国家标准,其标准与TCSEC标准相似。,12/,1.3 SQL存取控制机制,SQL支持受控的存取保护:在自主存取控制中,用户对不同的数据对象有不同的存取权限;不同的用户对同一对象有不同的权限;用户可将其拥有的存取权限转授给其
8、他用户。自主存取控制通过SQL的GRANT和REVOKE语句实现。用户权限:是指用户可以在哪些数据对象上进行哪些类型的操作。它由两个要素组成:数据对象和操作类型。定义存取权限称为授权(authorization);授权粒度可以精细到字段级,也可以粗到关系级;授权粒度越细,授权子系统就越灵活,但是系统的开销也会相应地增大。,13/,1.3 SQL存取控制机制,衡量授权子系统的尺度授权是否与数据值有关:上面的授权是独立于数据值的,即用户能否对某类数据对象执行某种操作与数据值无关,完全由数据名决定;若授权依赖于数据对象的内容,则称为是与数据值有关的授权。授权是否与时间和地点有关:有的系统允许存取谓词
9、中引用系统变量,如一天中的某个时刻,某台终端设备号;用户只能在某台终端、某段时间内存取有关数据。自主存取控制:用户可自由地决定将数据的存取权限授予何人,决定是否将“授权”的权限授予别人。这种授权机制仍可能存在数据的“无意泄露”。,14/,1.3 SQL存取控制机制,授权分为数据库级、表级和列级权限。在SQL Server中权限只能由担任不同角色的用户来分配;不同类型的用户有不同的等级;下图给出了授权等级图。,15/,1.3 SQL存取控制机制,GRANT和REVOKE语句向用户授予或收回对数据的操作权限。对数据库模式的授权则由DBA在创建用户时实现。创建用户的语法如下: CREATE USER
10、 WITH DBA | RESOURCE | CONNECT该语法在SQL Server2000中不支持;在SQL Server2000中使用系统存储过程sp_addlogin和sp_adduser实现,详见实验教材。,16/,1.3 SQL存取控制机制,权限的授予与收回GRANT和REVOKE有两种权限:目标权限和命令权限。命令权限的授予与收回主要指DDL操作权限,语法分别为: GRANT all | TO public | REVOKE all | FROM public | 可以是create database、create default、create function、create
11、procedure、create rule、create table、create view、create index、backup database和backup log等;一次可授多种权限,授多种权限时,权限之间用逗号分隔;如果具有创建对象的create权限,则自动具有其创建对象的修改权限alter和删除权限drop;,17/,1.3 SQL存取控制机制,对于基本表,自动具有在所创建表上创建、删除和修改触发器的权限;修改alter和删除权限drop不额外授权;all:表示上述所有权限;public:表示所有的用户;:指定的用户名列表。如果将某组权限同时授予多个用户,则用户名之间用逗号分隔。
12、例9.1 将创建表和视图的权限授予user01和user02用户:GRANT create table, create view TO user01, user02例9.2 从user02收回创建视图的权限:REVOKE create view FROM user02,18/,1.3 SQL存取控制机制,目标权限的授予和收回主要指DML操作权限,语法分别为: GRANT all | ON () TO public | WITH GRANT OPTION REVOKE all | ON () FROM public | CASCADE | RESTRICT可以是update、select、ins
13、ert、delete、excute和allexcute针对存储过程授予执行权限;update、select、insert、delete针对基本表和视图授权;all表示所有的权限。对象的创建者自动拥有该对象的插入、删除、更新和查询操作权限;过程的创建者自动拥有所创建过程的执行权限;,19/,1.3 SQL存取控制机制,CASCADE:级联收回;RESTRICT:缺省值,若转赋了权限,则不能收回;WITH GRANT OPTION:允许将指定对象上的目标权限授予其它安全帐户。不允许循环授权,即不允许将得到的权限授予其祖先,如下图所示:,20/,1.3 SQL存取控制机制,例9.3 将存储过程pro
14、SearchBySno的执行权限授予用户u1、u2和u3:GRANT excute ON proSearchBySno TO u1, u2, u3例9.4 将对班级表Class的查询、插入权限授予用户u1,且用户u1可以转授其所获得的权限给其它用户:GRANT select, insert ON Class TO u1 WITH GRANT OPTION例9.5 将对学生表的性别、出生日期的查询和修改权限授予用户u3、u4和u5,且不可以转授权限:GRANT select, update ON Student(sex, birthday) TO u3, u4, u5如果是对列授予权限,命令项可
15、以包括select或update或两者组合;若使用了select * ,则必须对表的所有列赋予select权限。,21/,1.3 SQL存取控制机制,例9.6 将表Score的若干权限分别授予用户u1、u2、u3、u4、u5和u6。将表Score的所有权限授予用户u1,且可以转授权限GRANT all ON Score TO u1 WITH GRANT OPTION用户u1将表Score的所有权限授予用户u2,且可以转授权限GRANT all ON Score TO u2 WITH GRANT OPTION用户u2将表Score的查询和插入权限授予用户u5,且不可以转授GRANT select
16、, insert ON Score TO u5用户u2将表Score的所有权限授予用户u4,且可以转授权限GRANT all ON Score TO u4 WITH GRANT OPTION用户u4将表Score的查询和删除权限授予用户u6,且可以转授GRANT select, delete ON Score TO u6 WITH GRANT OPTION通过上述的授权,用户u1、u2、u3、u4、u5和u6分别得到的权限如下图所示:,22/,1.3 SQL存取控制机制,例9.7 用户u2将转授给用户u4的对表Score的修改和查询权限收回:REVOKE select, update ON Score FROM u4 CASCADE本例必须级联收回,因为u4将该表的查询和删除权限转授给了u6。例9.8 用户u4将转授给用户u6的对表Score的查询权限收回:REVOKE select ON Score FROM u6 数据库角色被命名的一组与数据库操作相关的权限;角色是权限的集合,可以为一组具有相同权限的用户创建一个角色;角色简化了授权操作。,