第四章--数据库安全性

这节课主要讲啦数据库安全性概述和数据库安全性控制这两部分。

一、数据库安全性概述

  数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露,更改和破坏。

1.数据库的不安全因素

(1) 非授权用户对数据库的恶意存放和破坏

(2) 数据库中重要或敏感的数据被泄露

(3) 安全环境的脆弱性

2.安全标准简介

  TCSEC和CC两个准则。

二、数据库安全性控制

  用户要求进入计算机时,系统首先根据输入的用户表示进行用户身份鉴定,只有合法的用户才准许进入计算机系统。对已经入系统的用户,数据库管理系统还要进行存取控制,只允许用户执行合法操作。操作系统也会有自己的保护措施。数据最后还可以以密码形式存储到数据库中。

1.用户身份鉴别

(1) 静态口令鉴别 (2) 动态口令鉴别 (3) 生物特征鉴别 (4) 智能卡鉴别

2.存取控制

  存取控制机制主要包括定义用户权限和合法权限检查两部分。

(1) 定义用户权限,并将用户权限登记到数据字典中

(2) 合法权限检查

定义用户权限和合法权限检查机制一起组成啦数据库管理系统的存取控制子系统。

  C2级的数据库管理系统支持自主存取控制,B1级的数据库管理系统支持强制存取控制。

自主存取控制:用户对于不同的数据库对象又不同的存取权限,不同的用户对同一对象也有不同的权限, 而且用户还可将其拥有的存取权限转授给其他用户。

强制存取控制:每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证,对于每一个对象,只有具有合法许可证的用户才可以存取。

3.自主存取控制方法

  用户权限是由两个元素组成的:数据库对象和操作类型。定义存储权限称为授权。在关系数据库中,存取控制的对象不仅有数据本身(基本表中的数据、属性列上的数据),还有数据库模式(包括数据库,基本表,视图和索引的创建)。

第四章--数据库安全性_第1张图片
4.授权:授予和收回

(1) GRANT

GRANT语句的一般格式为:

GRANT <权限>[,<权限>]... 
ON <对象类型> <对象名>[,<对象类型> <对象名>]… 
TO <用户>[,<用户>]... 
[WITH GRANT OPTION];
WITH GRANT OPTION   --可以将自己的权限再给别人

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

grant select
on table Student
to U1;

第四章--数据库安全性_第2张图片
不知何时,我已经有一颗强大的内心啦,面对这种错误我已经麻啦,是的,麻啦!!!

grant 
select on  Student 
to U1;

第四章--数据库安全性_第3张图片
[例4.2] 把对Student表和Course表的全部权限授予用户U2和U3。

grant all privileges
on Student,Course
to U2,U3;

第四章--数据库安全性_第4张图片
原因:grant语句一次只能对一个对象进行赋权,不能同时对两个表进行赋权;但是我们可以同时赋给对象多个不同的权限。

ε=(´ο`*)))唉,那就改吧,改为下面形式:

grant all privileges
on Student
to U2,U3;
grant all privileges
on Course
to U2,U3;

第四章--数据库安全性_第5张图片
第四章--数据库安全性_第6张图片

成功啦,但是有两句提示,还能用。。。

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

grant all privileges
on sc
to public;

第四章--数据库安全性_第7张图片
[例 4.4] 把查询Student表和修改学生学号的权限授给用户U4。

grant update(SNO),select
on student
to u4;

第四章--数据库安全性_第8张图片

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

grant insert
on sc
to u5
with grant option;

第四章--数据库安全性_第9张图片

[例 4.6]从U5给U6权限

grant insert
on sc
to u6
with grant option;

[例 4.7] U6给U7权限

grant insert
on SC
to U7;

操作完上述例题后数据库的用户权限定义:
第四章--数据库安全性_第10张图片

(2) REVOKE

REVOKE的一般格式语句如下:

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

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

revoke update(SNO)
on student
from U4;

第四章--数据库安全性_第11张图片

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

revoke select 
on sc
from public

第四章--数据库安全性_第12张图片

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

revoke insert
on sc
from U5 cascade;

第四章--数据库安全性_第13张图片

5 数据库角色

  数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。因此可以为一组具有相同权限的用户创建一个角色,是一个角色来管理数据库权限以简化授权的过程。
  在SQL中首先用create role语句创建角色,然后用grant语句给角色授权,用revoke语句收回给角色的权限。

(1) 角色的创建

先创建一个角色

create role R1;

第四章--数据库安全性_第14张图片
(2) 给角色授权

然后使用GRANT语句,使角色R1拥有Student表的 SELECT、UPDATE、INSERT权限

grant select,update,insert
on student
to R1;

第四章--数据库安全性_第15张图片
(3)将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限.

grant R1
to 王平,张明,赵玲;

第四章--数据库安全性_第16张图片

--改为
alter role R1
add member 王平;
alter role R1
add member 张明;
alter role R1
add member 赵玲;

第四章--数据库安全性_第17张图片
(4)当然,也可以一次性地通过R1来首回望平的这三个权限。

revoke R1
from 王平;

第四章--数据库安全性_第18张图片
应该改为:

EXEC sp_droprolemember 'R1','U1';

第四章--数据库安全性_第19张图片
enmmm,可以看见王平没啦。

[例4.12] 角色的权限修改(使角色R1在原来的基础上增加Student表的delete权限)

grant delete 
on Student
to R1;

第四章--数据库安全性_第20张图片
[例4.13] 删除R1select权限。

revoke select
on Student
from R1;

第四章--数据库安全性_第21张图片
数据库角色是一组权限的集合。使用角色来管理数据库权限可以简化授权的过程,使自主授权的执行更加灵活、方便。

心得:

  终于又写完啦一个,还有两个要写,ε=(´ο`*)))唉。通过这次实验,感觉到T-SQL和标准SQL在有些地方上还是不一样的。不说啦,赶紧去把后面两个实验报告写一下。
第四章--数据库安全性_第22张图片
第四章--数据库安全性_第23张图片
  不想多说话啦,孩子心态蹦啦,文章待审核,又重新发布啦一次,还是待审核,发布不出去。一头雾水。难道内容涉及啦安全,政治问题啦吗?孩子只是想发表一个文章。
第四章--数据库安全性_第24张图片

你可能感兴趣的:(数据库作业)