本文全部内容来自数据库系统概论(第5版)—王珊、萨师煊著
数据库安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
以上四个方面来描述安全性级别划分的指标。
数据库安全性控制的方法:
用户身份鉴别是数据库管理系统提供的最外层安全保护措施。每个用户在系统中都有一个用户标识,
每个用户标识由用户名(username
)和用户标识号(UID
)组成。
静态口令鉴别
静态口令一般由用户自己设定,鉴别时只要按照要求输入正确的口令,系统就允许用户使用数据库管理系统。
例如:生日,电话,字母、数字和特殊字符混合的密码等
动态口令鉴别
口令是动态化的,每次鉴别时均需要使用动态产生的新口令登录。
例:短信动态密码、动态令牌方式
生物特征鉴别
通过生物特征进行认证的技术,使用图像处理和模式识别技术。
例:指纹、虹膜、掌纹等
智能卡鉴别
智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。
例:个人身份识别码(PIN
)和智能卡相结合的方式
数据库安全最重要的一点是确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接近数据。
存取控制机制主要包括定义用户权限和合法权限检查两部分。
定义用户权限,并将用户权限登记到数据字典中。
用户对某一数据对象的操作权利称为权限。
数据库管理系统应该提供适当的语言定义用户权限。
合法权限检查
定义用户权限和合法权限检查机制一起组成数据库管理系统的存取控制子系统。
用户权限是有两个要素组成的:数据库对象和操作类型。
定义一个用户的存取权限就是要定义这个用户可以在哪些数据库对象上进行哪些类型的操作。
定义操作权限称为授权。
存取控制的对象不仅有数据本身(基本表中的数据、属性列上的数据),还有数据库模式(数据库、基本表、视图和索引的创建等)。
使用grant
和revoke
语句向用户授予或收回对数据的操作权限。
1、grant
grant 权限,
on 对象类型 对象名,
to 用户,
with grant option;
语义:将指定操作对象的指定操作权限授予指定的用户。
数据库管理员、数据库对象创建者、拥有权限的用户都可以发出grant
语句,接受权限的用户可以使一个或多个具体用户。
在添加with check option
语句后,该权限还可以再授予其他用户。
例:将查询Student表的权限授予用户1
grant select on table Student to U1;
grant
语句传递权限的情况:
2、revoke
使用revoke
可以收回授予用户的权限。
revoke 权限,
on 对象类型 对象名,
from 用户;
/* cascade | restinct */
例:把用户1的权限收回
revoke select on table Student from U1;
数据库管理员拥有对数据库中所有对象的所有权限,并可以根据实际情况将不同的权限授予不同的用户。
用户可以自主地决定将数据的存取权限授予何人、决定是否将授权权限授予别人。
3、创建数据库模式的权限
对创建数据库模式一类的数据库对象的授权则由数据库管理员在创建用户时实现。
create user username with dba|resource|connect;
connect
、resource
、dba
connect
权限的用户不能创建新用户,不能创建模式、基本表,只能登录数据库resource
权限的用户能创建基本表和视图,称为所创建对象的属主,但不能创建模式、新用户。dba
权限的用户时系统中的超级用户,可以进行一切操作。数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。使用角色来管理数据库权限可以简化授权的过程。
/*1、创建角色*/
create role 角色名;
/*2、给角色授权*/
grant 权限,... on 对象类型 对象名 to 角色;
/*3、一个角色授予其他的角色或用户*/
grant 角色1,... to 角色3,... with admin option;
/*4、角色权限的收回*/
revoke 权限,... on 对象类型 对象名 from 角色,...;
数据库角色是一组权限的集合。
强存取空值是对数据本身进行密级标记,无论数据如何复制,标记与数据都是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。
通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。
例:建立计算机系学生的视图,把对该视图的select权限授予王平,把该视图的所有操作权限授予张明。
create view CS_Student as select * from Student where Sdept='CS';
grant select on CS_Student to 王平;
grant all privileges on CS_Student to 张明;
审计功能把用户对数据库的所有操作自动记录下来放入审计日志中。审计员可以利用审计日志监控数据库中的各种行为,重视导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容。
数据加密是防止数据库数据在存储和传输中失密的有效手段。