♥ 计算机系统中,安全措施是一级一级层层设置的
◾ 系统根据用户标识鉴定用户身份,合法用户才准许进入计算机系统
◾ 数据库管理系统进行存取控制,只允许用户执行合法操作
◾ 操作系统有自己的保护措施
◾ 数据以密码形式存储到数据库中
♥ 数据库安全性控制的常用方法
◾ 用户身份鉴别
◾ 存取控制
◾ 视图
◾ 审计
◾ 数据加密
♥ 数据库安全性控制
4.2.1 用户身份鉴别
4.2.2 存取控制
4.2.3 自主存取控制方法
4.2.4 授权:授予与回收
4.2.5 数据库角色
4.2.6 强制存取控制方法
♥ 用户身份鉴别(Identification & Authentication)
◾ 系统提供的最外层安全保护措施
◾ 用户标识:由用户名和用户标识号组成(用户标识号在系统整个生命周期内唯一)
♥ 用户身份鉴别的方法
4.2.1 用户身份鉴别
4.2.2 存取控制
4.2.3 自主存取控制方法
4.2.4 授权:授予与回收
4.2.5 数据库角色
4.2.6 强制存取控制方法
♥ 存取控制机制组成
◾ 定义用户权限,并将用户权限等级到数据字典中
● 用户对某一数据对象的操作权利称为权限
● DBMS提供适当的语言来定义用户权限,存放在数据字典中,称作安全规则或授权规则
◾ 合法权限检查
● 用户发出存取数据库操作请求
● DBMS查找数据字典,进行合法权限检查
用户权限定义和合法权检查机制一起组成了DBMS的存取种植子系统
4.2.1 用户身份鉴别
4.2.2 存取控制
4.2.3 自主存取控制方法
4.2.4 授权:授予与回收
4.2.5 数据库角色
4.2.6 强制存取控制方法
♥ 自主存取控制(Discretionary Access Control,简称DAC)
◾ 用户对不同的数据对象有不同的存取权限
◾ 不同的用户对同一对象也有不同的权限
◾ 用户还可将其拥有的权限转授给其他用户
♥ 通过SQL的GRANT语句和REVOKE语句实现用户权限的定义和回收
♥ 关系数据库系统中存取控制对象
对象类型 | 对象 | 操作类型 |
---|---|---|
数据库模式 | 模式 | create schema |
数据库模式 | 基本表 | create table, alter table |
数据库模式 | 视图 | create view |
数据库模式 | 索引 | create index |
数据 | 基本表和视图 | select,insert,update,delete,references,all privileges |
数据 | 属性列 | select,insert,update,references,all privileges |
4.2.1 用户身份鉴别
4.2.2 存取控制
4.2.3 自主存取控制方法
4.2.4 授权:授予与回收
4.2.5 数据库角色
4.2.6 强制存取控制方法
♥ 1.权限授予:GRANT
♥ GRANT语句的一般格式
grant <权限>[,<权限>]...
on <对象类型><对象名>[,<对象类型><对象名>]...
to <用户>[,<用户>]...
[with grant option] /* 指定该子句可以将权限转授给其他用户;若没有指定,则不能传播权限 */
♥ 语义:将对指定操作对象的指定的操作权限授予给自定的用户
♥ 不能循环授权
♥ 发出grant
◾ 数据库管理员
◾ 数据库对象创建者(即属主Owner)
◾ 拥有 改权限的用户
♥ 接受权限的用户
◾ 一个/多个具体用户
◾ public(即全体用户)
[例 4.1] 把查询Student表权限授权给用户U1
-- 将一种权限授予给一个用户
grant select
on table Student
to U1;
[例 4.2] 把对Student表和Course表的全部权限授权给用户U2和U3
-- 一次向多个用户传播多种同类对象的权限
grant all privileges
on table Student,Course
to U2, U3;
[例 4.3] 把对SC表的查询权限授予给所有用户
grant select
on table SC
to public;
[例 4.4] 把查询Student表和修改学生学号的权限授给用户U4
-- 对属性列的授权时必须明确指出相对应的属性列名
grant select,update(Sno)
on table Student
to U4;
♥ 对属性列的授权时必须明确指出相对应的属性列名
一次完成了对基本表和属性列这些不同对象的书券
[例 4.5] 把对表SC的insert权限授予给U5用户,并允许他再将此权限授予给其他用户
grant insert
on table SC
to U5
with grant option;
执行例4.5后,U5不仅拥有了对SC表的insert权限,还可以传播此权限
grant insert
on table SC
to U6;
U6不可再将此权限授予传播
♥ 2.权限挥手:REVOKE
♥ 授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回
♥ REVOKE语句的一般格式
revoke <权限>[,<权限>]...
on <对象类型><对象名>[,<对象类型><对象名>]...
from <用户>[,<用户>]...[CASCADE | CASCADE ];
*CASCADE :级联回收 CASCADE:受限回收 *
[例 4.6] 把U4用户修改学生学号的权限收回
revoke update(Sno)
on table Student
from U4;
[例 4.7] 回收所有用户对表SC的查询权限
revoke select
on table SC
from public;
[例 4.8] 把用户U5对SC表的insert权限收回
revoke insert
on table SC
from U5 CASCADE;
小结
♥ 数据库安全性控制的常用方法
◾ 用户身份鉴别
◾ 存取控制
● 自主存取控制
● 强制存取控制
◾ 视图
◾ 审计
◾ 加密
上一篇:4.1 数据库安全性概述
目 录:《数据库系统概论》
下一篇:4.2 数据库安全性控制(2)