4.数据库安全性
数据库的安全性:保护数据库,防止不合法的使用导致的数据泄露、更改或破坏
4.1 数据库安全性概述
不安全因素:
- 非授权用户对数据库的恶意存取和破坏
- 数据库中重要或敏感的数据被泄露
- 安全环境的脆弱性
4.2 数据库安全性的控制
存取控制
1.自主存取控制
用户的授权与收回
grant 权限
on table 表名
to 用户
[with grant option] //允许该用户授权给其他用户
revoke 权限
on table 表名
from 用户 [cascade/restrict] //级联
创建数据库模式的权限(由数据库管理员在创建用户时实现)
权限 | create user | create schema | create table | 登录操作数据库 |
---|---|---|---|---|
DBA | 可以 | 可以 | 可以 | 可以 |
resource | 不可以 | 不可以 | 可以 | 可以 |
connect | 不可以 | 不可以 | 不可以 | 有授权可以 |
角色的创建
create role 角色名
角色授权
grent 权限
on 对象(表)对象名(表名)
to 角色
将一个角色的权限授予其他用户
grant 角色
to 被授予角色
[with admin option] //可以在授予其他人
权限收回
revoke 权限
on 对象
from 角色
2.强制存取控制
数据库系统为它们每一个实例指派一个 敏感度标记TS(绝密) >= S(机密) >= C(可信) >= P(公开)
仅当主体级别大于等于客体级别时,主体可读入相应客体 //高层看绝密
仅当主体级别小于等于客体级别时,主体才能写相应客体 //低层写信息
on 操作 怎么办
no action 拒绝执行
cascade 级联删除
foreign key (Sno) references Stduent(Sno)
on delete cascade //Student删除操作时,级联删除SC表中涉及到的元组
on update cascade //Student更新操作时,级联更新SC表中涉及到的元组
foreign key (Cno) references Course (Cno)
on delete no action //Course删除操作时,如果造成Course与SC不一致,拒绝删除
on update cascade //级联更新
违约拒绝执行
not null //列值非空
unique //列值唯一
check短语 //列值满足条件表达式 (允许使用谓词)
Sno char(10) not null
Sname char(10) unique
Ssex char(2) check(Ssex in('男','女'))