4.0 《数据库系统概论》数据库安全性详解---(存取控制DAC&MAC视图机制审计Audit....)
Posted tags: 篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.0 《数据库系统概论》数据库安全性详解---(存取控制DAC&MAC视图机制审计Audit....)相关的知识,希望对你有一定的参考价值。 问题的提出: 非法使用数据库的情况: B2以上的系统: 数据库安全性控制的常用方法: 用户标识 口令 用户标识和口令易被窃取 常用的用户身份鉴别方法有以下几种: 这种方式是当前常用的鉴别方法。 这些口令是静态不变的,在实际应用中,用户常常用自己的生日、电话、简单易记的数字等内容作为口令,很容易被破解。而一旦被破解,非法用户就可以冒充该用户使用数据库。 这种方式虽然简单,但容易被攻击,安全性较低。 它是目前较为安全的鉴别方式。 这种方式的口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法。 与静态口令鉴别相比,这种认证方式增加了口令被窃取或破解的难度,安全性相对高一些。 智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。 由于每次从智能卡中读取的数据是静态的,通过内存扫描或网络监听等技术还是可能截取到用户的身份验证信息,存在安全隐患。 因此,实际应用中一般采用 这两类方法的简单定义是: (1)在 (2)在 通过 SQL 的 用户权限组成 定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作 发出GRANT: 按受权限的用户: WITH GRANT OPTION子句: 不允许循环授权: [例1] 把查询Student表权限授给用户U1 举个例子而已,不同数据库请参考相关文档,先打基础。有个印象,知道有这么个东西,其实很多数据库管理系统已经将这些封装好了,简洁漂亮的UI,灵活的操作,基本不会用到语句来写。话不多说,直接上图: [例2] 把对Student表和Course表的全部权限授予用户U2和U3 [例3] 把对表SC的查询权限授予所有用户 [例4] 把查询Student表和修改学生学号的权限授给用户U4 [例5] 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户 执行例5后,U5不仅拥有了对表SC的INSERT权限, [例7] 授予的权限可以由DBA或其他授权者用REVOKE语句收回REVOKE语句的一般格式为: [例8] 把用户U4修改学生学号的权限收回 [例9] 收回所有用户对表SC的查询权限 [例10] 把用户U5对SC表的INSERT权限收回 将用户U5的INSERT权限收回的时候必须级联(CASCADE)收回 系统只收回直接或间接从U5处获得的权限 DBA: 用户:拥有自己建立的对象的全部的操作权限 被授权的用户 所有授予出去的权力在必要时又都可用REVOKE语句收回 DBA在创建用户时实现 数据库角色:被命名的一组与数据库操作相关的权限 角色是权限的集合 , 可以为一组具有相同权限的用户创建一个角色 简化授权的过程 [例11] 通过角色来实现将一组权限授予一个用户。 [例12] 角色的权限修改 [例13] 角色权限的收回 自主存取控制缺点: 强制存取控制(MAC): 在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类。 对于主体和客体,数据库管理系统为它们每个实例(值)指派一个敏感度标记(label)。 绝密(Top Secret) 机密(Secret) 可信(Confidential) 公开(Public) 密级:T>=S>=C>=P 强制存取控制规则: 规则的共同点: 把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护 [例14]建立计算机系学生的视图, 在视图上进一步定义存取权限: 什么是审计: 审计分为: [例15]对修改SC表结构或修改SC表数据的操作进行审计 [例16]取消对SC表的一切审计 在客户/服务器结构中,数据库用户与服务器之间若采用明文方式传输数据,容易被网络恶意用户截获或篡改,存在安全隐患。因此,为保证二者之间的安全数据交换,数据库管理系统提供了传输加密功能。 常用的传输加密方式如 统计数据库安全性规则: 数据库安全机制的设计目标: 以上是关于4.0 《数据库系统概论》数据库安全性详解---(存取控制DAC&MAC视图机制审计Audit....)的主要内容,如果未能解决你的问题,请参考以下文章前言
0.思维导图
1.数据库安全性概述
(1)为什么要研究数据库的安全性?
数据库系统中的数据共享不能是无条件的共享
市场需求分析、市场营销策略、销售计划、
客户档案、医疗档案、银行储蓄数据
(2)安全标准简介
① TCSEC/TDI标准的基本内容
安全策略
责任
保证
文档② TCSEC/TDI安全级别划分
2.数据库安全性控制概述
3.数据库安全性控制
(1)用户标识与鉴别(Identification & Authentication)
是系统提供的最外层安全保护措施
每个用户标识由用户名(user name)和用户标识号(UID)两部分组成。
UID在系统的整个生命周期内是唯–的。系统内部记录着所有合法用户的标识
系统核对口令以鉴别用户身份 (口令可理解为密码)
每个用户预先约定好一个计算过程或者函数① 静态口令鉴别
静态口令一般由用户自己设定,鉴别时只要按要求输入正确的口令,系统将允许用户使用数据库管理系统。
② 动态口令鉴别
常用的方式如短信密码和动态令牌方式,每次鉴别时要求用户使用通过短信或令牌等途径获取的新口令登录数据库管理系统。
③ 生物特征鉴别
指纹、虹膜和掌纹等
。④ 智能卡鉴别
智能卡由用户随身携带,登录数据库管理系统时用户将智能卡插入专用的读卡器进行身份验证。
个人身份识别码(PIN)和智能卡
相结合的方式。这样,即使PIN或智能卡中有一种被窃取,用户身份仍不会被冒充。(2)存取控制
主要通过数据库系统的存取控制机制实现。
① 存取控制机制组成:
定义用户权限
,并将用户权限登记到数据字典中;
用户对某一数据对象的操作权力称为权限。合法权限检查
,每当用户发出存取数据库的操作请求后(请求一般应包括操作类型、操作对象和操作用户等信息),数据库管理系统查找数据字典,根据安全规则进行合法权限检查
,若用户的操作请求超出了定义的权限,系统将拒绝执行此操作。定义用户权限
和合法权限检查机制
一起组成了数据库管理系统的存取控制子系统
。
C2级
的数据库管理系统支持自主存取控制
( Discretionary Access Control, DAC),B1级
的数据库管理系统支持强制存取控制
( Mandatory Access Control, MAC)。
自主存取控制
方法中,用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。因此自主存取控制非常灵活。强制存取控制
方法中,每一个 数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象, 只有具有合法许可证的用户才可以存取。强制存取控制因此相对比较严格。(3)自动存取控制方法—DAC: Discretionary Access Control
GRANT
语句和 REVOKE
语句实现
数据对象
操作类型
定义存取权限称为授权
① 授权与回收—针对用户
1️⃣ 授权—GRANT
GRANT语句的一般格式:
GRANT <权限>[,<权限>]...
[ON <对象类型> <对象名>]
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
语义:将对指定操作对象的指定操作权限授予指定的用户
GRANT SELECT
ON TABLE Student
TO U1;
GRANT ALL PRIVILIGES
ON TABLE Student, Course
TO U2, U3;
GRANT SELECT
ON TABLE SC
TO PUBLIC;
对属性列的授权时必须明确指出相应属性列名
GRANT UPDATE(Sno), SELECT
ON TABLE Student
TO U4;
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;
还可以传播此权限:
[例6]GRANT INSERT ON TABLE SC TO U6
WITH GRANT OPTION;
GRANT INSERT ON TABLE SC TO U7;
但U7不能再传播此权限,因为没有写这条语句WITH GRANT OPTION
。2️⃣ 回收—REVOKE
REVOKE <权限>[,<权限>]...
[ON <对象类型> <对象名>]
FROM <用户>[,<用户>]...;
REVOKE UPDATE(Sno) ON TABLE Student FROM U4;
REVOKE SELECT ON TABLE SC FROM PUBLIC;
REVOKE INSERT ON TABLE SC FROM U5 CASCADE ;
3️⃣ 小结:SQL灵活的授权机制
拥有所有对象的所有权限
不同的权限授予不同的用户
GRANT:授予其他用户
“继续授权”(WITH GRANT OPTION)许可:可以再授予给其它用户4️⃣ 创建数据库模式的权限
CREATE USER语句格式 CREATE USER <username> [WITH][DBA | RESOURCE | CONNECT]
② 数据库角色—针对角色
结合我刚刚上面截得黑色背景图片了解
1️⃣ 角色的创建
CREATE ROLE <角色名>
2️⃣ 给角色授权
GRANT <权限>[,<权限>]… ON <对象类型>对象名 TO <角色>[,<角色>]…
3️⃣ 将一个角色授予其他的角色或用户
GRANT <角色1>[,<角色2>]…TO <角色3>[,<用户1>]… [WITH ADMIN OPTION]
4️⃣ 角色权限的收回
REVOKE <权限>[,<权限>]…ON <对象类型> <对象名>FROM <角色>[,<角色>]…
步骤如下:
CREATE ROLE R1;
GRANT SELECT,UPDATE,INSERT ON TABLE Student TO R1;
GRANT R1 TO 王平,张明,赵玲;
REVOKE R1 FROM 王平;
GRANT DELETE ON TABLE Student TO R1
REVOKE SELECT ON TABLE Student FROM R1;
(4)强制存取控制方法—MAC: Mandatory Access Control
主体
是系统中的活动实体
DBMS所管理的实际用户
代表用户的各进程客体
是系统中的被动实体,是受主体操纵的
文件
基表
索引
视图
敏感度标记(Label)分为若干个级别:
主体的敏感度标记称为许可证级别
(Clearance Level)客体的敏感度标记称为密级
(Classification Level)
大于或等于客体
的密级时,该主体才能读取
相应的客体等于
客体的密级时,该主体才能写
相应的客体主体的许可证级别 <=客体的密级→ 主体能写客体
禁止
了拥有高许可证级别的主体更新
低密级的数据对象(5)DAC与MAC共同构成DBMS的安全机制
原因:较高安全性级别提供的安全保护要包含较低级别的所有保护
4.视图机制
把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明
先建立计算机系学生的视图CS_Student CREATE VIEW CS_Student AS SELECT * FROM Student WHERE Sdept=\'CS\';
GRANT SELECT ON CS_Student TO 王平 ; GRANT ALL PRIVILIGES ON CS_Student TO 张明;
5.审计(Audit) —日志
审计日志(Audit Log)
;
将用户对数据库的所有操作记录在上面
找出非法存取数据的人、时间和内容
用户级审计
针对自己创建的数据库表或视图进行审计 ;
记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作 ;系统级审计
DBA设置 ;
监测成功或失败的登录要求 ;
监测GRANT和REVOKE操作以及其他数据库级权限下的操作;
AUDIT语句:设置审计功能NOAUDIT语句:取消审计功能
AUDIT ALTER,UPDATE ON SC;
NOAUDIT ALTER,UPDATE ON SC;
6.数据加密
防止数据库中数据在存储
和传输
中失密的有效手段存储加密
和传输加密
(1)存储加密
透明和非透明
两种存储加密方式。
透明
存储加密是内核级加密保护
方式,对用户完全透明
非透明
存储加密则是通过多个加密函数
实现的。
透明存储加密
是数据在写到磁盘时对数据进行加密,授权用户读取数据时再对其进行解密。由于数据加密对用户透明,数据库的应用程序不需要做任何修改,只需在创建表语句中说明需加密的字段即可。当对加密数据进行增、删、改、查询操作时,数据库管理系统将自动对数据进行加、解密工作。基于数据库内核的数据存储加密、解密方法性能较好,安全完备性较高。(2)传输加密
链路加密和端到端加密
。① 链路加密
② 端到端加密
7.统计数据库安全性
统计数据库
允许用户查询聚集类型的信息(如合计、平均值等)
不允许查询单个记录信息统计数据库中特殊的安全性问题:
隐蔽的信息通道
能从合法的查询中推导出不合法的信息
试图破坏安全的人所花费的代价 >> 得到的利益