目录
4.1 数据库安全性概述
4.1.1 数据库的不安全因素
4.1.2 安全标准简介
4.2 数据库安全性控制
4.2.1 用户身份鉴别
4.2.2 存取控制
4.2.3 自主存取控制方法--通过 SQL 的GRANT 语句和REVOKE 语句实现
4.2.5 数据库角色ROLE
4.2.6强制存取控制方法
4.3 视图机制
4.4 审计
4.5 数据加密
4.6 其他安全性保护
(8条消息) 【吐血整理】数据库的安全性_Henry_626的博客-CSDN博客
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
1)非授权用户对数据库的恶意存取和破坏
猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据。
2)数据库中重要或敏感的数据被泄露
黑客和敌对分子千方百计盗窃数据库中的重要数据,一些机密信息被暴露。
3)安全环境的脆弱性
数据库安全性与计算机系统安全性紧密联系(计算机硬件、操作系统、网络等安全性)
1991年美国国家计算机安全中心颁布了《可信计算机系统评估准则关于可信数据库系统的解释》TCSEC/TDI,从四个方面来描述安全性级别划分的指标,即安全策略、责任、保证和文档。评估等级分为:D\C1\C2\B1\B2\B3\A1,等级越高,安全性越可靠。
CC(Common Criteria):2008年,CC V3.1 ISO/IEC15408-2008
CC评估等级分为EAL1、EAL2、EAL3、EAL4、EAL5、EAL6和EAL7共七个等级,等级越高,表示通过认证需要满足的安全保证要求越多,系统的安全特性越可靠。
国际标准化组织(International Organization for Standardization,ISO)
非法使用数据库的情况:
① 编写合法程序绕过DBMS及其授权机制
② 直接(或编写应用程序)执行非授权操作
计算机系统中,安全措施是一级一级层层设置的:
① 用户标识鉴定用户身份,合法用户准许进入系统
② 数据库管理系统还要进行存取控制,只允许用户执行合法操作
③ 操作系统有自己的保护措施
④ 数据以密文形式存储到数据库中
(ps:数据以密文形式存储在数据库中,即使前三层被攻破,最后看到的是密文的话,是比较有安全性的)
数据库管理系统安全性控制模型:
数据库安全性控制的常用方法:
用户标识和鉴定、存取控制、视图、审计、数据加密。
① 静态口令鉴别
静态口令一般由用户自己设定,这些口令是静态不变的(例如自己设置的各种登陆密码即静态口令)
② 动态口令鉴别
口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法(例如有的地方每次登陆需要手机短信验证,每次发的验证码就是动态口令~)
③ 生物特征鉴别
通过生物特征进行认证的技术,生物特征如人脸、指纹等(现在这个技术比较普遍啦,很多智能手机上都有指纹识别和人脸识别)
④ 智能卡鉴别
智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能(例如:IC银行卡,IC卡是以芯片作为介质的银行卡,与磁条卡相比,芯片卡安全性高,卡内敏感数据难以被复制)
存取控制机制主要包括定义用户权限和合法权限检查两部分。
用户权限定义和合法权检查机制一起组成了DBMS的存取控制子系统
— — — — — — — — — — — — — — — — — — — — — — — —
常用存取控制方法:
用户对不同的数据对象有不同的存取权限;
不同的用户对同一对象也有不同的权限;
用户还可将其拥有的存取权限转授给其他用户。
每一个数据对象被标以一定的密级;
每一个用户也被授予某一个级别的许可证;
对于任意一个对象,具有合法许可证的用户才可以存取。
GRANT
语句和REVOKE
语句实现用户权限主要这两个要素—数据库对象和操作类型。
定义存取权限称为授权authorization。
4.2.4 授权:授予GRANT与收回REVOKE
1、GRANT
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
WITH GRANT OPTION表示指定:可以再授予,但不可以循环授权。
2、REVOKE
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
!!Cascade会直接收回所有相关权限,restrict会检查有没有相关权限,有的话拒绝执行此操作。
3、创建数据库模式的权限
上面是对数据的操作权限,对创建数据库模式一类的数据库对象的授权则由数据管理员在创建用户时实现。
CREATE USER [WITH] [DBA | RESOURCE | CONNECT];
是被命名的一组与数据库操作相关的权限。ROLE角色是权限的集合。
!!可以为一组具有相同权限的用户创建一个角色(所以在修改权限等的操作时对角色ROLE修改即可,不用再去麻烦地对每一个用户修改)。它的优点是:简化授权的过程。
1、角色的创建
CREATE ROLE <角色名>;
CREATE USER [WITH] [DBA | RESOURCE | CONNECT];
2、给角色授权—和给用户授权差不多
GRANT <权限>[,<权限>]…
ON <对象类型>对象名
TO <角色>[,<角色>]…
3、将一个角色授予其他角色或用户
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
指定了WITH ADMIN OPTION
则获得某种权限的角色或用户还可以把这种权限授予其他角色(能继续传播该权限),对操作的授权那里是WITH GRANT OPTION。
4、角色权限的收回
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…
自主存取控制缺点: 可能存在数据的“无意泄露”,原因是这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记。
强制存取控制(MAC):
在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类
· 主体是系统中的活动实体,即:数据库管理系统所管理的实际用户
· 客体是系统中的被动实体,即:文件、基本表、索引、视图
敏感度标记(Label): 对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)
敏感度标记分成若干级别:
TS>=S>=C>=P
主体的敏感度标记称为许可证级别(Clearance Level)
客体的敏感度标记称为密级(Classification Level)
强制存取控制规则:
(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读相应的客体
(2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
(??规则2为什么:我是S,写了一个东西并标记为TS,那我也看不了了,如果违反2,那会造成数据由高向低流。就比如,某个TS(绝密)密级的主体把一个密级为TS的数据恶意地降为P(公开),然后把它写回。这样原来是TS密级的数据大家都可以读到了,这样就导致了TS密级数据的泄露;另一方面,如果许可证级别大于客体的密级能写的话也很可怕,因为上级(领导)能在大家不知道的情况下随意修改,这,,,肯定是不行的)
简单记作:向下读,向上写!!。
这一点解释了为什么要有视图:把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护。视图机制间接地实现支持存取谓词的用户权限定义。
!!就是,基本表一般都会建的比较基础,然后通过视图进行进一步规划,再非给各种用户,而不是直接把基本表分给用户。这样可以更好地保证数据库安全性。
审计audit功能是C2级别以上的数据库系统一定要有的,把用户对数据库的所有操作自动记录下来放入审计日志。(因为不管多安全,总有人会设法打破,所以发明了审计)审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找到奇怪的人。相当于一种事后审查的安全机制。
1、审计事件
可以运用审计功能的几个维度,总不能都很在一起。
2、审计功能
各种功能—不重要,再说。
审计功能的可选性:
· 审计很费时间和空间
· DBA可以打开或关闭审计功能
· 审计功能主要用于安全性要求较高的部门
3、audit语句和noaudit语句
AUDIT
语句:设置审计功能NOAUDIT
语句:取消审计功能
数据加密: 防止数据库中数据在存储和传输中失密的有效手段
加密的基本思想: 根据一定的算法将原始数据—明文(Plain text)变换为不可直接识别的格式—密文(Cipher text)
加密方法: ①存储加密;②传输加密
存储加密:
1)透明存储加密
①内核级加密保护方式,对用户完全透明
②将数据在写到磁盘时对数据进行加密,授权用户读取数据时再对其进行解密
③数据库的应用程序不需要做任何修改,只需在创建表语句中说明需加密的字段即可
内核级加密方法: 性能较好,安全完备性较高
2)非透明存储加密:通过多个加密函数实现
传输加密(结合计算机网络学习,我暂时还没学习相关内容,所以这里就只是写个大概,嘻嘻):
1)链路加密
①在链路层进行加密
②传输信息由报头和报文两部分组成
③报文和报头均加密
2)端到端加密
①在发送端加密,接收端解密
②只加密报文不加密报头
③所需密码设备数量相对较少,容易被非法监听者发现并从中获取敏感信息
推理控制
隐蔽信道
数据隐私保护
等。