数据库系统---数据库安全性
数据库安全性概述
安全标准简介
目前CC已基本取代了TCSEC,成为评估信息产品安全性的主要标准
TCSEC/TDI安全级别划分:
D级:将一切不符合更高标准的系统均归于D组。
C1级:非常初级的自主安全保护,进行自主存取控制(DAC)
C2级:安全产品的最低档次
B1级:标记安全保护,实施强制存取控制(MAC)
B2级:结构化保护,实施DAC和MAC
B3级:安全域,提供系统恢复过程
A1级:验证设计
CC评估保证级(EAL)划分:
数据库安全性控制
系统根据用户标识鉴定用户身份,合法用户才准许进入计算机系统
数据库管理系统还要进行存取控制,只允许用户执行合法操作
操作系统有自己的保护措施
数据以密码形式存储到数据库中
数据库安全性控制的常用方法
用户标识和鉴定
存取控制
视图
审计
数据加密
用户身份鉴别
用户身份鉴别的方法
1.静态口令鉴别
静态口令一般由用户自己设定,这些口令是静态不变的
2.动态口令鉴别
口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法
3.生物特征鉴别
通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等
4.智能卡鉴别
智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能
存取控制
存取控制机制组成
定义用户权限,并将用户权限登记到数据字典中
用户对某一数据对象的操作权力称为权限
DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则
合法权限检查
用户发出存取数据库操作请求
DBMS查找数据字典,进行合法权限检查
用户权限定义和合法权检查机制一起组成了数据库管理系统的存取控制子系统
自主存取控制
自主存取控制(Discretionary Access Control ,简称DAC)
C2级
用户对不同的数据对象有不同的存取权限
不同的用户对同一对象也有不同的权限
用户还可将其拥有的存取权限转授给其他用户
强制存取控制
强制存取控制(Mandatory Access Control,简称 MAC)
B1级
每一个数据对象被标以一定的密级
每一个用户也被授予某一个级别的许可证
对于任意一个对象,只有具有合法许可证的用户才可以存取
自主存取控制方法
通过 SQL 的GRANT 语句和REVOKE 语句实现
用户权限组成
数据对象
操作类型
定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作
定义存取权限称为授权
关系数据库系统中存取控制对象
授权:授予与回收
GRANT
GRANT语句的一般格式:
GRANT <权限>/<ALL PRIVILIGES(所有权限)>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
发出GRANT:
数据库管理员
数据库对象创建者(即属主Owner)
拥有该权限的用户
按受权限的用户
一个或多个具体用户
PUBLIC(即全体用户)
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;
[例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
TO U5
WITH GRANT OPTION;
执行例4.5后,U5不仅拥有了对表SC的INSERT权限,
还可以传播此权限:
[例4.6] GRANT INSERT
ON TABLE SC
TO U6
WITH GRANT OPTION;
同样,U6还可以将此权限授予U7:
[例4.7] GRANT INSERT
ON TABLE SC
TO U7;
但U7不能再传播此权限。
用户权限定义表:
REVOKE
授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回
REVOKE语句的一般格式为:
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
CASCADE:级联
创建数据库模式的权限
数据库管理员在创建用户时实现
CREATE USER语句格式:
CREATE USER <username>
[WITH][DBA|RESOURCE|CONNECT];
CREATE USER语句格式说明
只有系统的超级用户才有权创建一个新的数据库用户
新创建的数据库用户有三种权限:CONNECT、RESOURCE和DBA
如没有指定创建的新用户的权限,默认该用户拥有CONNECT权限。拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库
数据库角色
数据库角色:被命名的一组与数据库操作相关的权限
角色是权限的集合
可以为一组具有相同权限的用户创建一个角色
简化授权的过程
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
强制存取控制方法
强制存取控制(MAC):
保证更高程度的安全性
用户不能直接感知或进行控制
适用于对数据有严格而固定密级分类的部门
军事部门
政府部门
实体
在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类
主体是系统中的活动实体
数据库管理系统所管理的实际用户
代表用户的各进程
客体是系统中的被动实体,受主体操纵
文件、基本表、索引、视图
敏感度标记(Label)
对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)
敏感度标记分成若干级别
绝密(Top Secret,TS)
机密(Secret,S)
可信(Confidential,C)
公开(Public,P)
TS>=S>=C>=P
主体的敏感度标记称为许可证级别(Clearance Level)
客体的敏感度标记称为密级(Classification Level)
强制存取控制规则
(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
(2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
先进行自主存取控制检查,通过自主存取控制检查的数据对象再由系统进行强制存取控制检查,只有通过强制存取控制检查的数据对象方可存取。
视图机制
把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护
间接地实现支持存取谓词的用户权限定义
审计
审计功能的可选性
审计很费时间和空间
DBA可以根据应用对安全性的要求,灵活地打开或关闭审计功能
审计功能主要用于安全性要求较高的部门
AUDIT语句和NOAUDIT语句:
AUDIT语句:设置审计功能
NOAUDIT语句:取消审计功能
[例4.15] 对修改SC表结构或修改SC表数据的操作进行审计
AUDIT ALTER,UPDATE
ON SC;
[例4.16] 取消对SC表的一切审计
NOAUDIT ALTER,UPDATE
ON SC;
数据加密
数据加密
防止数据库中数据在存储和传输中失密的有效手段
加密的基本思想
根据一定的算法将原始数据—明文(Plain text)变换为不可直接识别的格式—密文(Cipher text)
加密方法
存储加密
传输加密