前言:数据库的特点之一是由数据库管理系统提供统一的数据保护功能来保证数据的安全可靠和正确有效
数据库的数据保护功能主要包括:数据的安全性、数据的完整性
一、数据库安全性概述
数据库的安全性指:保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
(一)、数据库的不安全因素
1、非授权用户对数据库的恶意存取和破坏
数据库管理系统提供的安全措施:用户身份鉴别、存取控制、视图
2、数据库中重要或敏感的数据被泄露
数据库管理系统提供的主要技术:强制存取控制、数据加密存储、加密传输、审计
3、安全环境的脆弱性
(二)、安全标准简介
1、TCSEC/TDI:从四个方面来描述安全性级别划分的指标:安全策略、责任、保证、文档
TCSEC/TDI安全级别划分:4组7个等级,D、C(1、2)、B(1、2、3)、A1
2、CC
对信息产品的安全要求分为:安全功能要求、安全保证要求
CC文本组成:简介和一般模型、安全功能要求、安全保证要求
二、数据库安全性控制
数据库安全性控制的常用方法:用户标识和鉴定、存取控制、视图、审计、数据加密
计算机系统的安全模型:
(一)、用户身份鉴别
是系统提供的最外层的安全保护措施
1.静态口令鉴别
静态口令一般由用户自己设定,这些口令是静态不变的
2动态口令鉴别
口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法
3.生物特征鉴别
通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等
4.智能卡鉴别
智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能
(二)、存取控制
作用:确保只授权给有资格的用户访问数据库的权限,禁止未被授权的人员接近数据。
功能:定义用户权限、合法权限检查
常用存取控制方法:自主存取控制、强制存取控制
1、自主存取控制(Discretionary Access Control,简称DAC)——
●C2级
●用户对不同的数据对象有不同的存取权限
●不同的用户对同一对象也有不同的权限
●用户还可将其拥有的存取权限转授给其他用户
2、强制存取控制(Mandatory Access Control,简称MAC)
●B1级
●每一个数据对象被标以一定的密级
●每一个用户也被授予某一个级别的许可证
●对于任意一个对象,只有具有合法许可证的用户才可以存取
(三)、自主存取控制方法
通过SQL的GRANT语句和REVOKE语句实现
用户权限组成:数据对象、操作类型
定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作
定义存取权限称为授权(authorization)
(四)、授权:授予与收回
SQL中使用GRANT和REVOKE语句向用户授予或收回对数据的操作权限。
1、GRANT向用户授予权限
GRANT语句的一般格式:
- GRANT<权限>[,<权限>]..
- ON <对象类型><对象名>[,<对象类型><对象名>]...
- TO<用户[,<用户>]...
- [WITH GRANT OPTION];
意思:将指定的操作对象 的指定的操作权限 授予指定的用户—即把哪一个表的什么权限?授予给哪一个用户?
[WITH GRANT OPTION] 指该用户可以把这种权限在授予其他的用户,不可循环授予
例题:[例4.1]把查询Student表权限授给用户U1
- GRANT SELECT
- ON TABLE Student
- TO U1;
2、REVOKE收回权限
REVOKE语句的一般格式:
- REVOKE<权限>[,<权限>]...
- ON<对象类型><对象名>[,<对象类型><对象名>].….
- FROM<用户>[<用户>]..[CASCADE |RESTRICT];
例题:[例4.8]把用户U4修改学生学号的权限收回
- REVOKE UPDATE(Sno)
- ON TABLE Student
- FROM U4;
3、数据库角色
数据库角色:被命名的一组与数据库操作相关的权限
- 角色是权限的集合
- 可以为一组具有相同权限的用户创建一个角色
- 简化授权的过程
角色的创建
CREATE ROLE<角色名>
给角色授权
- GRANT 权限
- ON <对象类型>对象名
- TO <角色>[<角色>]…
将一个角色授予其他的角色或用户
- GRANT <角色1>[,<角色2>]...
- TO <角色3>[,<用户1>]..
- [WITH ADMIN OPTION]
角色权限的收回
- REVOKE <权限>[,<权限>].…
- ON <对象类型><对象名>
- FROM <角色>[角色>]….
例题:[例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 王平;
(五)、强制存取控制方法
强制存取控制(MAC)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据。
实现强制存取控制时要首先实现自主存取控制
原因:较高安全性级别提供的安全保护要包含较低级别的所有保护
自主存取控制与强制存取控制共同构成数据库管理系统的安全机制
三、视图机制
把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护
间接地实现支持存取谓词的用户权限定义
四、审计
什么是审计?
启用一个专用的审计日志(Audit Log)将用户对数据库的所有操作记录在上面
审计员利用审计日志:监控数据库中的各种行为,找出非法存取数据的人、时间和内容
C2以上安全级别的DBMS必须具有审计功能
AUDIT语句和NOAUDIT语句
AUDIT语句:设置审计功能
NOAUDIT语句:取消审计功能
五、数据加密
数据加密作用:防止数据库中数据在存储和传输中失密的有效手段
加密的基本思想:根据一定的算法将原始数据—明文(Plain text)变换为不可直接识别的格式—密文(Cipher text)
加密方法:存储加密传输加密
六、小结
实现数据库系统安全性的技术和方法:
- 用户身份鉴别
- 存取控制技术:自主存取控制和强制存取控制
- 视图技术
- 审计技术
- 数据加密存储和加密传输