数据库授权与收回 4.13数据库课程

学习完SQL后,开始学习数据库安全性知识,如何对数据进行保护

1、数据库安全性控制

1.1 用户身份鉴别

每个用户在数据库中都有一个用户标识,需要在用户使用数据前鉴别用户是否为持有该标识的真实用户

  1. 静态口令鉴别(密码)
  2. 动态口令鉴别(验证码)
  3. 生物特征鉴别(扫脸,眨眨眼,张张嘴)
  4. 智能卡鉴别(通行证,磁卡存储信息)

1.2 存取控制

数据库需要保证未授权相关权限的用户无法使用数据库相关功能,这主要靠存取控制实现

包括定义用户权限、合法权限检查

1.3 自主存取控制方法

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

1.4 强制存取控制方法

每一个数据库对象被标记不同的密级,不同的用户被授予不同的通行证,决定了他们的权限

2、授权:授权与收回

2.1 权限的授予

权限包括select、update、insert、delete、references、all privileges

grant select
on Student
to wbc; --赋予wbc用户查询Student表的权限
--on后面不需显示指定数据类型,wbc用户必须存在
-- T-SQL不支持同时授予用户多个对象的权限,且不需要privileges
grant all
on Student
to wbc;

grant all
on Course
to wbc;

grant select
on SC
to public; --查询权限授予所有用户

在这里插入图片描述
可见T-SQL有自己的想法

也可仅仅把使用基本表具体某一列的权限授予用户

grant update(Sno),select
on Student
to root_wbc; --授予该用户修改学号属性和查询的权限

授予权限语句后添加 with grant option ,该用户可将权限转授

grant insert
on Student
to wbc
with grant option; --该用户可将插入权限授予给别的用户

2.2 权限的收回

revoke select
on Student
from wbc; --可执行

/*revoke insert
on Student
from wbc; --无法成功执行,因为该权限可转授,需显式指定cascade,将转授的一并收回*/

revoke insert
on Student
from wbc cascade; --可执行

T-SQL在这居然能支持cascade了

3、数据库角色

角色是一组权限的集合,可以将角色的权限授予用户,类似继承,用户是子类,角色是基类

3.1 创建角色

create role a_student; --创建一个角色 

3.2 给角色授权

与直接授予用户权限一样

grant select,insert
on SC
to a_student; --授予盖角色权限

角色的权限是用来给用户的

/*grant a_student
to wbc; --T-SQL不支持*/

看了看帮助文档,似乎是出于安全性考虑,默认的角色不具备把自身权限授予用户的权限,因为不确保用户是否是安全的,需要手动设置该用户安全


exec sp_addrolemember 'a_student','wbc' --a_student获取授予wbc自身权限的权限,wbc是安全的用户
alter role a_student
add member wbc;

3.3 角色权限的收回

revoke insert
on SC
from a_student; --回收角色的某个权限

revoke all
on SC
from a_student; --回收角色的所有权限
--如果授予角色权限时使用了with grant option,则需cascade

感觉T-SQL和标准SQL有好多不同的地方,需要多注意区分

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值