一、数据安全性概念
1、数据库安全性:保护数据库以防止不合法使用造成的数据泄露、更改和破坏
2、数据库的三类安全问题:
- 技术安全
- 管理安全
- 政策法律安全
3、数据库的不安全因素:
- 非授权用户对数据库的恶意存取和破坏
- 数据库中重要或敏感的数据被泄露
- 安全环境的脆弱性
4、安全标准(重点学习TCSEC和CC两个标准)
(1)TCSEC(Trusted Computer System Evaluation Criteria)《DoD可信计算机系统评估标准》
- 从四个方面来描述安全性级别的划分标准:安全策略、责任、保证、文档
- 将系统划分为4组7个等级(可信度由低到高):D、C(C1,C2)、B(B1,B2,B3)、A(A1)
TCSEC/TDI安全级别划分 安全级别
定义 A1 验证设计(verified design) B3 安全域(security domains) B2 结构化保护(structural protection) B1 标记安全保护(labled security protection) C2 受控的存取保护(controlled access protection) C1 自主安全保护(discrectionary security protection) D 最小保护(minimal protection)
(2)CC(Common Criteria)《通用准则》
- 把信息产品的安全要求分为两部分:安全功能要求、安全保证要求(均以“类-子类-组件”的结构表述)
- 文本分为三部分:简介和一般模型、安全功能要求(11大类+66子类+135组件)、安全保证要求(7大类+26子类+74组件)
- 提出评估保证级,从EAL1-EAL7,保证程度逐渐增高
CC评估保证机(EAL)的划分
评估保证级 定义 近似TCSEC安全级别 EAL1 功能测试EAL2
结构测试 C1 EAL3 系统地测试和检查 C2 EAL4 系统地设计、测试和复查 B1 EAL5 半形式化设计和测试 B2 EAL6 半形式化验证的设计和测试 B3 EAL7 形式化验证的设计的测试 A1
二、数据库安全性控制
1、用户标识与鉴别 常用方法:
- 静态口令鉴别
- 动态口令鉴别
- 生物特征鉴别
- 智能卡鉴别
2、存取控制
(1)自主存取控制(DAC)
- 包括定义用户权限、合法权限检查两部分
- 用户对不同的数据对象有不同的存取权限,不同用户对同一数据对象有不同的存取权限
- 用户可将其拥有的存取权限转授给其他用户
a)创建&删除用户
-- u1从192.168.1某个IP主机登陆,密码为123456
CREATE USER u1@192.168.1.%
IDENTIFIED BY 123456;
--必须给出账号和主机号
DROP USER u1@'%',admin@'localhost';
b) 授权:授予与收回
--给admin用户在本地登陆授予school数据库的所有权限,并拥有转授权限
GRANT ALL
ON school.*
TO 'admin'@'localhost'
WITH GRANT OPTION;
--给ustudent用户任意处登陆授予student表中sno,sname的查阅权限
GRANT SELECT(sno,sname)
ON school.student
TO 'ustudent'@'%';
--撤销ustudent用户在任意处登陆时对student表的查阅权限
REVOKE SELECT
ON school.student
FROM 'ustudent'@'%';
c)数据库角色
- 定义:被命名的一组与数据库操作相关的权限
- 作用:可以为一组具有相同权限的用户创建角色
--创建角色
CREATE ROLE 'app_developer,'app_read','app_write';
--给角色授权
GRANT ALL
ON app_db.*
TO 'app_developer';
GRANT SELECT
ON app_db.*
TO 'app_read';
GRANT INSERT,UPDATE
ON app_db.*
TO 'app_write';
--使用角色为用户授权
GRANT 'app_developer' TO 'dev_1'@'localhost';
GRANT 'app_read' TO 'read_user'@'localhost';
GRANT 'app_write' TO 'write_user'@'localhost';
(2)强制存取控制(MAC)
- 将全部实体划分为主体、客体
- 为每个主体和客体的实例指派一个敏感度标记(被划分为若干级别) TopSecret > = Secret > = Confidential > = Public
- 存取规则:1)仅当主体的许可证级别 >= 客体的密级时,主体能读取客体 2)仅当主体的许可证级别 <= 客体的密级时,主体能写入客体
三、视图机制
- 可以为不同用户定义不同的视图,把数据对象限制在一定范围内。
- 间接地实现支持存取谓词的用户权限定义。
--建立视图
CREATE VIEW JSJ_student
AS
SELECT *
FROM student
WHERE sdept='计算机系';
--为教师用户授予读取权限
GRANT SELECT
ON JSJ_student
TO teacher_user;
--为系主任用户授予全部权限
GRANT ALL PRIVILEGES
ON JSJ_student
TO leader_user;
四、审计
- 审计功能把用户对数据库的所有操作自动记录下来放入审计日志(audit log)
- 审计员利用审计日志监控数据库中发生的各种行为
五、数据加密
- 加密的基本思想:根据一定的算法将原始数据(明文,plain text)变换为不可直接识别的格式(密文,cipher text)
- 数据加密主要包括存储加密和传输加密