当前位置:主页 > 查看内容

Sql Server 08(问题状态)

发布时间:2021-07-05 00:00| 位朋友查看

简介:目录 第四章? 数据库系统的安全性 ? ? 4.2.4授权授予与回收 1.授权 GRANT ? ? ? ? 3. Q1:?如果登录名只能对应一个用户 不可多个 WHY?)? Q2:虽然显示命令已经成功执行 但是这里不需要显示 SC吗?? 2.REVOKE收回权限 4.2.5 数据库角色 说明 要点 Q3:T-sql是不支……

目录

第四章? 数据库系统的安全性

?

?

4.2.4授权:授予与回收

1.授权 (GRANT)

? ? ? ? (3). Q1:?如果登录名只能对应一个用户 不可多个 (WHY?)?

Q2:虽然显示命令已经成功执行 但是这里不需要显示 SC吗??

2.REVOKE(收回权限)

4.2.5 数据库角色

说明

要点

Q3:T-sql是不支持的


?

第四章? 数据库系统的安全性

概念不再赘述

?

? ? ? ?存取控制机制组成

定义用户权限

DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则

合法权限检查

用户发出存取数据库操作请求,DBMS查找数据字典,进行合法权限检查

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

常用存取控制方法

? ? ? ? 自主存取控制 DAC
? 用户对不同的数据对象有不同的存取权限
? 不同的用户对同一对象也有不同的权限
? 用户还可将其拥有的存取权限转授给其他用户
?
强制存取控制 MAC
? 每一个数据对象被标以一定的密级
? 每一个用户也被授予某一个级别的许可证
? 对于任意一个对象,具有合法许可证的用户才可以存取

?

通过 SQL GRANT 语句和 REVOKE 语句实现
定义用户存取权限 :定义用户可以在哪些 数据库对象 上进行哪些 操作
?
?

?

?

4.2.4授权:授予与回收

?

1.授权 (GRANT)

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

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

注:(1),写table会提示‘to'附近有语义错误 (T-Sql)

? ? ? ?(2),所授权的用户必须存在

? ? ? ? (3). Q1:?如果登录名只能对应一个用户 不可多个 (WHY?)?

?

? ? ? ?重复的话会提示

grant select 
on  Student
to LY;

?

[例4.2] 把对Student表和Course表的全部权限授予用户U2U3

标准SQL

grant all priviliges
on table Student,Course
to U2,U3;

T-Sql

会提示

去掉 priviliges

只能

grant all 
on Student
to U2,U3;

grant all 
on Course
to U2,U3;

?但是也会提示

但是已经有

?

?

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

Q2:虽然显示命令已经成功执行 但是这里不需要显示 SC吗?

grant select
on  SC
to public;

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

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

grant update(Sno),select
on Student
to U4;

?

?[例4.5] 把对表SCINSERT权限授予U5用户,并允许他再将此权限授予其他用户

grant insert
on SC
to U5
with grant option;

?

执行例4.5后,U5不仅拥有了对表SCINSERT权限,

?还可以传播此权限:

同样,U6还可以将此权限授予U7:?U7不能再传播此权限。

grant insert
on SC
to U6
with grant option;

grant insert
on SC
to U7;

?

2.REVOKE(收回权限)

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

revoke update(Sno)
on Student
from U4;

?

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

revoke select
on SC
from public;

?

[例4.10] 把用户U5SC表的INSERT权限收回

revoke insert
on SC
from U5;

会提示?

?因为:将用户U5INSERT权限收回的时候应该使用CASCADE,否则拒绝执行该语句

?如果U6U7还从其他用户处获得对SC表的INSERT权限,则他们仍具有此权限,系统只收回直接或间接从U5处获得的权限

revoke insert
on SC
from U5 cascade;

4.2.5 数据库角色

说明

  • ? ? ? ?角色(ROLE):

? ? ? ?被命名的一组与数据库操作相关的权限

? ? ? ?优点简化角色是权限的集合。可以为一组具有相同权限的用户创建一个角色。

  • 可以联想 JAVA 的类和对象

? ? ? 学生是一类人(是一个”角色“),而我们是学生,每个个体又是一个对象(”用户“

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

授予这个角色的全部权限同样是WITH ADMIN OPTION)

  • ? ? ?同样有赋予权限(GRANT)和收回权限(REVOKE)

要点

角色的创建

CREATE? ROLE? <角色名>

给角色授权

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

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

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

该语句把角色授予某用户,或授予另一个角色

授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION

指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色

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

授予这个角色的全部权限

角色权限的收回

REVOKE <权限>[,<权限>]…

ON <对象类型> <对象名>

FROM <角色>[,<角色>]…

用户可以回收角色的权限,从而修改角色拥有的权限

REVOKE执行者是

  • 角色的创建者

  • 拥有在这个(些)角色上的ADMIN OPTION

?

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

create role R1;

--使角色R1拥有的Student表的select,updata,insert权限

grant select,update,insert
on Student
to R1;
--将这个角色授予U1,U2,U3。使他们具有角色R1所包含的全部权限
grant R1
to U1;

--可以一次性通过R1来回收U1的这3个权限
revoke R1
from U1;

Q3:T-sql是不支持的

不懂啊不懂

exec sp_addrolemember 'R1','U1'
alter role R1
add member U1;
 
exec sp_addrolemember 'R1','U1'
alter role R1
drop member U1;
 

?

[例4.12] 角色的权限修改

grant delete
on Student
to R1;
--使角色R1在原来的基础上增加了Student表的DELETE 权限

[例4.13] 

revoke select 
on Student
from R1;
--    使R1减少了SELECT权限

?

;原文链接:https://blog.csdn.net/bibiobi/article/details/115662490
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐