数据库的安全性
数据库的安全性数据库的一项重要指标,我国采用的最新的安全评判指标是CC标准,分为七个等级(具体可以自行了解)
数据库的安全性目标是要保护数据的完整性、可用性、保密性、可审计性。
- 完整性:只允许被授权的合法用户对数据进行存取操作。
- 可用性:虽然要对数据进行保护但是安全机制不能明显降低操作性能。
- 保密性:可以对数据进行加密,防止非法用户窃取明文信息。
- 可审计性:提供审计功能,把合法用户的操作记录下来,使其具有不可否认性。
数据库的安全并不只是数据库单方面的安全保护,涉及到操作系统和网络。
- 数据库系统层:控制用户和权限
- 操作系统层:存在安全漏洞会对数据库造成安全隐患
- 网络层:大部分数据库允许通过终端或网络远程访问。
主要学习了数据库系统层的安全防护
数据库层安全技术主要有访问控制技术、存取控制技术、数据加密技术、数据审计技术
- 访问控制技术:控制用户授权,防止未授权用户访问系统
- 存取控制技术:控制授权用户的权限,只能访问权限内的数据
- 数据加密技术:保护敏感数据的传输和储存
- 数据库审计:记录运行期间的访问记录,分析是否受到非法入侵。
访问控制主要是通过用户标识与鉴别来实现的
最常见的就是用户密码。后来又多加上其他的手段防止用户名和密码泄露,比如定义一个函数计算结果检验。近年生物密码也加入其中。
存取控制主要有自主存取控制和强制存取控制
- 自主存取控制(DAC):用户可以将权限自主授予其他用户,相对灵活。是主要的存取控制方式。主要应用于企业和商业。
-
强制存取控制(MAC):系统将数据和用户分类,规定好安全级别,用户不能随意更改。主要用于军事政治。
强制存取的安全性比自主存取的安全性要强,较高安全级别的安全保护包含较低级别的所有保护,所以在MAC和DAC共同构成的DBMS中首先会进行DAC检查通过后再进行MAC检查。
自主存取控制
自主存取控制是基于存取矩阵的模型,由主体、客体和控制策略三个基本要素组成。如图:
主体 | 主体1 | 主体2 | … | 主体n |
---|---|---|---|---|
客体 1 | 写 | 读 | … | 读/写 |
客体2 | 写 | 读 | … | 读 |
… | … | … | … | … |
客体n | 读 | 读/写 | … | 写 |
主体对客体进行操作时系统会根据这个二维矩阵判断是否具有权限。
- 数据库管理员(DBA)拥有数据库所有对象的所有权限。
-
对象的所有者拥有对象的所有权限。
在自主存取控制中有一个很重要的概念就是授权。
用户权限由数据库对象(基本关系、视图)和操作类型(创建、修改、删除、SELECT、INSERT、UPDATE、DELETE)组成。
授权的客体对象可以是数据库、表、属性列、行。授权对象的大小叫做授权的
粒度
,粒度越大结果性能越好,但操作不灵活;粒度越小操作越灵活,但性能越差。根据应用的需要选择。
授权和收回权利使用GRANT和REVOKE关键字。
授权有两种方式: -
直接将权利授予用户
例如:
GRANT CREATE TABLE, CREATE VIEW
TO Wang//将建表和视图的权利赋给Wang
Wang创建了一个Student数据表
GRANT SELECT //Wang将Student表的选择的权利赋给Li
ON TABLE STUDENT
TO Li
WITH GRANT OPTION //表示Li可以将他拥有的权利赋给其他用户
REVOKE SELECT
ON TABLE STUDENT
FROM Li //仅仅收回Li的选择权限
REVOKE SELECT
ON TABLE STUDENT
FROM Li
CASCADE//表示级联收回,即Li赋予的用户的权利也一并收回
-
创建一个赋予权利的角色,再将角色赋给用户。
这里的角色可以看成是权限的集合。
当有很多的用户希望被授予同样的权限时这明显更加方便。
CREATE ROLE R1;
GRANT SELECT
ON TABLE STUDENT
TO R1
GRANT R1
TO Li
强制存取控制
强制存取控制是有系统自己定义的权限,而不是由用户自己授予,所以没有相应的关键字。
系统按安全性级别对用户和数据对象进行分组,典型分组有绝密、机密、可信、公开。主体的级别称为许可证级别(也可以理解为访问级别),客体的级别称为密级(也可以理解为加密级别)。
强制存取的规则为
- 仅当主体的许可证级别大于等于客体的密级时,主体才可读取相应客体
-
仅当主体的许可证级别等于客体的密级时,主体才可写相应的客体。
第一条规则好理解,第二条规则的意思是防止高级别的用户在低级别的客体上写数据从而向低级别泄露信息。
附:
视图机制:
自主存取控制可以对数据库、关系、属性列、元组等进行操作,但是所希望限定的有权限的数据往往不能方便的表达出来,视图机制可以将相应的数组展示出来,并很方便的授权。
CREATE VIEW SC06
AS SELECT CNO,GRADE
FROM SC
WHERE SNO LIKE '2006'//创建06届的视图
GRANT SELECT
ON VIEW SC06
TO Li
WITH GRANT OPTION
版权声明:本文为weixin_50937681原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。