(编辑不易,点个赞再走吧。)
数据库的不安全性因素:
1.非授权用户对数据库的恶意存取和破坏
2.数据库中重要或敏感的数据被泄露
3.安全环境的脆弱性
安全标准:
1.TCSEC/TDI标准:
安全级别 | 定义 |
---|---|
A1 | 验证设计 |
B3 | 安全域 |
B2 | 结构化保护 |
B1 | 标记安全保护 |
C2 | 受控的存取保护 |
C1 | 自主安全保护 |
D | 最小保护 |
由A1到D,安全性逐渐减小
2.CC标准:
评估保证级 | 定义 |
---|---|
EAL1 | 功能测试 |
EAL2 | 结构测试(相当于TCSEC中的C1级别) |
EAL3 | 系统的测试和检查(C2) |
EAL4 | 系统的设计、测试和复查(B1) |
EAL5 | 半形式化设计和测试(B2) |
EAL6 | 半形式化验证的设计和测试(B3) |
EAL7 | 形式化验证的设计和测试(A1) |
数据库安全性控制:
常用方法:
1.用户表示和鉴定
为系统提供最外层安全保护措施,其中包括三部分:用户标识、口令(系统核对口令以鉴别用户身份)、用户名和口令易被窃取(每个用户预先约定好一个计算过程或者函数)
2.存取控制
常见存取控制方法:
2.1 自主存储控制(DAC):用户可根据实际需要授予和撤销权限,安全级别为C2级,使用较灵活;
通过GRANT语句和REVOKE语句来实现
2.1.1 GRANT: (语义:将对指定操作对象的指定操作权限授予指定的用户)
GRANT <权限>[,<权限>]...
[ON <对象类型> <对象名>]
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
关于WITH GRANT OPTION语句的使用:
指定(即有该语句):可以再授权 没有指定:不能传播
2.1.2 REVOKE:(授予的权限可以由DBA或其他授权者REVOKE语句收回)
REVOKE <权限>[,<权限>]...
[ON <对象类型 <对象名>]
FROM <用户>[,<用户>]...;
若在授权时使用了WITH GRANT OPTION语句,则在权限收回时必须使用级联CASCADE。
2.1.3 数据库角色
角色的创建:
CREATE ROLE <角色名>
给角色授权:
GRANT <权限>[,<权限>]...
ON <对象类型>对象名
TO <角色>[,<角色>]...
- 将一个角色授予其他的角色或用户:
GRANT <角色1>[,角色2>]...
TO <角色3>[,<用户1>]...
[WITH ADMIN OPTION]
- 角色权限的收回:
REVOKE <权限>[, <权限>]...
ON <对象类型> <对象名>
FROM <角色>[, <角色>]...
2.2 强制存取控制(MAC):数据库有密级,用户有许可证,只有对应的安全级别才能存取,安全级别为B1级,相对要求严格。
主体:是系统中的活动实体,DBMS所管理的实际用户,代表用户的各进程
客体:是系统中的被动式题,是受主体操纵的
强制存取控制规则:
(1)仅当主体的许可证级别大于或等于客体的密级时,该主题才能读相应的客体;
(2)仅当主体的许可证级别小于或等于客体的密级时,该主题才能读相应的客体。
注:
(1)实现MAC时要首先实现DAC,原因:较高安全级别提供的安全保护要包含较低级别的所有保护。
(2)先进行DAC检查,通过DAC检查的数据对象再由系统进行MAC检查,只有通过MAC检查的数据对象方可存取。
3.视图
主要功能是提供数据独立性,无法完全满足要求,间接实现了支持存取谓词的用户权限定义
4.审计
什么是审计:
审计日志用户对数据库的所有操作记录在上面
DBA利用审计日志,找出非法存取数据的人、时间和内容
C2以上安全级别的DBMS必须具有
4.1 用户级别审计
针对自己创建的数据库表或视图进行审计;
记录所有用户对这些表或视图的一切成功或不成功的访问要求以及各类的SQL操作。
4.2 系统级审计
DBA设置;
监测成功或失败的登录要求;
监测GRANT和REVOKE操作以及其它数据库级权限下的操作。
AUDIT语句:设计审计功能
NOAUDIT语句:取消审计功能
AUDIT 操作,操作 NOAUDIT 操作,操作
ON 表名; ON 表名;
5.密码存储
数据加密:防止数据库中数据在存储和传输中失密的有效手段
加密的基本思想:根据一定的算法将原始数据–铭文变换为不可直接识别的格式–密文
加密方法:存储加密,传输加密