数据库系统概述之数据库的安全性
一、数据库安全性概述
定义:保护数据库以防止不合法使用所造成的数据泄露,更改或破坏。
二、不安全因素
非授权用户对数据库的恶意存取和破坏 | 一些黑客(Hacker)和犯罪分子在用户存取数据库时猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据 |
---|---|
数据库中重要或敏感的数据被泄露 | 黑客和敌对分子千方百计盗窃数据库中的重要数据,一些机密信息被暴露 |
安全环境的脆弱性 | 计算机硬件、操作系统、网络系统等的安全性直接影响数据库的安全 |
管理制度不健全,有法不依、执法不严 | 单位内部用户有意无意地泄露用户信息 |
三、数据库安全标准
1.发展历程
时间 | 名称 | 评估准则 |
---|---|---|
1985年 | 美国国防部(DoD)正式颁布《DoD可信计算机系统评估准则》(简称TCSEC或DoD85) | 欧洲的信息技术安全评估准则(ITSEC) 加拿大的可信计算机产品评估准则(CTCPEC) 美国的信息技术安全联邦标准(FC) |
1993 | CTCPEC、FC、TCSEC和ITSEC联合行动,解决原标准中概念和技术上的差异,称为CC(Common Criteria)项目 | ----------- |
1999 | CC V2.1版被ISO采用为国际标准, 2001年 CC V2.1版被我国采用为国家标准 | ----------- |
目前CC已基本取代了TCSEC,成为评估信息产品安全性的主要标准
TCSEC/TDI安全级别划分
四、CC安全标准内容
- CC ,提出国际公认的表述信息技术安全性的结构,把信息产品的安全要求分为:
安全功能要求 安全保证要求
- CC评估保证级
五、我国信息系统安全保护等级
《信息安全等级保护管理办法》规定,信息系统的安全保护等级分为以下五级,一至五级等级逐级增高:
第一级,信息系统受到破坏后,会对公民、法人和其他组织的合法权益造成损害,但不损害国家安全、社会秩序和公共利益。第一级信息系统运营、使用单位应当依据国家有关管理规范和技术标准进行保护。
第二级,信息系统受到破坏后,会对公民、法人和其他组织的合法权益产生严重损害,或者对社会秩序和公共利益造成损害,但不损害国家安全。国家信息安全监管部门对该级信息系统安全等级保护工作进行指导。
第三级,信息系统受到破坏后,会对社会秩序和公共利益造成严重损害,或者对国家安全造成损害。国家信息安全监管部门对该级信息系统安全等级保护工作进行监督、检查。
第四级,信息系统受到破坏后,会对社会秩序和公共利益造成特别严重损害,或者对国家安全造成严重损害。国家信息安全监管部门对该级信息系统安全等级保护工作进行强制监督、检查。
第五级,信息系统受到破坏后,会对国家安全造成特别严重损害。国家信息安全监管部门对该级信息系统安全等级保护工作进行专门监督、检查。
我国安全法相关的法律法规
1.《中华人民共和国网络安全法》,2017年6月1日起施行。
2. 《中华人民共和国个人信息保护法(草案)》。
3.《互联网信息服务管理办法》,2000年9月25日施行。
4.《计算机信息网络国际联网安全保护管理办法》,1997年12月30日实施。
5.中办、国办《关于进一步加强互联网管理工作的意见》(中办发[2004]32号)。
6.中央网信办《关于加强党政机关网站安全管理的通知》(中网办发文[2014]1号)。
六、 数据库安全控制
- 非法掌控数据库几种情况
- 编写合法程序绕过数据库管理系统及其授权机制;
- 直接或编写应用程序执行非授权操作;
- 通过多次合法查询数据库从中推导出一些保密数据。
- 计算机系统进行防范举措
- 系统根据用户标识鉴定用户身份,合法用户才准许进入计算机系统。
- 数据库管理系统还要进行存取控制,只允许用户执行合法操作 。
- 操作系统有自己的保护措施 。
- 数据以密码形式存储到数据库中。
- 存取控制流程
第一,数据库管理系统对提出SQL访问请求的数据库用户进行身份鉴别,防止不可信用户使用系统。
第二,在SQL处理层进行自主存取控制和强制存取控制,进一步可以进行推理控制。
第三 对用户访问行为和系统关键操作进行审计,对异常用户行为进行简单入侵检测。
- 用户身份鉴别
静态口令鉴别 | 静态口令一般由用户自己设定,这些口令是静态不变的。 |
---|---|
动态口令鉴别 | 口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法。 |
生物特征鉴别 | 通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等。 |
智能卡鉴别 | 智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。 |
- 存取控制
存取控制机制主要包括定义用户权限和合法权限检测两部分:- 定义用户权限(将用户权限登记到数据字典中去):用户对某一个数据对象的操作权力称为权限
- 合法权限检查: DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则合法权限检查; 用户发出存取数据库操作请求,DBMS查找数据字典,进行合法权限检查; 用户权限定义和合法权检查机制一起组成了数据库管理系统的存取控制子系统。
- 常见的存取控制方法
方法 | 级别 | 描述 |
---|---|---|
自主存取控制(DAC) | C2级 | 用户对不同的数据对象有不同的存取权限;不同的用户对同一对象也有不同的权限;用户还可将其拥有的存取权限转授给其他用户。 |
强制存取控制(MAC) | B1级 | 每一个数据对象被标以一定的密级;每一个用户也被授予某一个级别的许可证;对于任意一个对象,只有具有合法许可证的用户才可以存取。 |
关系数据库系统中的存取权限
七、授权(GRANT)
1、语法
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]…TO <用户>[,<用户>]...
[WITH GRANT OPTION] ;
说明:WITH GRANT OPTION 表示用户可以转授此权限。
2、功能
将对指定操作对象的指定操作权限授予指定的用户 。
3、能执行GRANT命令的数据库用户:
数据库管理员 数据库对象创建者(即属主Owner) 拥有该权限的用户
4、按受权限的用户
一个或多个具体用户
PUBLIC(即全体用户)
5、权限不能循环转授
、、、
6、实例
把查询XXX表的权限授予用户User | GRANT SELECT ON TABLE Student TO U1; |
---|---|
把对S1表和S2表的全部权限授予用户U1和U2。 | GRANT ALL PRIVILIGES ON TABLE S1 ,S2 TO U1,U2 |
把对表SC的查询权限授予所有用户 | GRANT SELECT ON TABLE SC TO PUBLIC |
把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户 | GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION |
说明:U5不仅拥有了对表SC的INSERT权限, 还可以转授此权限
八、回收授权(REVOKE)
1、语法
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]…[CASCADE | RESTRICT];
说明:
2、功能
收回授予用户的权限,授予的权限可以由数据库管理员或其他授权者用户。
把用户U修改学生学号的权限收回 | REVOKE UPDATE(Sno) ON TABLE STUDENT FROM U |
---|---|
收回所有用户对表SC的查询权限 | REVOKE SELECT ON TABLE SC FROM PUBLIC |
把用户U5对SC表的INSERT权限收 | REVOKE INSERT ON TABLE SC FROM U5 CASCADE |
注意:CASCADE:级联 RESTRICT: 限制;
此处:将用户U5的INSERT权限收回的时候应该使用CASCADE,否则拒绝执行该语句 ;
如果U6或U7还从其他用户处获得对SC表的INSERT权限,则他们仍具有此权限,系统只收回直接或间接从U5处获得的权限 。
3.小结
数据库管理员(DBA): | 拥有所有对象的所有权限;根据实际情况不同的权限授予不同的用户。 |
---|---|
用户 | 拥有自己建立的对象的全部的操作权限;可以使用GRANT,把权限授予其他用户。 |
被授权的用户 | 如果具有“继续授权”的许可,可以把获得的权限再授予其他用户;所有授予出去的权力在必要时又都可用REVOKE语句收回。 |
九、 CREATE USER语句
1.语法: 数据库管理员在创建用户时实现
CREATE USER < username>
[ WITH] [DBA|RESOURCE|CONNECT];
注:CREATE USER不是SQL标准,各个系统的实现相差甚远
2.CREATE USER语句说明:
- 只有系统的超级用户才有权创建一个新的数据库用户; 新创建的数据库用户有三种权限:CONNECT、RESOURCE和DBA;
- 如没有指定创建的新用户的权限,默认该用户拥有CONNECT权限。拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库;
- 拥有RESOURCE权限的用户能创建基本表和视图,成为所创建对象的属主。但不能创建模式,不能创建新的用户;
- 拥有DBA权限的用户是系统中的超级用户,可以创建新的用户、创建模式、创建基本表和视图等;DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户
十、数据库角色
1、数据库角色定义
是一个具有一组确定数据库权限的对象,用户与该角色绑定便获得了该角色具有的权限。
2、创建角色
CREATE ROLE <角色名>
3、给角色授权
GRANT <权限>[,<权限>]…
ON <对象类型>对象名
TO <角色>[,<角色>]…
4、将一个角色授予其他的角色或用户
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
说明:
该语句把角色授予某用户,或授予另一个角色; 授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION; 指定了WITH ADMIN
OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色; 一个角色的权限:直接授予这个角色的全部权限加上其他角色,授予这个角色的全部权限。
5、角色权限的收回
REVOKE <权限> [,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…
说明:
用户可以回收角色的权限,从而修改角色拥有的权限;
REVOKE执行者是角色的创建者,拥有在这个(些)角色上的ADMIN OPTION。
6、实例
创建一个角色:R1—》
GRANT ROLE R1
赋予查询,更新,插入权限给角色R1
GRANT SELECT ,UPDATE,INSERT ON TABLE T1 TO R1
赋予XXXR1的所有权限
GRANT R1 TO XXX
删除R1的删除权限
REVOKE DELETE ON TABLE T1 FROM R1
十一、强制存取控制(MAC)
1、在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类:
1、主体是系统中的活动实体 ,数据库管理系统所管理的实际用户, 代表用户的各进程。
2、客体是系统中的被动实体,受主体操纵 的数据对象 文件、基本表、索引、视图
实现强制存取控制时要首先实现自主存取控制
原因:较高安全性级别提供的安全保护要包含较低级别的所有保护
2、敏感标记
对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label), 敏感度标记分成若干级别:
- 绝密(Top Secret,TS)
- 机密(Secret,S)
- 可信(Confidential,C)
- 公开(Public,P)TS>=S>=C>=P
主体的敏感度标记称为许可证级别(Clearance Level)
客体的敏感度标记称为密级(Classification Level)
3、强制存取控制规则
1、仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。
2、仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
4、DAC + MAC安全检查
先进行自主存取控制检查,通过自主存取控制检查的数据对象再由系统进行强制存取控制检查,只有通过强制存取控制检查的数据对象方可存取。
十二、审计
审计功能把用户对数据库的所有操作自动记录下来放入审计日志中,审计员可以利用审计日志监控数据库的各种行为。
1、审计事件
- 服务器事件
- 审计数据库服务器发生的事件
- 系统权限
- 对系统拥有的结构或模式对象进行操作的审计要求该操作的权限是通过系统权限获得的
- 语句事件
- 对SQL语句,如DDL、DML及DCL语句的审计
- 模式对象事件
- 对特定模式对象上进行的SELECT或DML操作的审计
2、审计功能
基本功能:提供多种审计查阅方式提供多种审计查阅方式
多套审计规则:一般在初始化设定
提供审计分析和报表功能
审计日志管理功能:
防止审计员误删审计记录, 审计日志必须先转储后删除
对转储的审计记录文件提供完整性和保密性保护
只允许审计员查阅和转储审计记录不允许任何用户新增和修改审计记录等
提供查询审计设置及审计记录信息的专门视图
3、AUDIT语句和NOAUDIT语句
AUDIT语句:设置审计功能
NOAUDIT语句:取消审计功能
4、实例
对修改SC表结构或修改SC表数据的操作进行审计
AUDIT ALTER,UPDATE ON SC;
取消对SC表的一切审计
NOAUDIT ALTER UPDATE ON CS;
十三、数据加密
1、数据加密
防止数据库中数据在存储和传输中失密的有效手段。
1.1、加密的基本思想
根据一定的算法将原始数据—明文(Plain text)变换为不可直接识别的格式—密文(Cipher text)。
加密方法
存储加密
传输加密
2、存储加密
- 透明存储加密 内核级加密保护方式,对用户完全透明 将数据在写到磁盘时对数据进行加密,授权用户读取数据时再对其进行解密
- 数据库的应用程序不需要做任何修改,只需在创建表语句中说明需加密的字段即可 内核级加密方法: 性能较好,安全完备性较高 非透明存储加密
- 通过多个加密函数实现
3、传输加密
链路加密 在链路层进行加密 传输信息由报头和报文两部分组成
报文和报头均加密
端到端加密
在发送端加密,接收端解密
只加密报文不加密报头
所需密码设备数量相对较少,容易被非法监听者发现并从中获取敏感信息
十四、其他安全保护
- 推理控制
处理强制存取控制未解决的问题
避免用户利用能够访问的数据推知更高密级的数据
- 常用方法
基于函数依赖的推理控制 基于敏感关联的推理控制
- 隐蔽信道
处理强制存取控制未解决的问题
- 数据隐私保护
描述个人控制其不愿他人知道或他人不便知道的个人数据的能力
范围很广:数据收集、数据存储、数据处理和数据发布等各个阶段
数据库系统概述之数据库的安全性相关推荐
- [数据库基础篇]——数据库系统概述、数据模型、数据库系统的结构、数据库系统的组成
目录 一.数据库系统概述 1.数据库的四个基本概念 2.数据管理技术的产生及发展 二.数据模型 两类数据模型 概念模型 逻辑模型 三.数据库系统的结构 三级模式结构 二级映像功能与数据独立性 外模式| ...
- 【SQL Server系列】_01数据库系统概述
数据库系统概述 一.信息,数据,数据处理与数据管理 1.数据与信息 2.数据处理与数据管理 二.数据库技术的产生,发展 1.人工管理阶段 2.文件系统阶段 3.数据库系统阶段 三.数据库系统的组成 四 ...
- 数据库原理(一)- 数据库系统概述
数据库原理(一)- 数据库系统概述 四个基本概念 数据 数据库 数据库管理系统 数据库系统 四个概念的关系 数据管理技术的产生和发展 人工管理阶段 文件管理阶段 数据库系统阶段 三个阶段的比较 数据库 ...
- 数据库实验:数据库和表、查询、视图与安全性、存储过程及游标、触发器、综合实验-水果商店进阶
数据库实验:数据库和表.查询.视图与安全性.存储过程及游标.触发器.综合实验-水果商店进阶 实验一.数据库和表 源码1: 源码2: 小结 实验二.查询 源码 小结 实验三.视图.安全性 源码: 小结 ...
- 第1章 数据库系统概述
第1章 数据库系统概述 1.1 数据库系统简介 数据库技术的发展历史 人工管理阶段 文件系统阶段 数据库系统阶段
- azure云数据库_Azure SQL数据库中的高级数据安全性–数据发现和分类
azure云数据库 Azure SQL supports in building and managing wide range of SQL databases, tools, frameworks ...
- 数据库实验2 数据库安全性定义与检查
前言:记得验收时问了一个问题吧,就是用户和角色的区别是什么 实验2.1自主存取控制实验 1.实验目的 掌握自主存取控制权限的定义和维护方法. 2.实验内容和要求 定义用户.角色,分配权限给用户.角色, ...
- 【数据库系统】第一部分 数据库基础(4) 数据库安全性
本文属于「数据库系统」系列文章之一,这一系列着重于「数据库系统知识的学习与实践」.由于文章内容随时可能发生更新变动,欢迎关注和收藏数据库系统系列文章汇总目录一文以作备忘.需要特别说明的是,为了透彻理解 ...
- 数据库系统概论——绪论——1.1 数据库系统概述
目录 1.1.1 数据.数据库.数据库管理系统,数据库系统 1.1.1.1 数据(Data) 定义 数据的表现形式 信息 数据和数据的解释是密不可分的. 1.1.1.2 数据库(Database,简称 ...
- 数据库学习 (一):数据库系统概述
数据库系统概述 数据:描述事物的符号 可以是数字.文字.图片.音频.视频等 数据库:大量数据的集合 长期存储在计算机中,可共享,有组织. 数据库具有数据结构化.最小的冗余度.较高的_独立性特点 数据库 ...
最新文章
- 微信公众平台消息接口PHP版
- Judges' Time Calculation
- flink网页端提交pr-修改文档报错
- C#.NET SQLServer数据库分页函数,包含存储过程和C#代码
- python爬虫获取中国天气网天气数据 requests BeautifulSoup re
- 用pfx证书java双向认证_把CA证书生成的crt的证书和pem的私钥转换成java能够使用的keystore和pcks12的证书,实现https双向认证...
- struts2面试整理
- 生产者消费者模式-java原生、Disruptor实现方案
- Math、Number、String 、Array、Object 的新 APIs
- 基础集合论 第三章 2 自然数集
- 2015 年全国电赛题——风力摆控制系统(B 题)
- 专业技能与职业素养报告计算机,职业技能与职业素养的心得体会
- springMVC实现图片打包下载
- 网络连接有个感叹号的原因及解决方法
- tweepy抓取Twitter数据
- ​stp文件转ply
- 小程序之 一个方法中的值怎么传递到另一个方法中
- pandas——交叉表与透视表
- 哈工大 编译原理 复习笔记
- TRS cms用户注册漏洞