4.1 数据库安全性概述
4.1.1 数据库的不安全因素
1.非授权用户对数据库的恶意存取和破坏
- 一些黑客(Hacker)和犯罪分子在用户存取数据库时猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据。
- 数据库管理系统提供的安全措施主要包括用户身份鉴别、存取控制和视图等技术。
2.数据库中重要或敏感的数据被泄露
- 黑客和敌对分子千方百计盗窃数据库中的重要数据,一些机密信息被暴露。
- 数据库管理系统提供的主要技术有强制存取控制、数据加密存储和加密传输等。
- 审计日志分析
3.安全环境的脆弱性
- 数据库的安全性与计算机系统的安全性紧密联系
- 建立一套可信(Trusted)计算机系统的概念和标准
4.1.2 安全标准简介
(1)TCSEC标准
1.TCSEC/TDI标准的基本内容
TCSEC/TDI,从四个方面来描述安全性级别划分的指标:安全策略、责任、保证、文档
2.
- 四组(division)七个等级
D
C(C1,C2)
B(B1,B2,B3)
A(A1)
- 按系统可靠或可信程度逐渐增高
- 各安全级别之间具有一种偏序向下兼容的关系,即较高安全性级别提供的安全保护要包含较低级别的所有保护要求,同时提供更多或更完善的保护能力
(2)CC标准
- 提出国际公认的表述信息技术安全性的结构
- 把信息产品的安全要求分为:安全功能要求和安全保证要求
4.2 数据库安全性控制
(1)非法使用数据库的情况
n编写合法程序绕过数据库管理系统及其授权机制
n直接或编写应用程序执行非授权操作
n通过多次合法查询数据库从中推导出一些保密数据
(2)数据库安全性控制的常用方法
n用户身份鉴别
n存取控制技术:自主存取控制和强制存取控制
n视图技术
n审计技术
n数据加密存储和加密传输
4.2.1 用户身份鉴别
1.静态口令鉴别:静态口令一般由用户自己设定,这些口令是静态不变的
2.动态口令鉴别:口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法
3.生物特征鉴别:通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等
4.智能卡鉴别:智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能
4.2.2 存取控制
用户权限定义和合法权检查机制一起组成了数据库管理系统的存取控制子系统
4.2.3 自主存取控制方法
- 通过 SQL 的GRANT 语句和REVOKE 语句实现
- 用户权限组成:数据对象和操作类型
- 定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作
- 定义存取权限称为授权
4.2.4 授权:授予与回收
1.GRANT
(1)GRANT语句的一般格式:
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
(2)语义:将对指定操作对象的指定操作权限授予指定的用户
(3)WITH GRANT OPTION子句:
n指定:可以再授予
n没有指定:不能传播
(4)不允许循环授权
[例4.1] 把查询Student表权限授给用户U1
GRANT SELECT
ON TABLE Student
TO U1;
- 授予全部权限: GRANT ALL PRIVILIGES
- 权限授予所有用户:TO PUBLIC;
- 对属性列的授权时必须明确指出相应属性列名 :GRANT UPDATE(Sno) //修改学生的学号权限
[例2] 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;
2.REVOKE
- 授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回
- REVOKE语句的一般格式为:
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
[例4.3] 把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
- 收回所有用户权限:FROM PUBLIC;
SQL灵活的授权机制:
(1)数据库管理员:
n拥有所有对象的所有权限
n根据实际情况不同的权限授予不同的用户
(2)用户:
n拥有自己建立的对象的全部的操作权限
n可以使用GRANT,把权限授予其他用户
(3)被授权的用户
n如果具有“继续授权”的许可,可以把获得的权限再授予其他用户
(4)所有授予出去的权力在必要时又都可用REVOKE语句收回
3.创建数据库模式的权限
(1)数据库管理员在创建用户时实现
(2)CREATE USER语句格式
CREATE USER <username>
[WITH][DBA|RESOURCE|CONNECT];
- 只有系统的超级用户才有权创建一个新的数据库用户
- 新创建的数据库用户有三种权限:CONNECT、RESOURCE和DBA
- 如没有指定创建的新用户的权限,默认该用户拥有CONNECT权限。拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库
-
拥有RESOURCE权限的用户能创建基本表和视图,成为所创建对象的属主。但不能创建模式,不能创建新的用户
-
拥有DBA权限的用户是系统中的超级用户,可以创建新的用户、创建模式、创建基本表和视图等;DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户
4.2.5 数据库角色
数据库角色:被命名的一组与数据库操作相关的权限
- 角色是权限的集合
- 可以为一组具有相同权限的用户创建一个角色
- 简化授权的过程
1.角色的创建
CREATE ROLE <角色名>
2.给角色授权
GRANT <权限>[,<权限>]…
ON <对象类型>对象名
TO <角色>[,<角色>]…
3.将一个角色授予其他的角色或用户
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
4.角色权限的收回
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…
- 用户可以回收角色的权限,从而修改角色拥有的权限
- REVOKE执行者是:角色的创建者、拥有在这个(些)角色上的ADMIN OPTION
[例4.4] 通过角色来实现将一组权限授予一个用户。
步骤如下:
(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.2.6 强制存取控制方法
(1)在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类
①主体是系统中的活动实体
n 数据库管理系统所管理的实际用户
n 代表用户的各进程
②客体是系统中的被动实体,受主体操纵
n 文件、基本表、索引、视图
(2)敏感度标记(Label)
n 对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)
n 敏感度标记分成若干级别
绝密(Top Secret,TS)
机密(Secret,S)
可信(Confidential,C)
公开(Public,P)
TS>=S>=C>=P
- 主体的敏感度标记称为许可证级别(Clearance Level)
- 客体的敏感度标记称为密级(Classification Level)
(3)强制存取控制规则
①仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
②仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
4.3 视图机制
v把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护
v间接地实现支持存取谓词的用户权限定义
4.4 审计(Audit)
(1)什么是审计
①启用一个专用的审计日志(Audit Log):将用户对数据库的所有操作记录在上面
②审计员利用审计日志:监控数据库中的各种行为,找出非法存取数据的人、时间和内容
③C2以上安全级别的DBMS必须具有审计功能
(2) AUDIT语句和NOAUDIT语句
AUDIT语句:设置审计功能
NOAUDIT语句:取消审计功能
[例4.5-1] 对修改SC表结构或修改SC表数据的操作进行审计
AUDIT ALTER,UPDATE
ON SC;
[例4.5-2] 取消对SC表的一切审计
NOAUDIT ALTER,UPDATE
ON SC;
4.5 数据加密
加密方法:①存储加密 ②传输加密