数据库安全性
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露,更改和破坏
数据库的不安全因素及数据库安全控制
计算机系统的安全模型:
数据库管理系统安全性控制模型:
非授权用户对数据库的恶意存放和破坏
用户身份鉴别、存取控制和视图等技术
- 用户身份鉴别:
静态口令鉴别 目前常用的鉴别方法,相当于设置用户的密码。
动态口令鉴别 口令是动态变化的,登陆系统前就会获取新口令,相当于短信验证码或者动态令牌。
生物特征鉴别 采用图像处理和模式识别等技术,相当于指纹识别或者脸部识别。
智能卡识别 智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。实际应用中一般采用个人身份识别码(PIN)和智能卡相结合的方式。
- 存取控制:
主要包括定义用户权限和合法权限检查两部分
C2级的数据库管理系统支持自主存取控制,B1级的数据库管理系统强制存取控制
1)自主存取控制方法
定义一个用户的存取权限就是要定义这个用户在那些数据库对象上可以进行那些类型的操作,即定义存取权限(授权)
用户可以“自主”地决定将数据的存取权限授予何人,决定是否也将“授权”的权限授予别人,这样的存取控制就是自主存取控制。
存取权限:
授予权限:
GRANT <权限>[,<权限>]...
ON<对象类型><对象名>[,<对象类型><对象名>]...
TO<用户>[,<用户>]...
[WITH GRANT OPTION]; -- 用户可以将权限授权给其他人
grant select on table sc to user1;
收回权限:
REVOKE <权限>[,<权限>]...
ON<对象类型><对象名>[,<对象类型><对象名>]...
FROM<用户>[,<用户>...
[CASCADE|RESTRICT];-- 默认为cascade,只收回该用户权限
revoke select on table sc from user1;
创建新的用户:
CREATE USER [WITH][DBA|RESOURCE|CONNECT];
数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。
创建角色:
CREATE ROLE<角色名>;
给角色授权:
GRANT <权限>[,<权限>]...
ON <对象类型>对象名
TO<角色>[,<角色>]...
将一个角色授予其他的角色或用户:
GRANT <角色1>[,<角色2>]...
TO <角色3>[,<用户1>]...
[WITH ADMIN OPRION];
指定了WITN ADMIN OPTION子句,则获得某种权限的角色或用户还可以把这种权限再授予其他的角色,角色3拥有角色1和角色2的所有权限。一个角色包含的权限包括直接授予这个角色的全部权限加上其他角色授予这个角色的全部权限。
角色权限的收回:
REVOKE <权限>[,<权限>]...
ON<对象类型><对象名>
FROM <角色>[,<角色>]...
用户可以回收角色的权限,从而修改角色拥有的权限。
示例:
CREATE ROLE R1;
GRANT SELECT ON TABLE SC;
GTANT T1 TO USER;
REVOKE R1 FROM USER;
2)强制存取控制方法
强制存取控制适用于那些数据有严格而固定密级分类的部门(军事或政府等)
在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类。
-
主体是系统中的活动实体,既包含数据库管理系统所管理的实际用户,也包含代表用户的各进程。
-
客体是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等。
数据库管理系统为主体和客体每个实例(值)指派一个敏感标记(label)。label分为绝密(TS)>=机密(S)>=可信©>=公开§。主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。强制存取控制机制就是通过对比主体的敏感度标记和客体的敏感度标记,最终确定主体是否能够存取客体。
当某一用户(或某一主体)以标记label注册入系统时,系统要求他对任何客体的存取要遵循:
1)仅当主体的许可证级别大于或等于客体的密级时,该主才能读取相应的客体。
2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。
禁止向下写,禁止向上读 如果违反了规则2),就有可能把数据的密级从高流向低,从而造成数据的泄露
数据库中重要或敏感的数据被泄露
强制存取控制、数据加密存储和加密传输,此外再安全性要求较高的部分提供审计功能
**审计:**DBA可以利用审计日志中的追踪信息找出非法存取数据的人
**数据加密:**根据一定算法将原始数据(明文)变换为不可直接识别的格式,即密文
安全环境的脆弱性
建立完善的安全标准,比较准确地测定产品的安全性能指标
数据库安全标准
提供一种标准,使用户可以对其计算机系统内敏感信息安全操作的可信程度做评估。
给计算机行业的制造商提供一种可循的指导规则,使其产品能够更好地满足敏感应用的安全需求。
安 全 级 别 | 定 义 |
---|---|
A1 | 验证设计(Verified Design) |
B3 | 安全域(Security Domains) |
B2 | 结构化保护(Structural Protection) |
B1 | 标记安全保护(Labeled Security Protection) |
C2 | 受控的存取保护(Controlled Access Protection) |
C1 | 自主安全保护(Discretionary Security Protection) |
D | 最小保护(Minimal Protection) |
目前许多大型DBMS 达到了C2级,其安全版本达到了B1
▪ C2级的DBMS必须具有自主存取控制功能和初步的审计功能
▪ B1级的DBMS必须具有强制存取控制和增强的审计功能