数据库的安全性
1.1 安全性概述
1.1.1 数据库的不安全因素
非授权用户对数据库的恶意存取和破坏
DBMS提供的安全措施:用户身份鉴别、存取控制和视图等
数据库中重要或敏感的数据被泄露
DBMS提供的安全措施:强制存取控制、 数据加密存储、 加密传输等
审计日志
1.1.2 安全标准
TCSEC标准/TDI标准
安全级别划分:A1,B3,B2,B1,C2,C1,D
总结:四组七个等级
D
将一切不符合更高标准的系统均归于D组
DOS是安全标准为D的操作系统(DOS在安全性方面几乎没有专门的机制来进行保障)
C(C1,C2)
C1
非常初级的自主安全保护
能够实现对用户和数据的分离,进行 自主存取控制(DAC), 保护或限制用户权限的传播
C2
安全产品的最低档次
B(B1,B2,B3)
B1
标记安全保护。安全或者可信的产品
对系统的数据加以标记、对标记的主题和客体实施强制存取控制(MAC)、审计等安全机制
B2
结构化保护
建立形式化的安全策略模型并且对模型内的所有主题和客体实施DAC和MAC
B3
安全域
A(A1)
A1
验证设计
按照系统可靠或可信程度逐渐增高
各安全级别之间都具有一种偏序向下兼容的关系:也就是较高安全性级别提供的安全保护要包含较低级别的所有保护要求
CC标准
提出国际公认的表述信息技术安全性结构
1.2 数据库安全性控制
1.2.1 存取控制流程
对提出sql访问请求的数据库用户进行身份鉴别
在 sql处理层进行自主存取控制和强制存取控制,进一步可以进行推理控制
对用户访问行为和关键操作进行审计,对异常用户行为进行简单入侵检测
1.2.2 用户身份鉴别
系统提供的最外层安全保护措施
用户标识:由用户名和用户标识号组成,其中 用户标识号在系统整个生命周期内唯一
鉴别的方法
静态口令鉴别
动态口令鉴别:一次一密
生物特征鉴别:指纹、虹膜等
智能卡鉴别:硬件加密
1.2.3 存取控制
存取控制的 机制组成:
定义用户权限(也称为 授权),并且将用户权限登记到数据字典中
定义用户在那些数据库对象上进行哪些类型的操作
合法权限检查
存取控制子系统:用户权限定义和合法权限检查共同构成
1.2.4 自主存取控制方法(DAC)
C2级
用户对不同的数据对象有不同的存取权限
不同的用户对同一对象也有不同的权限
用户还可以将拥有的存取权限进行转授给其他用户
通过GRANT语句和REMOVE语句实现授权和回收权限
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jlcLehqE-1588862081163)(C:\Users\wangj\AppData\Roaming\Typora\typora-user-images\image-20200503174206483.png)]
1.2.5 强制存取控制方法(MAC)
B1级
每个数据对象都被标以一定的密级
每个用户也被授予某一个级别的许可证
对于任意一个对象,只有拥有合法许可证的用户才可以进行存取
1.2.6 授权:授权与回收
1.2.61 授权
1 GRANT 进行授权
2 一般格式:(将对指定操作对象的指定操作权限授予指定的用户)
3 grant 权限1,权限2...
4 on 对象类型 对象名
5 to 用户1,用户2
6 [with grant option]
with grant option: 作用是该权限是否可以进行传播
需要注意with grant option 不允许循环授权
u1 -> u2 -> u3 此时u3不允许授权给u1
1
例如:将查询Student表权限授予用户u1
1 grant select
2 on table Student
3 to u1
例如:将对Student表和Course表的全部权限授予用户u2和u3
1 grnt all priviliges
2 on table Student,Course
3 to u2,u3
例如:对表sc的查询权授予所有用户
1 grant select
2 on table sc
3 to public
例如:把查询Student表和修改学生学号的权限给用户u4
1 grant update(Sno),select
2 on table Student
3 to u4
对属性列的授权的时候必须要明确指定相应的属性列名
1.2.62 回收权限
1 remove 进行回收权限
2 一般格式:
3 remove 权限1,权限2..
4 on 对象类型 对象名
5 from 用户1,用户2...
例如:将用户u4修改学生学号的权限收回
1 remove updata(Sno)
2 on table Student
3 from u4
例如:将所有用户对表sc的查询权限收回
1 remove select
2 on table sc
3 from public
对于通过多次授权得到的权限,在收回的时候需要使用cascade关键字进行级联收回
例如:u3将对sc表的insert权限授权过给u4,u5,现在想要将u3的权限收回
1 remove insert
2 on table sc
3 from u3 cascade
1.2.7 创建数据库模式的权限
1 数据库管理员在创建用户时实现
2 create user 用户名
3 WITH DBA|RESOURCE|CONNECT
1.2.71 connect
拥有connect权限的用户 不能创建新用户,不能创建模式,也不能创建基本表。但是 可以进行登录数据库
1.2.72 resource
拥有resource权限的用户:可以创建基本表和视图。 但是, 不能创建新的用户
1.2.73 DBA
拥有DBA权限的用户就是系统的 超级用户 可以创建新的用户、创建模式、创建基本表和视图等等。 并且还拥有对数据库对象的存取权限。还可以将这些权限全部授予一般的用户
1.2.74 总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BNtcLNys-1588862081168)(C:\Users\wangj\AppData\Roaming\Typora\typora-user-images\image-20200503205715038.png)]
1.2.8 数据库角色
1.2.81 数据库角色的概念
数据库角色:被命名的一组与数据库操作相关权限
角色是权限的集合
作用: 简化授权的过程
1.2.82 创建数据库角色
create role 角色名
1
例如:创建一个角色r1
create role r1
1
1.2.83 给角色授权
1 grant 权限1,权限2...
2 on 对象类型
3 to 角色1,角色2...
例如:使用grant语句,让角色r1拥有Student表的select、update、insert 权限
1 grant select,update,insert
2 on table Student
3 to R1
1.2.84 将一个角色授权给其他角色或者所有用户
1 grant 角色1,角色2
2 to 角色3.../用户..
3 [with admin option]
例如:将R1角色授予王平、张明、赵玲,使他们具有r1所有包含的全部权限
1 grant R1
2 to 王平、张明、赵玲
在指定with admin option 语句之后,则获得某种权限的角色或用户还可以将这种权限授予其他角色
授权者是角色的创建者或者是拥有这个角色上的admin option
1.2.85 角色权限的收回
1 revoke 权限1,权限2
2 on 对象类型 对象名
3 from 角色1,角色2
例如:一次性通过收回R1来回收王平的3个权限
1 revoke R1
2 from 王平
revoke的执行者是角色的创建者或者是拥有这个角色上的admin option
1.2.86 角色权限的修改
使得角色R1在原来的基础上增加了Student表的delete权限
1 grant delete
2 on table Student
3 to R1
将R1减少select权限
1 renvoke select
2 on table Student
3 from R1
1.2.9 强制存取控制方法(MAC)
1.2.91 自主存取控制方法的缺点
因为这种机制仅仅通过对数据的 存取权限来进行安全控制,对数据本身并没有安全性标记
而强制存取控制方法就是通过控制所有主客体实施强制存取控制策略
1.2.92 强制存取控制的特点
保证更高的安全性
用户不能直接感知或者进行控制
适用于对数据有严格而固定密级分类的部门
军事部门
政府部门
1.2.93 强制存取控制的主体与客体
在强制存取控制中,数据库管理系统所管理的全部实体被分为 主体与客体
主体是系统中的活动实体
数据库管理系统所管理的用户
代表用户的各个进程
客体是系统中的被动实体,受主体操纵
文件、基本表、索引、视图
1.2.94 敏感度标记
对于每个主体和客体,DBMS都会为他们每个实例指派一个敏感度标记
分为:
绝密 TS
机密 S
可信 C
公开 P
TS >= S >= C >=P
其中,主体的敏感度标记为许可证级别,客体的敏感度标记为密级
1.2.95 强制存取控制的规则
仅当主体的许可证级别 大于或等于 客体的密级时,该主体才能 读取 相应的客体
仅当主体的许可证级别 小于或等于 客体的密级的时候,该主体才能 写 相应的客体
1.2.96 强制存取控制方法与自主存取控制方法的关系
实现强制存取控制时要首先实现自主存取控制
因为较高安全级别提供的安全保护要包含较低级别的所有保护
自主存取控制与强制存取控制共同构成了数据库管理系统的安全机制
1.2.97 MAC+DAC的安全检查
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BHJvgbuw-1588862081171)(C:\Users\wangj\AppData\Roaming\Typora\typora-user-images\image-20200507101211160.png)]
1.3.0 视图机制
把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定的安全保护
间接地实现支持存取谓词的用户权限定义
例如:建立计算机视图,把该视图的select权限授予给王平,并且把该视图上的所有操作权限都授予张明
1.3.1 审计(audit)
1.3.11 什么是审计
审计就是启用一个专门的审计日志(auditlog)将用户对数据的所有操作记录在上面
审计员利用审计日志监控数据库中的各种行为,找出非法存取数据的人、时间和内容
审计很费时间和空间
是一种事后检查的安全性机制
1.3.12 审计事件
服务器事件
审计数据库服务器发生的事件
系统权限
对系统拥有的结构或模式对象进行操作的审计
要求该操作的权限是通过系统权限获得的
语句事件
对sql语句(DDL,DML,DQL以及DCL语句)
模式对象事件
对特定模式对象上进行的select或DML操作的审计
1.3.13 审计功能
基本功能
提供多种审计查阅方式提供多种审计查阅方式
多套审计规则
提供审计分析和报表功能
审计日志管理功能
防止审计员 误删审计记录,审计日志必须先转储后删除
对转储的审计记录文件提供完整性和保密性保护
只允许审计员查阅和转储审计记录,不允许任何用户新增或者修改审计记录等
提供查询审计设置及审计记录信息的专门视图
1.3.14 开启与关闭审计的语句
1.3.15 审计的分类
用户级审计
任何人都可以设置的审计
主要是用户针对自己创建的数据库表和视图进行审计
系统级审计
只允许数据库管理员设置
检测成功或失败的登录要求、检测授权和收回操作以及其他数据库级权限下的操作
1.3.2 数据加密
1.3.21 什么是数据加密
数据加密是防止数据库中数据在存储和传输中失密的有效手段
1.3.22 加密的基本思想
根据一定的算法将原始数据(明文)变换为不可直接识别的格式(密文)
1.3.23 加密方法 - - 存储加密
存储加密是一种透明存储加密、是一种内核级加密,对用户完全透明
将数据在写入磁盘的时候对数据进行加密,在授权用户读取数据时再对他进行解密
存储加密 只需要在创建表语句中说明需要加密的字段即可,不需要再数据库的应用进行任何的修改
优点:性能较好,安全完备性较高
1.3.24 加密方法 - - 传输加密
链路加密
在链路层进行加密
传输信息由报头和报文两部分组成
报头和报文均进行加密
端到端加密
在发送端加密,接收端解密
只加密报文,不加密报头
因为所需要密码设备数量相对较少,容易被非法监听者发现并从中获取敏感信息
1.3.25 基于安全套接层协议SSL传输方案的实现思路
1.3.3 其他安全性保护
1.3.3 小结
实现数据库系统安全性的技术和方法
用户身份鉴别
存取控制技术:自主存取控制(DAC)和强制存取控制(MAC)
视图技术
审计技术
数据加密存储和加密传输
————————————————
版权声明:本文为CSDN博主「One_castle」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/One_castle/article/details/105983627