- 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 StudentTO U1;
【例2】把对Student表和Course表的全副操作权限授予用户U2和U3
GRANT ALL PRIVILEGESON TABLE Student,CourseTO U2,U3;
【例3】把对表SC的查问权限授予所有用户
GRANT SELECTON TABLE SCTO PUBLIC;
【例4】把查问Student表和批改学生学号的权限授给用户U4
GRANT UPDATE(Sno),SELECTON TABLE StudentTO U4;
【例5】把对表SC的INSERT权限授予U5用户,并容许将此权限再授予其余用户
GRANT INSERTON TABLE SCTO U5WITH GRANT OPTION;
【例6】U5能够把对表SC的INSERT权限授予其余用户,例如U6
GRANT INSERTON TABLE SCTO U6WITH GRANT OPTION;
②:REVOKE
语法:格局如下,留神
- 如果退出
CASCADE
,示意发出某用户权限的同时也会把该用户所有受权过用户的权限一并发出
演示:
【例7】把用户U4批改学生学号的权限发出
REVOKE UPDATE(Sno)ON TABLE StudentFROM U4;
【例8】发出所有用户对表SC的查问权限
REVOKE SELECTON TABLE SCFROM PUBLIC;
【例9】把用户U5对SC表的INSERT权限发出,同时发出所有U5受权过的用户的该权限
REVOKE INSERTON TABLE SCFROM U5 CASCADE;
③:创立数据库模式的权限
后面所讲到都是对数据的操作权限,而对创立数据库模式类的数据库对象的受权则由数据库管理员在创立用户时实现
语法:应用CREATE USER
语句创立用户,其格局如下。留神
- 只有零碎的超级用户才有权创立一个新的数据库用户
- 新创建的数据库用户有三种权限:
CONNECT
、RESCOURCE
、DBA
这三种权限所能做的操作如下表
C:数据库角色
数据库角色:是被命名的一组与数据库操作相干的权限,也即角色是权限的汇合。在创立用户时如果为其赋予某种角色,那么用户就主动领有了该数据库角色所领有的权限,从而省去了繁琐的受权语句
①:创立角色
语法
②:给角色受权
语法
③:将一个角色授予其余角色或用户
语法
④:角色权限的发出
语法
综合演示:
【例1】通过角色来实现将一组权限授予一个用户
//首先须要创立一个角色R1CREATE ROLE R1;//接着应用GRANT语句,使角色R1领有对Student表的权限GRANT SELECT ,UPDATE,INSERTON TABLE StudentTO R1;//而后将这个角色授予用户U1、U2、U3,使他们具备角色R1所领有的全副权限GRANT R1TO U1,U2,U3//最初,也能够通过R1来发出用户的权限REVOKE R1FROM 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_StudentASSELECT *FROM StudentWHERE Sdept='CS';GRANT SELECTON CS_StudentTO 王平;GRANT ALL PRIVILEGESON CS_StudentTO 张明;
四:审计
(1)基本概念
审计:审计性能把用户对数据库的所有操作自动记录下来放入审计日志(audit log)中。审计员能够利用审计日志监控数据库中的各种行为,重现导致数据库现有情况的一系列事件,找出非法存取数据的人、工夫和内容等。还能够通过对审计日志剖析,对潜在的威逼提前采取措施加以防备
- 审计很费时间和空间,所以DBMS往往将审计性能设置为可选
- 可审计的事件有服务器事件、零碎权限、语句事件及模式对象事件,还包含用户甄别、DAC和MAC
- 审计分为用户级审计和零碎级审计
- 审计既能记录胜利也即记录失败
(2)AUDIT语句和NOAUDIT语句
AUDIT
语句和NOAUDIT
语句别离用来设计审计性能和勾销审计性能
演示:
AUDIT ALTER,UPDATE //对SC表构造或批改SC表数据的操作进行审计ON SCNOAUDIT ALTER,UPDATEON SC
五:数据加密
(1)基本概念
数据加密:将明文转换密文,从而无奈获知数据的内容,是避免数据库中的数据在存储和传输中失密的无效伎俩
(2)分类
A:存储加密
非通明存储加密: 通过多个加密函数实现的
通明存储加密: 是内核级加密保护方式,对用户齐全通明
- 是数据在写到磁盘时对数据进行加密,受权用户读取数据时再对其进行解密。因为数据加密对用户通明,数据库的应用程序不须要做任何批改,只需在创立表语句中阐明需加密的字段即可。当对加密数据进行增、删、改、查问操作时,数据库管理系统将主动对数据进行加、解密工作。基于数据库内核的数据存储加密、解密办法性能较好,平安齐备性较高
B:传输加密
①:链路加密
对传输数据在链路层进行加密,它的传输信息由报头和报文两局部组成,前者是路由抉择信息,而后者是传送的数据信息。这种形式对报文和报头均加密
②:端到端加密
对传输数据在发送端加密,接收端解密。它只加密报文,不加密报头。与链路加密相比,它只在发送端和接收端须要明码设施,而两头节点不须要明码设施,因而它所需明码设备数量绝对较少。但这种形式不加密报头,从而容易被非法监听者发现并从中获取敏感信息