数据库的安全性问题

数据库安全性
数据库安全性控制
视图机制
审计
数据加密
统计数据库安全性
一.授权
1.把查询Student表权限授给用户U1
GRANT SELECT
ON TABLE Student
TO U1;

2.把对Student表和Course表的全部权限授予用户U2和U3
GRANT ALL PRIVILEGES
ON TABLE Student,Course
TO U2,U3;

3.把对表SC的查询权限授予所有用户
GRANT SELECT
ON TABLE SC
TO PUBLIC;

4.把查询Student表和修改学生学号的权限授给用户U4
GRANT UPDATE(Sno),SELECT
ON TABLE Student
TO U4;
对属性列的授权时必须明确指出相应属性列名

5.把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
GRANTE INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;

6.执行例5后,U5不仅拥有了对表SC的INSERT权限,还可以传播此权限
GRANT INSERT ON TABLE SC TO U6
WITH GRANT OPTION;

7.同样,U6还可以将此权限授予U7
GRANT INSERT ON TABLE SC TO U7;
但U7不能再传播此权限.

二.回收
9.把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;

收回所有用户对表SC的查询权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;

10.把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE;

将用户U5的INSERT权限收回的时候必须级联(CASCADE)收回

->U5->U6->U7

系统只收回直接或间接从U5处获得的权限
<-U5<-U6<-U7

三.创建数据库模式的权限
CREATE USER
[with] [DBA | RESOURCE | CONNECT]

数据库角色
一.角色的创建
CREATE ROLE <角色名>

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

三.将一个角色授予其他的角色或用户
GRANT <角色1> [, <角色2> ] …
TO <角色3> [, <用户1>] …
[WITH ADMIN OPTION]
四.角色授权的收回
REVOKE <权限> [, <权限> ] …
ON <对象类型> <对象名>
FROM <角色> [, <角色> ] …

11.通过角色来实现将一组权限授予一个用户.
步骤如下:
1.首先创建一个脚色 R1
CREATE ROLE R1;

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

GRANT SELECT,UPDATE,INSERT
ON TABLE Student
TO R1;

3.将这个角色授予王平,张明,赵玲.使他们具有角色R1所包含的全部权限
GRANT R1
TO 王平,赵明,赵玲;

4.可以一次性通过R1来回收王平的这3个权限
REVOKE R1
FROM 王平;

12 角色的权限修改
GRANT DELETE
ON TABLE Student
TO R1;

REVOKE SELECT
ON TABLE Student
FROM R1;

主体是系统中的活动实体
DBMS所管理的实际用户
代表用户的各进程
客体是系统中的被动实体,是受主体操纵的
文件
基表
索引
视图
敏感度标记(Label)
绝密
机密
可信
公开
主体的敏感度标记称为许可证级别
客体的敏感度标记称为密级

强制存取控制规则
(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
(2)仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体

修正规则
主体的许可证级别 <=客体的密级 主体能写客体

规则的共同点
禁止了拥有高许可证级别的主体更新低密级的数据对象

DAC与MAC共同构成DBMS的安全机制

实现MAC时要首先实现DAC
原因:较高安全性级别提供的安全保护要包含较低级别的所有保护

4.3视图机制
把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护
主要功能是提供数据独立性,无法完全满足要求
间接实现了支持存取谓词的用户权限定义

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

先建立计算机系学生的视图CS_Student
CREATE VIEW CS_Student
AS
SELECT *
FROM Student
WHERE Sdept=‘CS’;

在视图上进一步定义存取权限
GRANT SELECT
ON CS_Student
TO 王平;

GRANT ALL PRIVILEGES
ON CS_Student
TO 张明;

4.4 审计
什么是审计
审计日志(Audit Log)
将用户对数据库的所有操纵记录在上面
DBA利用审计日志
找出非法存取数据的人,时间和内容
C2以上安全级别的DBMS必须具有

审计分为
用户级审计
针对自己创建的数据库表或视图进行审计
记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作
系统级审计
DBA设置
监测成功或失败的登录要求
监测GRANT和REVOKE操作以及其他数据库级权限下的操作

AUDIT语句:设置审计功能
NOAUDIT语句:取消审计功能

15.对修改SC表结构或修改SC表数据的操作进行审计
AUDIT ALTER,UPDATE
ON SC;

16.取消对SC表的一切审计
NOAUDIT ALTER,UPDATE
ON SC;

4.5 数据加密
数据加密
防止数据库中数据在存储和传输中失密的有效手段
加密的基本思想:根据一定的算法将原始数据变换为不可直接识别的格式

加密方法
替代方法:使用密钥将明文中的每一个字符转换为密文中的一个字符
置换方法:将明文的字符按不同的顺序重新排列
混合方法:数据加密标标准

DBMS中的数据加密
统计数据库
允许用户查询聚集类型的信息(如合计,平均值等)
不允许查询单个记录信息
统计数据库中特殊的安全性问题
隐蔽的信息通道
能从合法的查询中推导出不合法的信息

规则1:任何查询至少要设计N(N足够大)各以上的记录

规则2:任意两个查询的相交数据项不能超过M个

规则3:任一用户的查询次数不能超过1+(N-2)/M

数据库安全机制的设计目标:
试图破坏安全的人所花费的代价 >> 得到的利益

实现数据库系统安全性的技术和方法
存取控制技术
视图技术
审计技术
自主存取控制功能
通过SQL的GRANT语句和REVOKE语句实现
角色
使用角色来管理数据库权限可以简化授权过程
CREATE ROLE语句创建角色
GRANT语句给角色授权

上一篇:二、MySQL体系结构与管理


下一篇:mysql8.0 grant 创建账号及权限记录