【2019-2020春学期】数据库作业11:SQL练习7 - GRANT/ REVOKE / AUDIT

数据库安全性问题的提出:
· 数据库的一大特点是数据共享
· 数据共享必然带来数据库的安全性问题
· 数据库系统中的数据共享不能是无条件的共享

数据库的安全性: 保护数据库以防止不合法使用所造成的数据泄露、更改或破坏 。

系统安全保护措施是否有效是数据库系统主要的性能指标之一。

数据库安全性控制

1、用户标识与鉴别

(1)静态口令鉴别
静态口令一般由用户自己设定,这些口令是静态不变的
(2)动态口令鉴别
口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法
(3)生物特征鉴别
通过生物特征进行认证的技术,生物特征如人脸、指纹等
(4)智能卡鉴别
智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能

2、存取控制

存取控制机制组成
· 定义用户权限
DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则
· 合法权限检查
用户发出存取数据库操作请求,DBMS查找数据字典,进行合法权限检查

用户权限定义合法权检查机制一起组成了DBMS的存取控制子系统

常用存取控制方法
· 自主存取控制(DAC)
· 用户对不同的数据对象有不同的存取权限
· 不同的用户对同一对象也有不同的权限
· 用户还可将其拥有的存取权限转授给其他用户

· 强制存取控制(MAC)
· 每一个数据对象被标以一定的密级
· 每一个用户也被授予某一个级别的许可证
· 对于任意一个对象,具有合法许可证的用户才可以存取

3、自主存取控制方法

通过 SQL 的 GRANT 语句和 REVOKE 语句实现

定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些操作

在这里插入图片描述

4、授权:授予与回收

(1)GRANT
GRANT <权限>[,<权限>]…
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]…
[WITH GRANT OPTION];

WITH GRANT OPTION子句:
指定:可以再授予
没有指定:不能传播

语义:将对指定操作对象的指定操作权限授予指定的用户


(1)主码使用过就不能改
(2)不能循环授权

例4.1 把查询Student表权限授给用户U1

    GRANT   SELECT 
    ON   TABLE   Student 
    TO   U1;

要先建立U1才行
参照 2019-2020春学期】数据库作业4:SQL练习1 - CREATE / DROP / ALTER 建立用户wang的步骤

在这里插入图片描述
出现该问题,要将登录名选择一个没用过的登录名,即新建用户成功。
运行结果
在这里插入图片描述
应去掉TABLE

	GRANT   SELECT 
    ON    Student 
    TO   U1;

成功后在用户U1 右键->属性->安全对象 会有Student
在这里插入图片描述

例4.2 把对Student表和Course表的全部权限授予用户U2和U3

    GRANT ALL PRIVILIGES 
    ON  Student,Course 
    TO U2,U3;

报错:,附近有语法错误错误
将两个表分开授权

	GRANT ALL PRIVILEGES
	ON Student
	TO U2,U3;

	GRANT ALL PRIVILEGES
	ON Course
	TO U2,U3;

ALL 权限已不再推荐使用,并且只保留用于兼容性目的。它并不表示对实体定义了 ALL 权限。

例4.3 把对表SC的查询权限授予所有用户

    GRANT SELECT 
    ON  SC 
	TO PUBLIC;

例4.4 把查询Student表和修改学生学号的权限授给用户U4

	GRANT UPDATE(Sno), SELECT 
	ON Student 
	TO U4;

对属性列的授权时必须明确指出相应属性列名

例4.5 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户

    GRANT INSERT 
    ON SC 
    TO U5
    WITH GRANT OPTION;

执行例4.5后,U5不仅拥有了对表SC的INSERT权限, 还可以传播此权限:
例4.6

	GRANT INSERT 
	ON SC 
	TO U6
	WITH GRANT OPTION;

同样,U6还可以将此权限授予U7:
例4.7

	GRANT INSERT 
	ON SC 
	TO U7;

但U7不能再传播此权限。

在这里插入图片描述
(2)REVOKE

语句的一般格式为:

    REVOKE <权限>[,<权限>]... 
    ON <对象类型> <对象名>[,<对象类型><对象名>]FROM <用户>[,<用户>]...[CASCADE | RESTRICT];

例4.8 把用户U4修改学生学号的权限收回

	REVOKE UPDATE(Sno)
	ON Student 
	FROM U4;

例4.9 收回所有用户对表SC的查询权限

	REVOKE SELECT 
	ON SC 
	FROM PUBLIC;

例4.10 把用户U5对SC表的INSERT权限收回

	REVOKE INSERT 
	ON SC 
	FROM U5 CASCADE ;

· 将用户U5的INSERT权限收回的时候应该使用CASCADE,否则拒绝执行该语句
**·**如果U6或U7还从其他用户处获得对SC表的INSERT权限,则他们仍具有此权限,系统只收回直接或间接从U5处获得的权限
在这里插入图片描述

5、数据库角色

角色(ROLE):
被命名的一组与数据库操作相关的权限
(1)角色是权限的集合。可以为一组具有相同权限的用户创建一个角色。
(2)优点:简化授权的过程

1.角色的创建

	CREATE  ROLE  <角色名> 

2.给角色授权

	GRANT  <权限>[,<权限>]ON <对象类型>对象名  
	TO <角色>[,<角色>]

3.将一个角色授予其他的角色或用户

	GRANT  <角色1>[,<角色2>]TO  <角色3>[,<用户1>][WITH ADMIN OPTION]

(1)该语句把角色授予某用户,或授予另一个角色
(2)授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION
(3)指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色

一个角色的权限:直接授予这个角色的全部权限加上其他角色授予这个角色的全部权限

4.角色权限的收回

	REVOKE <权限>[,<权限>]ON <对象类型> <对象名>
	FROM <角色>[,<角色>]

(1)用户可以回收角色的权限,从而修改角色拥有的权限
(2)REVOKE执行者是:
<1>角色的创建者
<2>拥有在这个(些)角色上的ADMIN OPTION

例4.11 通过角色来实现将一组权限授予一个用户。

步骤如下
(1)首先创建一个角色 R1

	CREATE  ROLE  R1;

在这里插入图片描述
(2)然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限

	GRANT SELECT, UPDATE, INSERT 
	ON Student 
	TO R1;

在这里插入图片描述
(3)将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限

	GRANT  R1 
    TO U1,U2,U3;

错误:“R1”附近有语法错误。

手动为R1添加角色成员
在这里插入图片描述用U1,U2,U3代替王平,张明,赵玲

(4) 可以一次性通过R1来回收王平的这3个权限

	REVOKE  R1 
    FROM U1;

错误:“R1”附近有语法错误。

手动删除
在这里插入图片描述
例4.12 角色的权限修改

    GRANT DELETE 
    ON Student
    TO R1;

使角色R1在原来的基础上增加了Student表的DELETE 权限
在这里插入图片描述
例4.13 使R1减少了SELECT权限

  	REVOKE SELECT 
    ON TABLE Student
    FROM  R1;

6、强制存取控制方法

自主存取控制的缺点
可能存在数据的“无意泄露”

原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记
解决:对系统控制下的所有主客体实施强制存取控制策略

强制存取控制(MAC)
(1)保证更高程度的安全性
(2)用户不能直接感知或进行控制
(3)适用于对数据有严格而固定密级分类的部门
<1> 军事部门
<2> 政府部门

强制存取控制中,数据库管理系统所管理的全部实体被分为主体客体两大类

主体系统中的活动实体( 数据库管理系统所管理的实际用户)
客体系统中的被动实体( 文件、基本表、索引、视图)

敏感度标记(Label)
(1) 对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)
(2) 敏感度标记分成若干级别
· 绝密(Top Secret,TS)
· 机密(Secret,S)
· 可信(Confidential,C)
· 公开(Public,P)
TS>=S>=C>=P
主体的敏感度标记称为许可证级别(Clearance Level)
客体的敏感度标记称为密级(Classification Level)

强制存取控制规则
(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能相应的客体
(2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能相应的客体

简记为:向上读;向下写

视图机制

把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护

间接地实现支持存取谓词的用户权限定义

例4.14 建立计算机系学生的视图,把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明

(1)先建立计算机系学生的视图CS_Student

	CREATE VIEW CS_Student
    AS 
    SELECT  *
    FROM   Student
    WHERE  Sdept='CS';

在这里插入图片描述
(2)在视图上进一步定义存取权限

	 GRANT  SELECT
	 ON  CS_Student  
	 TO 王平;
	 
	 GRANT ALL PRIVILIGES
	 ON  CS_Student  
	 TO  张明; 

在这里插入图片描述

审计(Audit)

审计日志(Audit Log)
将用户对数据库的所有操作记录在上面
审计员利用审计日志
监控数据库中的各种行为,找出非法存取数据的人、时间和内容。

审计功能的可选性
(1)审计很费时间和空间
(2)DBA可以打开或关闭审计功能
(3)审计功能主要用于安全性要求较高的部门

AUDIT语句和NOAUDIT语句
AUDIT语句:设置审计功能
NOAUDIT语句:取消审计功能

例4.15 对修改SC表结构或修改SC表数据的操作进行审计

    AUDIT ALTER,UPDATE  
    ON  SC;

报错:“,”附近有语法错误。
没想清楚为什么,也没找到合适的解释,应该是语句不适用

例4.16 取消对SC表的一切审计

	NOAUDIT  ALTER,UPDATE  
	ON  SC;

错误同上。

心得体会:磨磨蹭蹭做了好几天,拖延症伤不起。主要是看ppt和百度理解,解决一些问题。现在已经基本理解了,写博客的时候,把ppt的内容又过了一遍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值