2021-04-25

【摘要】 第四章-数据库安全性例题
(两次课的例题)
授权:授予与收回 SQL中使用GRANT和REVOKE语句向用户授予或收回对数据的操作权限。其中 GRANT语句向角色授予权限, REVOKE 语句收回已经世欧预用户的权限。 1)GRANT
GRANT语句的一般格式为: GRANT<权限>[,<权限>]··· ON <对象类型><对象名>[,<对象类型><对象名>]··…

第四章-数据库安全性例题

(两次课的例题)

授权:授予与收回
SQL中使用GRANT和REVOKE语句向用户授予或收回对数据的操作权限。其中 GRANT语句向角色授予权限, REVOKE 语句收回已经世欧预用户的权限。
1)GRANT

GRANT语句的一般格式为:
GRANT<权限>[,<权限>]···
ON <对象类型><对象名>[,<对象类型><对象名>]···
TO <用户>[,<用户>]···
[WITH GRANT OPTION];

如果指定了 WITH GRANT OPTION 子句,则获得权限的用户还可以将这份权限再赋予给其他用户;没有指定此语句的话,则用户只能使用而不能传播。

(注意标准SQL不允许循环授权)

**例题4.1:**把查询 Student 表的权限传给用户 U1.

GRANT SELECT
ON TABlE Student
TO U1;

  
 

执行后会出现错误:
在这里插入图片描述
在T-SQL中,语法规定不需要table。改完之后就可以成功执行。
例题4.2:把对 Student 表和 Course 表全部操作的权限传给用户 U2,U3.

GRANT ALL PRIVILEGES
ON TABlE Student,Course
TO U2,U3;

  
 

执行后出现问题:
在这里插入图片描述
原因是不支持同时对两个表进行授权。改为依次授权就可以。
**例题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;

  
 

这里用到了WITH GRANT OPTION子句,这样U1就可以向其他用户进行授权该权限。

例题 4.6
向其他用户进行授权

GRANT INSERT
ON SC
TO U6
WITH GRANT OPTION;

  
 

例题4.7
U6授权给U7

GRANT INSERT
ON SC
TO U7;

  
 

此时,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;

  
 

级联(CASCADE) 可以在收回U5权限的同时,也收回了其它用户被U5授予的相同权限;如果没有级联语句,系统将拒绝执行该命令。

数据库角色

数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。

  
 

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

--创建角色R3
create role r3;
--授予R3权限
grant select,update,insert
on Student
to r3;
--将r3的权限授予U1U2;
grant r3
to U1,U2;
--收回权限
revoke r3
from U1;

  
 

在T-SQL中执行会出现如下错误:
在这里插入图片描述
说明授权和回收权限时有所不同。
修改为:

EXEC sp_addrolemember 'R1','U1'
ALTER ROLE R1
ADD member U1;

EXEC sp_addrolemember 'R1','U2'
ALTER ROLE R1
ADD member U2;

EXEC sp_addrolemember 'R1','U1'
ALTER ROLE R1
ADD member U1;

  
 

在这里插入图片描述
例题4.12:角色的权限修改。

GRANT DELETE
ON Student
TO R1;

  
 

例题4.13:收回角色的选择权限。

REVOKE SELECT
ON Student
FROM R1;

  
 

(第四章第二次例题练习)

视图机制

	视图机制间接地实现支持存取谓词的用户权限定义。例如,在某大学中假定王平老师只能检索计算机系学生的信息,系主任张明具有检索和增删改计算机系学生信息的所有权限。这就要求系统能支持“存取谓词”的用户权限定义。在不直接支持存取谓词的系统中,可以先建立计算机系学生的视图 CS_Student,然后在视图上进一步定义存取权限。

  
 

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

--创建视图
create view CS_Student
as
select *
from Student
where Sdept='CS';
--王平老师只能检索计算机系学生的信息
grant select
on CS_Student
to 王平;
grant all privileges
on CS_Student
to 张明;
--系主任具有检索和增删计算机系学生信息的所以权限
grant all privileges
on CS_Student
to 张明;

  
 

审计

审计功能能吧用户对数据库的所有操作自动记录下来保存到审计日记中。

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

AUDIT ALTER,UPDATE ON SC;

  
 

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

NOAUDIT ALTER,UPDATE
ON SC;

  
 

文章来源: blog.csdn.net,作者:qq_45993036,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_45993036/article/details/116116653

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享