数据库的安全性
4.1 数据库安全性概述
4.1.1 数据库的不安全因素
1.非授权用户对数据库的恶意存取和破坏
一些黑客(Hacker)和犯罪分子在用户存取数据库时猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据。
数据库管理系统提供的安全措施主要包括用户身份鉴别、存取控制和视图等技术。
2.数据库中重要或敏感的数据被泄露
黑客和敌对分子千方百计盗窃数据库中的重要数据,一些机密信息被暴露。
数据库管理系统提供的主要技术有强制存取控制、数据加密存储和加密传输等。
审计日志分析
3.安全环境的脆弱性
数据库的安全性与计算机系统的安全性紧密联系
计算机硬件、操作系统、网络系统等的安全性
建立一套可信(Trusted)计算机系统的概念和标准
4.1.2 安全标准简介
TCSEC标准
TCSEC/TDI标准的基本内容
TCSEC/TDI,从四个方面来描述安全性级别划分的指标
安全策略
责任
保证
文档
TCSEC/TDI安全级别划分
4.2 数据库安全性控制
(1)非法使用数据库的情况
编写合法程序绕过数据库管理系统及其授权机制
直接或编写应用程序执行非授权操作
通过多次合法查询数据库从中推导出一些保密数据
系统根据用户标识鉴定用户身份,合法用户才准许进入计算机系统
数据库管理系统还要进行存取控制,只允许用户执行合法操作
操作系统有自己的保护措施
数据以密码形式存储到数据库中
(2)存取控制流程
首先,数据库管理系统对提出SQL访问请求的数据库用户进行身份鉴别,防止不可信用户使用系统。
然后,在SQL处理层进行自主存取控制和强制存取控制,进一步可以进行推理控制。
还可以对用户访问行为和系统关键操作进行审计,对异常用户行为进行简单入侵检测。
(3)数据库安全性控制的常用方法
用户标识和鉴定
存取控制
视图
审计
数据加密
4.2.1 用户身份鉴别
用户身份鉴别
(Identification & Authentication)
系统提供的最外层安全保护措施
用户标识:由用户名和用户标识号组成
(用户标识号在系统整个生命周期内唯一)
4.2.2 存取控制
(1)存取控制机制组成
定义用户权限,并将用户权限登记到数据字典中
用户对某一数据对象的操作权力称为权限
DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则
合法权限检查
用户发出存取数据库操作请求
DBMS查找数据字典,进行合法权限检查
(2)用户权限定义和合法权检查机制一起组成了数据库管理系统的存取控制子系统
4.2.3 自主存取控制方法
(1)通过 SQL 的GRANT 语句和REVOKE 语句实现
(2)用户权限组成
数据对象
操作类型
(3)定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作
(4)定义存取权限称为授权
(5)关系数据库系统中存取控制对象
对象类型 |
对象 |
操 作 类 型 |
数据库
模式 |
模式 |
CREATE SCHEMA |
基本表 |
CREATE TABLE,ALTER TABLE |
|
视图 |
CREATE VIEW |
|
索引 |
CREATE INDEX |
|
数据 |
基本表和视图 |
SELECT,INSERT,UPDATE,DELETE,REFERENCES, ALL PRIVILEGES |
属性列 |
SELECT,INSERT,UPDATE, REFERENCES,ALL PRIVILEGES |
4.2.4 授权:授予与回收
1.GRANT
GRANT语句的一般格式:
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
语义:将对指定操作对象的指定操作权限授予指定的用户
WITH GRANT OPTION子句
WITH GRANT OPTION子句:
指定:可以再授予
没有指定:不能传播
不允许循环授权
[例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;
2.REVOKE
授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回
REVOKE语句的一般格式为:
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
[例4.3] 把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
授权用户名 |
被授权用户名 |
数据库对象名 |
允许的操作类型 |
能否转授权 |
DBA |
U1 |
关系Student |
SELECT |
不能 |
DBA |
U2 |
关系Student |
ALL |
不能 |
DBA |
U2 |
关系Course |
ALL |
不能 |
DBA |
U3 |
关系Student |
ALL |
不能 |
DBA |
U3 |
关系Course |
ALL |
不能 |
DBA |
U4 |
关系Student |
SELECT |
不能 |
3.创建数据库模式的权限
数据库管理员在创建用户时实现
CREATE USER语句格式
CREATE USER
[WITH][DBA|RESOURCE|CONNECT];
注:
CREATE USER不是SQL标准,各个系统的实现相差甚远
4.2.5 数据库角色
数据库角色:被命名的一组与数据库操作相关的权限
角色是权限的集合
可以为一组具有相同权限的用户创建一个角色
简化授权的过程
1.角色的创建
CREATE ROLE <角色名>
2.给角色授权
GRANT <权限>[,<权限>]…
ON <对象类型>对象名
TO <角色>[,<角色>]…
3.将一个角色授予其他的角色或用户
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
该语句把角色授予某用户,或授予另一个角色
授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION
指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色
一个角色的权限:直接授予这个角色的全部权限加上其他角色
授予这个角色的全部权限
4.角色权限的收回
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…
用户可以回收角色的权限,从而修改角色拥有的权限
REVOKE执行者是
角色的创建者
拥有在这个(些)角色上的ADMIN OPTION
[例4.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.13]
REVOKE SELECT
ON TABLE Student
FROM R1;
使R1减少了SELECT权限
4.3 视图机制
(1)把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护
(2)间接地实现支持存取谓词的用户权限定义
[例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 张明;
4.4 审计
(1)什么是审计
启用一个专用的审计日志(Audit Log)
将用户对数据库的所有操作记录在上面
审计员利用审计日志
监控数据库中的各种行为,找出非法存取数据的人、时
间和内容
C2以上安全级别的DBMS必须具有审计功能
(2)审计功能的可选性
审计很费时间和空间
DBA可以根据应用对安全性的要求,灵活地打开或关闭审计功能
审计功能主要用于安全性要求较高的部门
1.审计事件
(1)服务器事件
审计数据库服务器发生的事件
(2)系统权限
对系统拥有的结构或模式对象进行操作的审计
要求该操作的权限是通过系统权限获得的
(3)语句事件
对SQL语句,如DDL、DML、DQL及DCL语句的审计
(4)模式对象事件
对特定模式对象上进行的SELECT或DML操作的审计
2.审计功能
(1)基本功能
提供多种审计查阅方式
(2)多套审计规则:一般在初始化设定
(3)提供审计分析和报表功能
(4)审计日志管理功能
防止审计员误删审计记录,审计日志必须先转储后删除
对转储的审计记录文件提供完整性和保密性保护
只允许审计员查阅和转储审计记录,不允许任何用户新增和修改审计记录等
(5)提供查询审计设置及审计记录信息的专门视图
3. AUDIT语句和NOAUDIT语句
AUDIT语句:设置审计功能
NOAUDIT语句:取消审计功能
4.5 数据加密
(1)数据加密
防止数据库中数据在存储和传输中失密的有效手段
(2)加密的基本思想
根据一定的算法将原始数据—明文(Plain text)变换为不可直接识别的格式—密文(Cipher text)
(3)加密方法
存储加密
传输加密
4.6 其他安全性保护
(1)推理控制
处理强制存取控制未解决的问题
避免用户利用能够访问的数据推知更高密级的数据
常用方法
基于函数依赖的推理控制
基于敏感关联的推理控制
(2)隐蔽信道
处理强制存取控制未解决的问题
(3)数据隐私保护
描述个人控制其不愿他人知道或他人不便知道的个人数据的能力
范围很广:数据收集、数据存储、数据处理和数据发布等各个阶段