数据库系统概论—安全、完整性
数据库系统概论—基础篇(3)
三.数据库安全性
1.数据库安全性概述
数据库的安全性指保护数据库以防不合法使用所造成的数据泄露、更改或破坏
2.数据库安全性控制
2.1用户身份鉴别
- 静态口令鉴别
- 动态口令鉴别
- 生物鉴别特征
- 智能卡鉴别
2.2存取控制
- 自主存取控制:给用户限权(DAC,C1级)
- 强制存取控制:给数据库对象一定的密级(MAC,B1级)
2.3自主存取控制方法(授权:授予与收回)
- 授权
Grant 权限
on (类型,表/视图...) 对象名1,(类型,表/视图...) 对象名2...
to 用户1,用户2...
with grant option;(是否可以传播该权限)
- 收回
Revoke 权限
on (类型,表/视图...) 对象名1,(类型,表/视图...) 对象名2...
from 用户1,用户2...
CASADE/RESTRICT;(是否级联)
- 创建用户
CREATE USER 用户名
with DBA/RESOURCE/CONNECT;
DBA:超级用户,有所有数据库对象的限权
RESOURCE:能创建表和视图
CONNECT:只能在限权内操作
2.4数据库角色
数据库角色是一组数据库操作相关的权限的集合(权限的集合)
#授予
Grant 权限
on (类型,表/视图...) 对象名
to 角色1,角色2...;
#收回
Grant 权限
on (类型,表/视图...) 对象名
from 角色1,角色2...;
2.5强制存取控制方法(数据加密)
主体:用户;客体:数据
- 主体的许可证 >= 客体的密级时,该主体才能读取相应的客体
- 主体的许可证 <= 客体的密级时,该主体才能写相应的客体
3.视图机制
视图可以隐藏部分数据,控制要查询的数据是否对用户是可见的
4.审计
审计功能把用户对数据库的所有操作记录下来放入审计日志
四.数据库完整性
数据库完整性是数据库的正确性和相容性,是为例防止数据库中存在不符合语义的数据。
1.实体、参照完整性
- 实体:非空唯一,在CREATE TABLE中使用PRIMART KEY定义。(主码)
- 参照:外码,参照表的主码是被参照表的主码
2用户自定义完整性
针对某一具体应用的数据必须满足的语义要求。
- 属性上的约束(列级)
NOT BULL:列值非空
UNIQUE:列值唯一
CHECK:是否满足条件(类型 属性 CHECK(Ssex in('男','女'))性别在男女中选)
- 元组上的约束(表级)
eg:当性别是男,名字不以”Ms.“开头
建表...
CHECK(Sex = '女' or Sname not like'Ms.%');
3.完整性约束字句
给约束起名字,CONSTRAINT 约束名一起使用
CONSTRAINT 约束名 约束条件;
4.断言
更一般的约束
#创建
CREATE ASSERTION 断言名
CHECK字句;
#删除
DROP ASSERTION 断言名;
5.触发器
由事件触发的特殊过程(事件条件功能)
#创建
CREATE TRIGGER 触发器名
BEFORE/ALTER 触发事件 on 表名
REFRTENCING NEW/OLD ROW AS 变量#NEW/OLD ROW是两个表(新/旧)
FOR EACH ROW/STATEMENT#行级/列级
WHEN 触发事件 触发动作;
#删除
DROP TRIGGER 触发器名 on 表名;