第四章--数据库安全性

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

一、数据库安全性概述

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

1.数据库的不安全因素

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

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

(3) 安全环境的脆弱性

2.安全标准简介

  TCSEC和CC两个准则。

二、数据库安全性控制

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

1.用户身份鉴别

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

2.存取控制

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

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

(2) 合法权限检查

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

  第四章--数据库安全性
4.授权:授予和收回

(1) GRANT

GRANT语句的一般格式为:

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

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

grant select on table Student to U1; 

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

grant  select on  Student  to U1; 

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

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

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

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

grant all privileges on Student to U2,U3; grant all privileges on Course to U2,U3; 
第四章--数据库安全性
第四章--数据库安全性

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

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

grant all privileges 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.6]从U5给U6权限

grant insert on sc to u6 with grant option; 

[例 4.7] U6给U7权限

grant insert on SC to U7; 

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

(2) REVOKE

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; 
第四章--数据库安全性

5 数据库角色

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

(1) 角色的创建

先创建一个角色

create role R1; 

第四章--数据库安全性
(2) 给角色授权

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

grant select,update,insert on student to R1; 

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

grant R1 to 王平,张明,赵玲; 
第四章--数据库安全性
--改为 alter role R1 add member 王平; alter role R1 add member 张明; alter role R1 add member 赵玲; 

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

revoke R1 from 王平; 

第四章--数据库安全性
应该改为:

EXEC sp_droprolemember 'R1','U1'; 

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

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

grant delete  on Student to R1; 

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

revoke select on Student from R1; 

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

心得:

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

版权声明:玥玥 发表于 2021-04-19 8:38:06。
转载请注明:第四章--数据库安全性 | 女黑客导航