数据库安全性概述
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏 。
数据库的不安全因素
-
非授权用户对数据库的恶意存取和破坏
-
数据库中重要或敏感数据被泄露
-
安全环境的脆弱性
数据库的安全性控制
安全控制技术
- 自主存取控制与强制存取控制
- 视图技术
- 审计审计技术
- 数据加密存储和传输加密
- 用户身份鉴别
存取控制流程
- 首先,DBMS对提出SQL访问的请求的用户进行身份鉴别,防止不可信用户使用系统
- 然后,在SQL处理层进行自主存取控制和强制存取控制,进一步可进行推理控制
- 还可以对用户访问行为和系统关键操作进行审计,对异常用户行为进行简单入侵检测
自主存取控制
- 用户对不同数据对象有不同的存取权限
- 不同用户对同一对象也有不同权限
- 用户还可以将其拥有的权限转授给其他用户
强制存取控制
- 每一个数据对象被标以一定的密级
- 每一个用户也被授予一个级别的许可证
- 对于任意一个对象,只有具有合法许可证的用户才可以存取
授权与回收
GRANT <权限>[(字段)] [,<权限>]
ON 表或角色
TO <用户> [,<用户>]
[WITH GRANT OPTION]
GRANT update(sno), select
ON student
TO Anthoney_4926
WITH GRANT OPTION
创建角色
create role rname
给角色授权
grant alter
on student
to rname
将角色授予用户
grant rname
to Anthoney_4926
给所有人授予所有权限
grant all
on student
to public
撤销用户权限
revoke update(sno)
on student
form Anthoney_4926
撤销角色权限
revoke alter(sno)
on student
from rname
从用户身上撤销角色
revoke rname
from Anthonye_4926
视图机制
创建视图
create view v_student as
select *
from student
where sdept='cs'
更新视图
create or replace view v_student as
select *
from student
where sdept='cs'
撤销视图
drop view v_student
审计
什么是审计?
- 启用一个专用的审计日志(Audit Log)将用户对数据库的所有操作记录在上面
- 审计员利用审计日志监控数据库中的各种行为,找出非法存取数据的人、时间和内容
审计事件
- 服务器事件:审计数据库服务器发生的事件
- 系统权限:对系统拥有的结构或模式对象进行操作的审计,要求该操作的权限是通过系统权限获得的
- 语句事件:对SQL语句,如DDL、DML、DDL及DCL语句的审计模式对象事件
- 模式对象事件:对特定模式对象上进行的SELECT或DML操作的审计
audit alter, update
on sc;
noaudit alter, update
on sc;
数据加密
存储加密
- 透明存储加密
- 内核级加密保护方式,对用户完全透明
- 将数据在写到磁盘时对数据进行加密,授权用户读取数据时再对其进行解密
- 数据库的应用程序不需要做任何修改,只需在创建表语句中说明需加密的字段即可
内核级加密方法: 性能较好,安全完备性较高
- 非透明存储加密
- 通过多个加密函数实现
传输加密
- 链路加密
- 在链路层进行加密
- 传输信息由报头和报文两部分组成
- 报文和报头均加密
- 端到端加密
- 在发送端加密,接收端解密
- 只加密报文不加密报头
- 所需密码设备数量相对较少,容易被非法监听者发现并从中获取敏感信息