共计 5185 个字符,预计需要花费 13 分钟才能阅读完成。
- pdf 下载:明码 7281
- 专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解
数据库相干的安全性措施次要有
- 用户身份甄别
- 多层存取控制
- 审计
- 视图
- 数据加密
且它们是层层设置的,就像防火墙一样
下图是 数据库安全爱护的一个存取控制流程
- 首先,数据库管理系统对提出 SQL 拜访申请的数据库 用户进行身份甄别,避免不可信用户应用零碎
- 而后,在 SQL 解决层进行 自主存取控制和强制存取控制,进一步还能够进行推理管制
- 为监控歹意拜访,可依据具体平安需要配置 审计规定,对用户拜访行为和零碎要害操作进行审计
- 通过设置简略入侵检测规定,对 异样用户行为 进行检测和解决
- 在数据存储层,数据库管理系统不仅寄存用户数据,还存储与平安无关的标记和信息 (称为 平安数据),提供存储加密性能等
一:用户身份甄别
用户身份甄别:每个用户在零碎中都有一个用户标识。每个用户标识由用户名(user name)和用户标识号(UID)组成。零碎外部记录着所有非法用户的标识,每次用户进入零碎时,零碎会核查用户的身份,只有通过鉴定后才提供相干数据库管理系统的权限
(1)动态口令甄别
动态口令甄别 :个别由 用户本人设定 ,设定后就 动态不变。甄别时只有输出正确的口令即可。个别用户习惯以本人的生日、电话等作为口令,极易被破解
- 该形式 简略,然而安全性极低
(2)动静口令甄别
动静口令甄别 :该形式的口令是 动态变化的 ,每次甄别时均需应用动静产生的 新口令 登录零碎,例如常见的短信验证码
- 该形式相较于动态口令,安全性较高
(3)生物特色甄别
生物特色甄别 :生物特色是指 生物体惟一具备的,可测量、辨认和验证的稳固生物特色,例如指纹、虹膜等等
- 该种形式相较于传统的口令,安全性有了质的晋升
(4)智能卡甄别
智能卡甄别 :智能卡是一种 不可复制 的硬件,内置集成电路的芯片,具备硬件加密的性能。智能卡由用户随身携带,登录数据库管理系统时用户将智能卡 插入 专用的读卡器进行身份验证
- 该形式可能会被一些监听技术截取到信息,所以存在安全隐患
- 理论利用中采纳 PIN(个人身份识别码)和智能卡联合 的形式进步安全性
二:存取控制
存取控制:存取控制的目标就是确保只受权给有资格的用户拜访数据库的权限,其余人等无奈靠近数据。次要包含以下两个局部
- 定义用户权限 :用户对某一数据对象的操作势力称为 权限 。某个用户应该具备何种权限是个 治理问题和政策问题 ,而不是技术问题。数据库管理系统的性能是 保障这些决定的执行 。为此,数据库管理系统必须提供适当的语言来 定义用户权限 ,这些定义通过编译后存储在数据字典中,被称做 平安规定或受权规定
- 非法权限查看 :每当用户收回存取数据库的操作申请后(申请个别应包含操作类型、操作对象和操作用户等信息),数据库管理系统查找数据字典, 依据平安规定进行非法权限查看 ,若用户的操作申请超出了定义的权限,零碎将 拒绝执行此操作
而存取控制办法又分为以下两类
- 自主存取控制(DAC):用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其领有的存取权限转授给其余用户,因而自主存取控制非常灵活
- 强制存取控制(MAC):每一个数据库对象被标以肯定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具备非法许可证的用户才能够存取,因而强制存取控制因而绝对比拟严格
(1)自主存取控制 DAC
A:基本概念
自主存取控制 DAC:SQL 中自主存取控制次要是通过 GRANT
语句和 REVOKE
语句来实现的。是指用户能够“自主”地决定将数据的存取权限授予何人、决定是否也将“受权”的权限授予他人
受权:用户权限由数据库对象和操作类型这两个因素组成。定义一个用户的存取权限就是定义这个用户能够在哪些数据对象上进行哪些类型的操作。所谓受权就是指定义存取权限
- 在 非关系零碎 中,用户只能对 数据 进行操作,存取控制的数据库对象也仅限于数据自身
- 在 关系数据库系统 中,存取控制的对象不仅有数据自身 (根本表中的数据、属性列上的数据),还有 数据库模式(包含数据库、根本表、视图和索引的创立等)
下表就是 关系数据库中的次要存取权限
B:GRANT 与 REVOKE
SQL 中应用 GRANT
和REVOKE
语句向用户 授予或发出 对数据的操作权限
①:GRANT
语法:格局如下,其含意为授予指定用户对指定操作对象的指定操作权限。留神
- 如果指定了
WITH GRANT OPTION
子句,则 取得某种权限的用户还能够把这种权限再受权给其余用户 。但不容许 循环受权 - 如果未指定
WITH GRANT OPTION
子句,则 取得某种权限的用户只能应用但无奈流传
- 如果要受权所有权限,能够写
ALL PRIVILEGES
- 如果所有用户承受权限,能够写
PUBLIC
以下对象能够收回GRANT
- DBA
- 数据库对象的创建者
- 曾经领有该权限的用户
演示:
【例 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 用户,并容许将此权限再授予其余用户
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;
【例 6】U5 能够把对表 SC 的 INSERT 权限授予其余用户,例如 U6
GRANT INSERT
ON TABLE SC
TO U6
WITH GRANT OPTION;
②:REVOKE
语法:格局如下,留神
- 如果退出
CASCADE
,示意 发出某用户权限的同时也会把该用户所有受权过用户的权限一并发出
演示:
【例 7】把用户 U4 批改学生学号的权限发出
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
【例 8】发出所有用户对表 SC 的查问权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
【例 9】把用户 U5 对 SC 表的 INSERT 权限发出,同时发出所有 U5 受权过的用户的该权限
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE;
③:创立数据库模式的权限
后面所讲到都是对 数据 的操作权限,而对 创立数据库模式类的数据库对象的受权则由数据库管理员在创立用户时实现
语法:应用 CREATE USER
语句创立用户,其格局如下。留神
- 只有零碎的 超级用户 才有权创立一个新的数据库用户
- 新创建的数据库用户有三种权限:
CONNECT
、RESCOURCE
、DBA
这三种权限所能做的操作如下表
C:数据库角色
数据库角色:是被命名的一组与数据库操作相干的权限,也即角色是权限的汇合。在创立用户时如果为其赋予某种角色,那么用户就主动领有了该数据库角色所领有的权限,从而省去了繁琐的受权语句
①:创立角色
语法
②:给角色受权
语法
③:将一个角色授予其余角色或用户
语法
④:角色权限的发出
语法
综合演示:
【例 1】通过角色来实现将一组权限授予一个用户
// 首先须要创立一个角色 R1
CREATE ROLE R1;
// 接着应用 GRANT 语句,使角色 R1 领有对 Student 表的权限
GRANT SELECT ,UPDATE,INSERT
ON TABLE Student
TO R1;
// 而后将这个角色授予用户 U1、U2、U3,使他们具备角色 R1 所领有的全副权限
GRANT R1
TO U1,U2,U3
// 最初,也能够通过 R1 来发出用户的权限
REVOKE R1
FROM U1;
(2)强制存取控制 MAC
A:自主存取控制的隐患
自主存取控制 (DAC) 可能通过受权机制无效地管制对敏感数据的存取。然而因为用户对数据的存取权限是 “自主” 的,用户能够自在地决定将数据的存取权限授予何人,以及决定是否也将“受权”的权限授予他人。在这种受权机制下,仍可能存在数据的“无心泄露 ”。比方,甲将本人权限范畴内的某些数据存取权限受权给乙,甲的用意是仅容许乙自己操纵这些数据。但甲的这种安全性要求并不能失去保障,因为乙一旦取得了对数据的权限,就能够将数据备份,取得本身权限内的正本,并在不征得甲批准的前提下流传正本。造成这一问题的根本原因就在于, 这种机制仅仅通过对数据的存取权限来进行安全控制,而数据自身并无安全性标记
要解决这个问题,就须要对系统控制下的所有主客体施行 强制存取控制策略
B:基本概念
强制存取控制:为保障更高水平的平安,对于任意对象,只有领有非法许可证的用户才能够存取,它不是用户能间接感知和进行管制的。强制存取控制是对数据自身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有合乎密级标记要求的用户才能够操纵数据
C:主体和客体及敏感度标记
在强制存取控制中,数据库管理系统所治理的全副实体被分为 主体和客体 两大类
主体:是零碎中流动实体,即包含数据库管理系统所治理的理论用户,也包含代表各用户的各过程
客体:是零碎中的被动实体,是受主体操纵的,例如
- 文件
- 根本表
- 索引
- 视图
对于主体和客体,数据库管理系统为它们每个实例 (值) 指派一个 敏感度标记(label),分为若干个级别
- 绝密(TS)
- 秘密(S)
- 可信(C)
- 公开(P)
其中
$$TS\geq S \geq C \geq P$$
D:强制存取规定
主体的敏感度标记称之为许可证级别;客体的敏感度标记称之为密级。强制存取控制机制就是通过比照许可证级别和密级,顺次确定主体是否可能存取客体
当某一用户 (或某一主体) 以标记 label
注册入零碎时,零碎要求他对任何客体的存取必须遵循如下规定:
- 仅当主体的许可证级别大于或等于客体的密级时,该主体能力读取相应的客体
- 仅当主体的许可证级别小于或等于客体的密级时,该主体能力写相应的客体
(3)DAC 与 MAC 独特形成 DBMS 的平安机制
零碎首先进行 自主存取控制查看 ,对通过自主存取控制查看的容许存取的数据库对象再由零碎主动进行 强制存取控制查看,只有通过强制存取控制查看的数据库对象方可存取
三:视图
视图机制:通过视图机制把要窃密的数据对无权存取的用户暗藏起来,从而主动对数据提供肯定水平的平安爱护
演示: 在某大学中,假设王平老师只能检索计算机系学生的信息,系主任张明具备检索和增删改计算机系学生信息的所有权限
CREATE VIEW CS_Student
AS
SELECT *
FROM Student
WHERE Sdept='CS';
GRANT SELECT
ON CS_Student
TO 王平;
GRANT ALL PRIVILEGES
ON CS_Student
TO 张明;
四:审计
(1)基本概念
审计:审计性能把用户对数据库的所有操作自动记录下来放入审计日志 (audit log) 中。审计员能够利用审计日志监控数据库中的各种行为,重现导致数据库现有情况的一系列事件,找出非法存取数据的人、工夫和内容等。还能够通过对审计日志剖析,对潜在的威逼提前采取措施加以防备
- 审计 很费时间和空间 ,所以 DBMS 往往将审计性能设置为 可选
- 可审计的事件有 服务器事件、零碎权限、语句事件及模式对象事件 ,还包含 用户甄别、DAC 和 MAC
- 审计分为 用户级审计 和零碎级审计
- 审计既能记录胜利也即记录失败
(2)AUDIT 语句和 NOAUDIT 语句
AUDIT
语句和 NOAUDIT
语句别离用来设计审计性能和勾销审计性能
演示:
AUDIT ALTER,UPDATE // 对 SC 表构造或批改 SC 表数据的操作进行审计
ON SC
NOAUDIT ALTER,UPDATE
ON SC
五:数据加密
(1)基本概念
数据加密:将明文转换密文,从而无奈获知数据的内容,是避免数据库中的数据在存储和传输中失密的无效伎俩
(2)分类
A:存储加密
非通明存储加密: 通过多个 加密函数 实现的
通明存储加密: 是 内核级加密保护方式 ,对 用户 齐全通明
- 是数据在写到磁盘时对数据进行加密,受权用户读取数据时再对其进行解密。因为数据加密对用户通明,数据库的应用程序不须要做任何批改,只需在创立表语句中阐明需加密的字段即可。当对加密数据进行增、删、改、查问操作时,数据库管理系统将主动对数据进行加、解密工作。基于数据库内核的数据存储加密、解密办法性能较好,平安齐备性较高
B:传输加密
①:链路加密
对传输数据在 链路层 进行加密,它的传输信息由报头和报文两局部组成,前者是路由抉择信息,而后者是传送的数据信息。这种形式对报文和报头均加密
②:端到端加密
对传输数据在 发送端加密,接收端解密 。它 只加密报文,不加密报头 。与链路加密相比,它只在发送端和接收端须要明码设施,而两头节点不须要明码设施,因而它所需明码设 备数量绝对较少 。但这种形式不加密报头,从而 容易被非法监听者发现并从中获取敏感信息