系统安全性保护措施是否有效是数据库系统主要的性能指标之一。
数据库不安全的因素
1985年美国国防部(DoD) 正式颁布《DoD可信计算机系统评估准则》( 简称TCSEC或DoD85)
不同国家建立在TCSEC概念上的评估准则
1993年,CTCPEC、FC、TCSEC和ITSEC联合行动,解决原标准中概念和技术上的差异,称为CC (Common Criteria)项目
1999年CC V2.1版被ISO采用为国际标准
2001年CC V2.1版被我国采用为国家标准
目前CC已基本取代了TCSEC,成为评估信息产品安全性的主要标准。
TCSEC标准
非法使用 数据库的情况
数据库安全性控制的常用方法
用户身份鉴别的方法
静态口令鉴别
静态口令一般由用户自己设定,这些口令是静态不变的
动态口令鉴别
口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一- 密的方法
生物特征鉴别
通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等
智能卡鉴别
智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能
用户身份鉴别
存取控制机制组成
定义用户权限,并将用户权限登记到数据字典中●用户对某一数据对象的操作权力称为权限
DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则
合法权限检查
用户发出存取数据库操作请求
DBMS查找数据字典,进行合法权限检查
用户权限定义和合法权检查机制一起组成了数据库管理系统的存取控制子系统
常用存取控制方法
- C2级
- 用户对不同的数据对象有不同的存取权限
- 不同的用户对同一-对象也有不同的权限
- 用户还可将其拥有的存取权限转授给其他用户
- B1级
- 每一个数据对象被标以一定的密级
- 每一个用户也被授予某-个级别的许可证
- 对于任意一个对象,只有具有合法许可证的用户才可以存取
GRANT语句的一般格式:
GRANT <权限>[,<权限1...
ON <对象类型> <对象名>[,<对象类型> <对象名>]...
TO <用户>[,<用户>]...
[WITH GRANT OPTION];//指定可以再授予 ;没有指定:不能传播
语义:将对指定操作对象的指定操作权限授予指定的用户
发出GRANT:
按受权限的用户
[例4.1]把查询Student表权限授给用户U1
GRANT SELECT
ON TABLE Student
TO U1;
[例4.2]把対Student表和Course表的全部叔限授予用戸U2和U3
GRANT ALL PRIVILIGES
ON TABLE Student,Course
TO U2,U3;
[例4.3]把对表SC的查询权限授予所有用户
GRANT SELECT
ON TABLE SC
TO PUBLIC;
[例4.4]把查询Student表和修改学生学号的权限授给用户U4
GRANT UPDATE(Sno), SELECT
ON TABLE Student
TO U4;
对属性列的授权时必须明确指出相应属性列名
[例4.5] 把对表SC的INSERT权限授予U5用户,并将允许他再讲此权限授予其他用户
GRANT INSERT
ON TABLE SC
Tо U5
WITH GRANT OPTION;
执行例4.5后,U5不仅拥有了对表SC的INSERT权限,还可以传播权限:
[例4.6] GRANT INSERT
ON TABLE SC
Tо U6
WITH GRANT OPTION;
同样,U6还可以将此权限授予U7:
[例4.7] GRANT INSERT
ON TABLE SC
TO U7;
但U7不能再传播此权限。.
授予的权限可以由数据库管理员或其他授权者REVOKE语句收回
REVOKE语句的一般格式为:
REVOKE <权限>[, <权限>]..
ON <对象类型> <对象名>[,<对象类型><对象名>]...
FROM <用户>[,<用户..[CASCADE | RESTRICT];
//CASCADE:级联回收,级联把用户传播出去权限一并回收
//RESTRICT:受限回收,传播过该权限,回收操作会失败,先手动回收传播出去权限
[例4.8]把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
[例4.9]收回所有用户对表SC的查询权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
[例4.10]把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE ;
// 将用户U5的INSERT权限收回的时候应该使CASCADE,否则拒绝执行该语句
// 如果U6或U7还从其他用户处获得对SC表的INSERT权限,则他们仍具有此权限,系统只收回直接或间接从U5处获得的权限
数据库管理员:
拥有所有对象的所有权限
根据实际情况不同的权限授予不同的用户
用户:
被授权的用户
3.创建数据库模式的权限
数据库管理员在创建用户时实现
CREATE USER语句格式
CR EATE USER <username>
[WITH][DBA|RESOURCE|CONNECT];
注:
CREATE USER不是SQL标准,各个系统的实现相差甚远
CREATEUSER语句格式说明
数据库角色:被命名的一组与数据库操作相关权限
1.角色的创建
CREATE ROLE<角色名>
2.给角色授权
GRANT <权限>[,<权限>]...
ON <对象类型>对象名
TO <角色>[,<角色>]...
3.将一个角色授予其他的角色或用户
GRANT <角色1>[,<角色2>]..S
TO <角色3>[,<用户1>]...
[WITH ADMIN OPTION]
该语句把角色授予某用户,或授予另一个角色
授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION
指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色
一个角色的权限:直接授子这个角色的全部权限加上其他角色授予这个角色的全部权限
4.角色权限的收回
REVOKE <权限>[, <权限>]..
ON <对象类型> <对象名>
FROM <角色>[,<角色>]...
- 角色的创建者
- 拥有在这个(些)角色上的ADMIN OPTION
[例4.11] 通过角色来实现将一组权限授予一个用户。步骤如下:
//(1)首先创建一一个角色R1
CREATE ROLE R1;
//(2)然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限
GRANT SEL .ECT, UPDATE, INSERT
ON TABLE Student
TO R1;
//(3)将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限3
GRANT R1
TO 王平,张明,赵玲;
//(4)可以一次性通过R1来回收王平的这3个权限
REVOKE R1
FROM 王平;
[例4.12]角色的权限修改
GRANT DELETE
ON TABLE Student
Tо R1;
使角色R1在原来的基础上增加了Student表的DELETE权限
[4.13]
REVOKE SELECT
ON TABLE Student
FROM R1;
使R1减少了SELECT权限
自主控制缺点:可能存在数据的“无意泄露”
- 原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记
- 解决:对系统控制下的所有主客体实施强制存取控制策略
强制存取控制(MAC )
- 军事部门
- 政府部门
在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类
主体是系统中的活动实体
- 数据库管理系统所管理的实际用户
- 代表用户的各进程
客体是系统中的被动实体,受主体操纵
文件、基本表、索引、视图
敏感度标记(Label)
对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)
敏感度标记分成若干级别
- 绝密(Top Secret, TS)
- 机密(Secret, S)
- 可信(Confidential, C)
- 公开(Public, P)
- TS>=S>=C>=P
主体的敏感度标记称为许可证级别(Clearance Level)
客体的敏感度标记称为密级(Classification Level)
强制存取控制规则:
强制存取控制(MAC)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据。
实现强制存取控制时要首先实现自主存取控制
原因:较高安全性级别提供的安全保护要包含较低级别的所有保护
自主存取控制与强制存取控制共同构成数据库管理系统的安全机制
D A C + M A C 安 全 检 查 DAC+MAC安全检查 DAC+MAC安全检查
把要保密的数据对无权存取这些数据的用户隐蔽起来,对数据提供一定的安全保护
间接地实现支持存取谓词的用户权限定义
[例4.14]建立计算机系学生的视图,把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明
先建立计算机系学生的视图CS_ Student
CREATE VIEW CS_ Student
AS
SELECT *
FROM
Student
WHERE Sdept ='CS';
在视图上进一步定义存取权限
GRANT SELECT
ON CS_ Student
TO 王平;
GRANT ALL PRIVILIGES
ON CS_ Student
TO 张明;
什么是审计
审计功能的可选性
1.审计事件
服务器事件
审计数据库服务器发生的事件
系统权限
- 对系统拥有的结构或模式对象进行操作的审计
- 要求该操作的权限是通过系统权限获得的
语句事件
对SQL语句,如DDL、 DML、 ? DQL及DCL语句的审计
模式对象事件
对特定模式对象上进行的SELECT或DML操作的审计
2.审计功能
基本功能:提供多种审计查阅方式提供多种审计查阅方式
多套审计规则:一般在初始化设定
提供审计分析和报表功能
审计日志管理功能
- 防止审计员误删审计记录,审计日志必须先转储后删除
- 对转储的审计记录文件提供完整性和保密性保护
- 只允许审计员查阅和转储审计记录,不允许任何用户新增和修改审计记录等
提供查询审计设置及审计记录信息的专门视图
用户级审计
系统级审计
[例4.15]对修改SC表结构或修改SC表数据的操作进行审计
AUDIT ALTER,UPDATE
ON sC;
[例4.16]取消对SC表的一切审计
NOAUDIT ALTER,UPDATE
ON SC;
数据加密
加密的基本思想
加密方法
存储加密
透明存储加密
内核级加密方法:性能较好,安全完备性较高
非透明存储加密
传输加密
链路加密
端到端加密
基于安全套接层协议SSL传输方案的实现思路:
(1)确认通信双方端点的可靠性
(2)协商加密算法和密钥
(3)可信数据传输
推理控制
隐蔽信道
数据隐私保护
数据的共享日益加强,数据的安全保密越来越重要。
数据库管理系统是管理数据的核心,因而其自身必须具有一整套完整而有效的安全性机制
实现数据库系统安全性的技术和方法: