《数据库系统概论》 -- 4. 数据库安全性
背景
非授权用户对数据库的恶意存取和破坏
数据库中重要或敏感数据被泄露
安全环境的脆弱性
概念
保护数据库以防止不合法使用所造成的数据泄露、更改或破坏
安全标准
1985--TCSEC (Trusted Computer System Evaluation Criteria)
1996--CC (Common Criteria)
1999--CC V2.1成为国际标准
TSSEC
4组7个等级
D、C(C1,C2)、B(B1,B2,B3)、A(A1)
安全程度由低到高
CC
三部分组成:简介和一般模型、安全功能要求、安全保证要求
安全保证要求:7大类、26个子类和74个组件。
根据系统对安全保证的要求提出了7级评估保证级(Evaluation Assurance Level)
EAL2、EAL3对应C1、C2;
EAL4、EAL5、EAL6对应B1、B2、B3;
EAL7对应A1
数据库安全控制
用户身份鉴别
静态口令鉴别、动态口令鉴别、生物特征鉴别、智能卡鉴别
(智能卡:一种不可复制的硬件,内置集成电路芯片,具有硬件加密的功能)
存取控制
理解 包括定义用户权限和合法权限检查两部分;
C2级的DBMS支持自主存取控制(Discretionary Access Control)和强制存取控制(Mandatory Access Control)
DAC--权限管理GRANT、REVOKE、ROLE
创建用户
格式 CREATE USER <username> [WITH] [DBA|RESOURCE|CONNECT];
说明 DBA--系统中的超级用户,可以创建用户、模式、基本表、视图,拥有所有数据库对象的存取权限,还可以授权给一般用户
RESOURCE--可以创建基本表和视图,成为所创建对象的属主,不能创建模式,不能创建用户
CONNECT--只能登录数据库,权限由数据库管理员或其他用户授予
授权
格式 GRANT <权限>[,<权限>...]
ON <对象类型> <对象名>[,<对象类型> <对象名>...]
[WHEN <条件表达式>]
TO <用户|角色>[,<用户|角色>...]
[WITH GRANT OPTION];
说明 用户可以是PUBLIC,即全体用户
WITH GRANT OPTION表明用户可以将他所得到的权限继续授权给其他人,但是不允许再授回给授权者或祖先授权者
在授予用户在属性列的INSERT权时,必须要包含主码
SQL中,USER()代表当前用户
举例 把查询Student表的权限授给用户U1
GRANT SELECT
ON TABLE Student
TO U1;
把对Student表和Course表的全部操作权限授予U2和U3
GRANT ALL PRIVILEGES
ON TABLE Student, Course
TO U2, U3;
把对SC表的查询权限授予所有用户
GRANT SELECT
ON TABLE SC
TO PUBLIC;
把查询Student表和修改学生学号的权限授予U4
GRANT SELECT, UPDATE(Sno)
ON TABLE Student
TO U4;
把对表SC的INSERT权限授予U5用户,并允许将此权限再授予其他用户
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;
取消授权
格式 REVOKE <权限>[,<权限>...]
ON <对象类型> <对象名>[,<对象类型> <对象名>...]
FROM <用户|角色>[,<用户|角色>...] [CASCADE|RESTRICT];
说明 CASCADE--如果用户已经授权给了其他用户,则必须使用CASCADE,否则系统拒绝执行
举例 把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
收回所有用户对表SC的查询权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE;
角色
创建 CREATE ROLE <角色名>;
使用 将一个角色授予其他的角色或用户
GRANT <角色>[,<角色>...]
TO <用户|角色>[,<用户|角色>...]
[WITH ADMIN OPTION]
去掉用户的某角色
REVOKE <角色>[,<角色>...]
FROM <用户>[,[用户]...]
举例 角色R1拥有Student表的SELECT、UPDATE、INSERT权限,授予王平、张明、赵玲三人R1角色,之后取消角色R1的INSERT和UPDATE权限,之后收回王平的R1角色
CREATE ROLE R1;
GRANT SELECT, UPDATE, INSERT ON TABLE Student TO R1;
GRANT R1 TO 王平,张明,赵玲;
REVOKE INSERT, UPDATE ON TABLE Student FROM R1;
REVOKE R1 FROM 王平;
MAC(强制存取控制策略)
概念 主体--系统中的活动实体,既包括实际用户,也包括用户的各进程
客体--系统中的被动实体,受主体操纵的文件、基本表、索引、试图等
理解 系统为主体和客体的每个实例都指派一个敏感度标记(label)
敏感度标记级别:绝密TS、机密S、可信C、公开P
主体的label称为许可证级别,客体的label称为密级
MAC的规则
仅当主体的许可证级别高于客体的密级时,主体才能读取该客体;
仅当主体的许可证级别低于客体的密级时,主体才能写入该客体;
视图机制
为不同的用户定义不同的视图,把数据对象限制在一定的范围内
审计
理解 审计功能把用户对数据库的所有操作自动记录下来放到审计日志audit log中。
可以审计的事件包括服务器事件、系统权限、语句事件、模式对象事件、用户鉴别、自主访问控制和强制访问控制事件
既能审计成功的操作,也可以审计失败的操作
开启审计功能,必须打开系统审计开关(系统参数audit_trail=true)
举例 对修改SC表结构或修改SC表数据的操作进行审计
AUDIT ALTER, UPDATE ON SC;
取消对SC表的一切审计
NOAUDIT ALTER, UPDATE ON SC;
数据加密
存储加密
透明存储加密(内核级加密)
在创建表语句中说明需要加密的字段,即可实现:数据操作(增删改查)由DBMS实现自动对数据进行加密解密工作
非透明存储加密(通过多个加密函数实现)
传输加密
链路加密
在数据链路层进行加密,对报头和报文都加密
端到端加密
与HTTPS原理相同,采用安全套接层协议SSL,是一种端到端的加密
1.通过CA证书确认通信双方端点的可靠性
2.通过PKI协商加密算法和密钥
3.传输可信数据
其他安全保护
推理控制:避免用户利用其能够访问的数据推知更高密级的数据。如函数依赖推知他人工资
隐蔽信道:
数据隐私保护技术