null数据库系统概论数据库系统概论计算机学院 陈丰 chenfeng@cqut.edu.cn 第四章 数据库安全性第四章 数据库安全性4.1 计算机安全性概述
4.2 数据库安全性控制
4.3 视图机制
4.4 审计
4.5 数据加密
4.1 计算机安全性概述4.1 计算机安全性概述◇什么是数据库的安全性
数据库的安全性是指保护数据库,防止因用户非法使用
数据库造成数据泄露、更改或破坏。
◇什么是计算机系统安全性
为计算机系统建立和采取的各种安全保护措施,以保护
计算机系统中的硬件、软件及数据,防止其因偶然或
恶意的原因使系统遭到破坏,数据遭到更改或泄露
等。
◇数据库的安全性和计算机系统的安全性是紧密联系、相互支持的。4.1 计算机安全性概述(续)4.1 计算机安全性概述(续)1.计算机系统的三类安全性问
◇技术安全类
采用具有一定安全性的硬件、软件来实现对计算机系统及其所存数据的安全保护。
◇管理安全类
软硬件意外故障、场地的意外事故、管理不善导致的计算机设备和数据介质的物理破坏、丢失等安全问题。
◇政策法律类
政府部门建立的有关计算机犯罪、数据安全保密的法律道德准则和政策法规、法令。4.1 计算机安全性概述(续)4.1 计算机安全性概述(续)2.安全
简介
TCSEC标准(桔皮书),四组7级/TDI(紫皮书)
(数据库安全常用的级别是C2级、B1级和B2级)null(1)D级标准,为基本无安全保护的系统。
如DOS就是操作系统中安全标准为D的典型例子。它具有操作系统的基本功能,如文件系统,进程调度等等,但在安全性方面几乎没有什么专门的机制来保障。
(3)C1级标准
只提供了非常初级的自主安全保护。能够实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播。现有的商业系统往往稍作改进即可满足要求。
(3)C2级标准
是实际安全产品的最低档次,提供受控的存取保护,即将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和资源隔离。很多商业产品已得到该级别的认证。达到C2级的产品在其名称中往往不突出“安全”(Security)这一特色,如操作系统中Microsoft的Windows NT 3.5,数字设备公司的Open VMS VAX 6.0和6.1。数据库产品有Oracle公司的Oracle 7, Sybase公司的 SQL Server 11.0.6 等。null(4)B1级
标记安全保护。对系统的数据加以标记,并对标记的主体和客体实施强制存取控制(MAC)以及审计等安全机制。
B1级能够较好地满足大型企业或一般政府部门对于数据的安全需求,这一级别的产品才认为是真正意义上的安全产品。
满足此级别的产品前一般多冠以“安全”(Security)或“可信的”(Trusted)字样,作为区别于普通产品的安全产品出售。
例如,操作系统方面,典型的有数字设备公司的SEVMS VAX Version 6.0,惠普公司的HP-UX BLS release 9.0.9+ 。数据库方面则有Oracle公司的Trusted Oracle 7, Sybase公司的Secure SQL Server version 11.0.6,Informix公司的Incorporated INFORMIX-OnLine / Secure 5.0等。
(5)B2级
结构化保护。建立形式化的安全策略模型并对系统内的所有主体和客体实施DAC和MAC。
从互连网上的最新资料[2]看,经过认证的、B2级以上的安全系统非常稀少。
例如,符合B2标准的操作系统只有Trusted Information Systems公司的Trusted XENIX一种产品,符合B2标准的网络产品有Cryptek Secure Communications公司的LLC VSLAN一种产品,而数据库方面目前没有符合B2标准的产品。null(6)B3级
安全域。该级的TCB必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。
(7)A1级
B2以上的系统标准更多地还处于理论研究阶段,产品化以至商品化的程度都不高,其应用也多限于一些特殊的部门如军队等。
但美国正在大力发展安全产品,试图将目前仅限于少数领域应用的B2安全级别或更高安全级别下放到商业应用中来,并逐步成为新的商业标准。
可以看出,支持自主存取控制的DBMS大致属于C级,而支持强制存取控制的DBMS则可以达到B1级。当然,存取控制仅是安全性标准的一个重要方面(即安全策略方面)不是全部。
为了使DBMS达到一定的安全级别,还需要在其它三个方面提供相应的支持。例如审计功能就是DBMS达到C2以上安全级别必不可少的一项指标。4.2 数据库安全性控制4.2 数据库安全性控制在一般计算机系统中,安全措施是一级一级层层设置的:图4.2 计算机系统的安全模型 用户DBMS OS DB用户标识
和鉴别存取控制操作系统
安全保护数据密码存储*首先根据输入的用户标识进行身份鉴定,只有合法的用户才
准许进入计算机系统。
*对已进入系统的用户,DBMS进行存取控制,只允许用户执
行合法操作。
*操作系统一级也会有自己的保护措施。
*数据最后还可以以密码形式存储到数据库中。4.2 数据库安全性控制(续)4.2 数据库安全性控制(续)数据库安全性控制的常用
4.2.1 用户标识与鉴别
4.2.2 存取控制
4.2.3 自主存取控制方法 DAC
4.2.4 授权与回收
4.2.5 数据库角色
4.2.6 强制存取控制方法 MAC
4.3 视图
4.4 审计
4.5 密码存储4.2.1 用户标识与鉴别4.2.1 用户标识与鉴别用户标识与鉴别(Identification & Authentication)
系统提供的最外层安全保护措施
用户标识
用户名 用户标识号
口令
系统核对口令以鉴别用户身份
用户名和口令易被窃取4.2.2 存取控制4.2.2 存取控制◇数据库安全性所关心的主要是 DBMS的存取控制机制。
◇确保只有合法用户才能访问数据库,一般通过授权来实
现。
◇存取控制机制主要包括两部分:
(1)定义用户权限
定义不同用户对于不同的数据对象允许执行的操作权限。
(2)合法权限检查
用户发出存取数据库的操作请求后,DBMS查找数据字典
中存储的权限定义,检查用户操作的合法性。4.2.2 存取控制4.2.2 存取控制DBMS实现数据安全性保护的过程
用户或DBA把授权决定告知系统
通过SQL的GRANT和REVOKE
DBMS把授权的结果存入数据字典
当用户提出操作请求时,DBMS根据授权定义进行检
查,以决定是否执行操作请求
4.2.2 存取控制(续)4.2.2 存取控制(续)常用存取控制方法:
1.自主存取控制 DAC
用户对于不同的数据对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。
当前大型的DBMS一般都支持C2级中的自主存取控制,SQL标准也通过GRANT语句和REVOKE语句对其提供了支持。
2.强制存取控制 MAC
每一数据对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任一个对象,只有具有合法许可证的用户才可以存取。
有些DBMS也支持B1级中的强制存取控制(MAC)。4.2.3 自主存取控制(DAC)方法4.2.3 自主存取控制(DAC)方法◇通过 SQL 的 GRANT 语句和 REVOKE 语句实现
◇用户权限由两个要素组成
1.数据对象
2.操作类型
◇定义用户存取权限:定义用户可以在哪些数据库对象上进
行哪些类型的操作
◇定义存取权限称为授权 4.2.3 自主存取控制(DAC)方法(续)4.2.3 自主存取控制(DAC)方法(续)表4.3 关系系统中的存取权限4.2.4 授权(Authorization)与回收4.2.4 授权(Authorization)与回收1.SQL的授权
授权语句 GRANT
格式
GRANT <权限>, [, <权限>]…
ON <对象类型> <对象名>[, <对象类型> <对象名>]…
TO <用户>[, <用户>]…
[WITH GRANT OPTION];
功能 将对指定操作对象的指定操作权限授予指定的用户
[例1] 把查询Student表的权限授给用户U1。
GRANT SELECT ON Student
TO U1;4.2.4 授权(Authorization)与回收(续)4.2.4 授权(Authorization)与回收(续)发出GRANT
1)DBA
2)数据库对象创建者(即属主Owner,DBO)
3)拥有该权限的用户
按受权限的用户
1)一个或多个具体用户
2)PUBLIC(全体用户)
4.2.4 授权(Authorization)与回收(续)4.2.4 授权(Authorization)与回收(续)◇WITH GRANT OPTION子句:
指定:可以再授予其他的用户
没有指定:不能传播
◇不允许循环授权4.2.4 授权(Authorization)与回收(续)4.2.4 授权(Authorization)与回收(续)[例2] 将Student, Course两个表上的全部权限授给U2,U3。
GRANT ALL PRIVILEGES
ON Student, Course
TO U2,U3;
[例5] 把对表SC的INSERT权限授予U5用户,并允许他再将
此权限授予其他用户
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;4.2.4 授权(Authorization)与回收(续)4.2.4 授权(Authorization)与回收(续)执行例5后,U5不仅拥有了对表SC的INSERT权限,还可以
传播此权限:
[例6] GRANT INSERT ON TABLE SC TO U6
WITH GRANT OPTION;
同样,U6还可以将此权限授予U7:
[例7] GRANT INSERT ON TABLE SC TO U7;
但U7不能再传播此权限。
4.2.4 授权(Authorization)与回收(续)4.2.4 授权(Authorization)与回收(续)2.SQL权限回收
授予的权限可以由DBA或其他授权者用REVOKE语句收回
格式
REVOKE <权限>, [, <权限>]…
ON <对象类型> <对象名>[, <对象类型> <对象名>]…
FROM <用户>[, <用户>]…
[CASCADE|RESTRICT];
功能 从指定用户那里收回对指定对象的指定权限
[例8] 把用户U4修改学生学号的权限收回
REVOKE UPDATE (Sno)
ON TABLE Student
FROM U4;4.3.4 授权(Authorization)与回收(续)4.3.4 授权(Authorization)与回收(续)[例9] 收回所有用户对表SC的查询权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
[例10] 把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE;
*系统将收回直接或间接从U5处获得的对SC表的INSERT权限:
-->U5--> U6--> U7
*收回U5、U6、U7获得的对SC表的INSERT权限:
<--U5<-- U6<-- U74.2.4 授权(Authorization)与回收(续)4.2.4 授权(Authorization)与回收(续)小结:SQL灵活的授权机制
DBA:拥有所有对象的所有权限
不同的权限授予不同的用户
用户:拥有自己建立的对象的全部的操作权限
GRANT:授予其他用户
被授权的用户
“继续授权”许可:再授予
所有授予出去的权力在必要时又都可用REVOKE语句收回4.2.5 数据库角色4.2.5 数据库角色数据库角色:被命名的一组与数据库操作相关的权限
角色是权限的集合
可以为一组具有相同权限的用户创建一个角色
简化授权的过程
4.2.5 数据库角色(续)4.2.5 数据库角色(续)一、角色的创建
CREATE ROLE <角色名>
二、给角色授权
GRANT <权限>[,<权限>]…
ON <对象类型>对象名
TO <角色>[,<角色>]…
三、将一个角色授予其他的角色或用户
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
四、角色权限的收回
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…4.2.5 数据库角色(续)4.2.5 数据库角色(续)[例11] 通过角色来实现将一组权限授予用户。
步骤如下:
1. 首先创建一个角色 R1
CREATE ROLE R1;
2. 然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限
GRANT SELECT,UPDATE,INSERT
ON TABLE Student
TO R1;
3. 将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限
GRANT R1 TO 王平,张明,赵玲;
4. 可以一次性通过R1来回收王平的这3个权限
REVOKE R1 FROM 王平;4.2.6 强制存取控制(MAC)方法4.2.6 强制存取控制(MAC)方法自主存取控制缺点:可能存在数据的“无意泄露”
原因:
这种机制仅仅通过对数据的存取权限来进行安全控
制,而数据本身并无安全性标记
解决:
对系统控制下的所有主客体实施强制存取控制策略
4.2.6 强制存取控制(MAC)方法(续)4.2.6 强制存取控制(MAC)方法(续)◇在强制存取控制(MAC)方法中,每一个数据对象被标以
一定的密级,每一个用户也被授予某一个级别的许可证。
◇对于任意一个对象,只有具有合法许可证的用户才可以
存取。强制存取控制因此相对比较严格。
◇DBMS管理的全部实体分为主体和客体两大类
主体是指数据库中数据访问者(用户、DBA)、进程、
线程等,是系统中的活动实体。
客体是指数据库中数据及其载体(表、视图、索引、存
储过程等),是系统中的被动实体。
◇MAC适用于对数据有严格而固定密级分类的部门。4.2.6 强制存取控制(MAC)方法(续)4.2.6 强制存取控制(MAC)方法(续)◇对于主体和客体,DBMS为它们每个实例(值)指派一 个敏
感度标记(Label)。
◇敏感度标记被分成若干级别,例如绝密、机密、秘密、公开等。
主体的敏感度标记称为许可证级别。
客体的敏感度标记称为密级。
客体子集主体子集4.2.6 强制存取控制(MAC)方法(续)4.2.6 强制存取控制(MAC)方法(续)◇MAC机制就是通过对比主体的Label和客体的Label,最终确定主体是否能够存取客体。
◇当某一主体以标记label注册入系统时,系统要求他对任何
客体的存取必须遵循如下
:
①仅当主体的许可证级别大于或等于客体的密级时,该主
体才能读取相应的客体;
②仅当主体的许可证级别等于客体的密级时,该主体才能
写相应的客体。
这两种规则均禁止了拥有高许可证级别的主体更新低密级
的数据对象,从而防止了敏感数据的泄漏。4.2.6 强制存取控制(MAC)方法(续)4.2.6 强制存取控制(MAC)方法(续)自主访问控制
优点:有高度的灵活性,这使得它适用于多个应用领域。
缺点:防范恶意攻击的脆弱性。因为一旦被授权用户访问以后,自主授权模型就不能对如何传播和如何使用信息进行任何的控制了。
强制访问控制
优点:可以保证更高程度的保护,防止了信息的非法流动。适用于需要高度保护的政府、军事等应用。
缺点:过于严格,要求将主体和客体严格地划分到安全级别中,因此仅适用于少数环境。4.3 视图机制4.3 视图机制视图是实施安全性控制的一种有效机制。
通过视图机制把要保密的数据对无权存取的用户隐藏
起来,从而自动地对数据提供一定程度的安全保护。
视图机制间接地实现了支持存取谓词的用户权限定
义。
通过为不同的用户定义不同的视图,可以限制各个用
户的访问范围。4.3 视图机制(续)4.3 视图机制(续)[例14] 建立计算机系学生的视图,把对该视图的SELECT权
限授于王平,把该视图上的所有操作权限授于张明
1)先建立计算机系学生的视图CS_Student
CREATE VIEW CS_Student
AS
SELECT * FROM Student WHERE Sdept=‘CS’;
2)在视图上进一步定义存取权限
GRANT SELECT ON CS_Student TO 王平;
GRANT ALL PRIVILIGES ON CS_Student TO 张明;
4.4 审计(Audit)4.4 审计(Audit)什么是审计
审计日志(Audit Log)
将用户对数据库的所有操作
在上面
DBA利用审计日志
找出非法存取数据的人、时间和内容
C2以上安全级别的DBMS必须具有null用户级审计
针对自己创建的数据库表或视图进行审计
记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作
系统级审计
DBA设置
监测成功或失败的登录要求
监测GRANT和REVOKE操作以及其他数据库级权限下的操作4.5 数据加密4.5 数据加密◇对高度敏感性数据,例如,财务数据、军事数据、国家机密,除以上安全性措施外,还可以采用数据加密技术,以密文形式存储和传输数据。这样即使企图通过不正常渠道获取数据,也只能看到一些无法辨认的二进制码。
◇数据加密的方法基本上有三种:信息编码、信息置换和信息替换。常用的密码方法有:DES、公钥密码等。
◇由于数据加解密是比较耗时的操作,而且数据加密与解密程序会占用大量系统资源,增加了系统的开销,降低了数据库的效率,因此数据加解密功能通常作为可选特征。