数据库系统概论--第四章 数据库安全性

数据库的特点之一是由数据库管理系统提供统一的数据保护功能来保证数据的安全可靠性。数据库的数据保护主要包括数据的安全性和完整性。

数据库安全性概述

数据库的安全性是指保护数据库以防止不和反使用造成的数据泄露、更改或破坏。

数据库的不安全性因素

1、非授权用户对数据库的恶意存取和怕破坏

2、数据库中重要或敏感的数据被泄露

3、安全环境的脆弱性

数据库安全性控制

与数据库有关的安全性,主要包括用户身份鉴别、多层存取控制、审计、视图和数据加密等安全技术。

数据库系统概论--第四章 数据库安全性_第1张图片 计算机系统的安全模型

数据库系统概论--第四章 数据库安全性_第2张图片 数据库管理系统安全性控制模型

 数据库管理系统安全性控制模型是数据库安全保护的一个存取流程。首先,数据库关系统对提出SQL访问的数据库用户进行身份鉴别,防止不可信用户使用系统;然后,在SQL处理层进行自主存取控制和强制存取控制,进一步还可以进行推理控制。为了监控恶意访问,可根据具体安全需求配置审计规则,对用户访问行为和系统关键操作进行审计。通过设置简单入侵检测规则,对异常用户行为进行检测和处理。在数据存储层,数据库管理系统不仅存放用户数据,还存储与安全有关的表级和信息(称为安全数据),提供存储加密功能等。

用户身份鉴别

用户身份鉴别是数据库管理系统提供的最外层安全保护措施。每个用户在系统中都有一个用户标识。每个用户标识由用户名和用户标识号两部分组成。用户标识号在系统的整个生命周期内是唯一的。系统内记录着所有合法用户的标识,系统鉴别是指由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后提供使用数据库管理系统的权限。

常用的用户身份鉴别方法有以下几种:

1、静态口令鉴别(密码)

这种方式时当前常用的鉴别方法。静态口令一般由用户自己设定,鉴别时只要按要求输入正确的口令,系统将允许用户使用数据库管理系统。这些口令是静态不变的。这种方式虽然简单,但容易被攻击,安全性较低。

2、动态口令鉴别(验证码)

它是目前较为安全的鉴别方式。这种方式的口令是动态变化的,每次鉴别均需使用动态产生的新口令登录数据库管理系统,即一次一密的方法。

3、生物特征鉴别

它是一种通过生物特征进行认证的技术,其中,生物特征是指生物体唯一具有的,可测量、标识和验证的稳定的生物特征,如指纹、虹膜和掌纹等。

4、智能卡鉴别

智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。智能卡由用户随身携带,登录数据库管理系统时用户将智能卡插入专用的读卡器进行身份验证。

 存取控制

数据库安全最重要的一点就是确保之授权给有资格的用户访问数据库的权限,同时令所有未授权的人员无法接近数据,这主要通过数据库系统的存取控制机制实现的。

存取控制机制主要包括定义用户权限合法权限检查两部分。

(1)定义用户权限,并将用户权限登记到数字字典中。

        用户对某一数据对象的操作权力称为权限。某个用户应该具有何种权限是个管理问题和政策问题,而不是技术问题。数据库管理系统的功能是保证这决定的执行。为此,数据库管理系统必须提供适当的语言来定义用户权限,这些定义经过编译后存储在数据字典中,被称作安全规则或授权规则。

(2)合法权限检查

        每当用户发出存取数据库的操作请求后(请求一般应包括操作类型、操作对象和操作用户等信息),数据库管理系统查找数据字典,根据安全规则进行合法权限检查,若用户的请求超出了定义的权限,系统将拒绝执行此操作。

定义用户权限机制和合法权限检查机制一起组成了数据库管理系统存取控制子系统。

C2级的数据库管理系统支持自主存取控制,B1级数据库管理系统支持强制存取控制。

(1)在自主存取控制方法中,用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可以将其拥有的存取权限转授给其他用户。

(2)在强制存取控制方法中,每一个数据库对象被标以一定的密级,每一个用户也被授予某一级别的许可证。对于任意对象,只有具有合法许可证的用户才能存取。

授权:授予与收回

SQL中使用grant和revoke'语句向用户授予或收回对数据库的操作权限。grant语句向用户授予权限,revoke语句收回已经授予用户的权限。

1、grant

grant的一般语句格式为:

        grant <权限> [ ,<权限> ]...  | all privileges(所有权限)

        on <对象类型> <对象名> [ ,<对象类型> <对象名> ] ...

        to <用户> [ ,<用户> ] ...                                               

        [ with grant option ] ; //可传播权限                            

其语义为:将对指定操作对象的指定权限授予指定的用户。发出该grant语句的可以是 数据库管理员,也可以是该数据库对象创建者,还可以是已经拥有该权限的用户。接受权限的用户可以是一个或多个具体用户,也可以是public,即全体用户。

如果指定了 with grant option子句,则获得某种权限的用户还可以把这种权限再授予其他用户。如果没有指定 with grant option 子句,则获得某种权限的用户只能使用该权限,不能传播该权限。

SQL标准具有  with grant option 的用户把相应权限或其子集传递授予其他用户,但不允许循环传授,即被授权者不能把授权再授回授权者或其祖先,如下图所示:

数据库系统概论--第四章 数据库安全性_第3张图片

【例】 把查询Student表的权限授权给用户U1

grant select
on Student
to U1;

【例】把对Student表和Course表的全部操作权限授予用户U2和U3

grant all privileges
on Student,Course
to U2,U3;

【例】把对表SC的查询权限授权予所有用户

grant select
on SC
to public;

【例】把对查询Student表和修改学生学号的权限授权予给用户U4

grant update(Sno),select
on Student
to U4;

对属性列授权时必须明确的指出相应的属性名。

2、revoke

授予用户的权限可以由数据库管理员或其他授权者用 revoke 语句收回,revoke 语句的一般格式为:

revoke <权限> [,<权限>]...

on <对象类型><对象名> [,<对象类型><对象名> ]...

from <用户>[,<用户>] ...[cascade|restrict] ;

【例】 把用户U4修改学生学号的权限收回 

revoke update (Sno)
on Student
from U4;

所有授权出去的权力再必要时都可以用revoke语句收回。

可见,用户可以“自主”的决定将数据的存取权限授予任何人、决定是否也将“授权”的权限授予别人。因此称这样的存取控制是自主存取控制。

数据库角色

数据库角色是被命名的语族余数据相关的权限,角色是权限的集合。因此,可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。

1、角色的创建

创建角色的SQL语句格式是:

create role <角色>;

新创建的角色是空的,没有任何内容,可以用grant为角色授权。

2、给角色授权

grant <权限> [,<权限> ]...

on <对象类型> 对象名

to <角色>[,<角色>]...

3、将一个角色授予其他的角色或用户

grant <角色1>[,<角色2>]...

to <角色3> [,<用户1>]...

[ with admin option]

该语句把角色授予某用户,获授予另一个角色。这样,一个角色(例如角色3)所拥有的权限就是授予它的全部角色(例如角色1,角色2)所包含的权限的总和。

授予者或者角色的创建者,或者拥有在这个角色上的anmin option。

如果指定了with admin option 子句,则获得某种权限的角色或用户还可以把这种权限再授予其他角色。

一个角色包含的权限直接授予这个角色的全部权限加上其他角色授予这个角色的全部权限。

4、角色权限的收回

revoke <权限> [,<权限>]

on <对象类型><对象名>

from <角色> [,<角色>]

强制存取控制方法

所谓强制存取控制方法是指系统为保证更高程度的安全性,按照TDI/TCSEC 标准中安全策略的要求所采取的强制存取检查手段。它不是用户能直接感知或进行控制的。强制存取控制适用于那些对数据有严格而固定密级分类的部门。

在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类。

主体是系统中的活动实体,既包括数据库管理体系所管理的实际用户,也包括代表用户的各个进程。客体是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等。对于主体和客体,数据库管理系统为它们每个实例(值)指派一个敏感度标记

敏感度标记被分为若干等级,例如绝密、机密、可信、公开等。主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。强制存取控制机制就是通过对比主体的敏感度标记和客体的敏感度标记,最终确定主体是否能够存取客体。

视图机制

可以为不同的童虎定于不同的视图,把数据对象限制在一定的范围内。也就是说,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的保护。

【例】建立计算机学院的视图,把对该视图的select权限授予杜霄霖,把该视图上所有的操作权限授予王磊。

create view CS_Student
as
select * from Student where Sdept='CS';

grant select 
on CS_Student
to 杜霄霖;

grant all privileges
on CS_Student
to 王磊;

审计

前面讲的用户身份鉴别、存取控制是数据库安全保护的重要技术(安全策略方面),但不是全部。为了使数据库管理系统达到一定的安全级别,还需要再其他方面提供相应的支持。例如按照TDI/TCSEC标准中安全策略的要求,审计(audit)功能就是数据库管理系统达到C2以上暗族青年级别必不可少的一项指标。

因为任何系统的安全保护措施否不是完美无缺的,蓄意盗窃、破坏数据的人总是想方设法打破控制。审计功能把用户对数据库的所有操作自动记录下来放入审计日志(audit log)中。审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的哟谢列书简,找出非法存取他人数据的人、时间和内容。

审计事件

审计事件一般有多个类别,例如:

服务器事件:审计数据库服务器发生的事件,包含数据库服务器的启动、停止、数据库服务器配置文件的重新加载。

系统权限:对系统拥有的结构或模式对象进行操作的审计,要求该操作的权限是通过系统权限获得的。

语句事件:对SQL语句,如DDL、DML、DQL及DCL语句的审计。

模式对象事件:对特定模式对象上进行的select或dml操作的审计。模式对象包括表、视图、存储过程、函数等。模式对象不包括依附于表的索引、约束、触发器、分区表等。

【例】对修改SC表结构或修改SC表数据的操作进行审计

audit alter,update
on SC;

【例】取消对SC表的一切审计

noaudit alter,update
on SC;

 数据库安全审计系统提供了一种事后检查的安全机制。

数据加密

对于高度敏感的数据,例如财务数据、军事数据、国家机密等,除前面介绍的安全性措施外,还可以采用数据加密技术。数据加密是防止数据库数据在存储和传输中失密的有效手段。加密的基本思想是根据一定的算法将原始报文--明文变换为不可直接试别的格式--密文,从而使得不知道解密算法得人无法获知数据得内容。

数据加密主要包括存储加密和传输加密。

其他安全保护

为了满足较高等级数据库管理系统得安全性保护要求,在自主存取控制得强制存取控制之外,还有推理控制以及 数据库应用中得隐蔽信道和数据隐私保护技术。

推理控制处理得是强制存取控制为解决得问题。例如,利用列得函数依赖关系,用户能从低安全等级信息推导出其他无权访问得高安全等级信息,进而导致信息泄露。

数据库推理控制机制用来避免利用其他能够访问得数据推知更高密级得数据,即用户利用其被允许得多次查询得结果,结合相关得领域背景知识以及数据之间得约束,推导出其不能访问得数据。

隐蔽通道处理内容也是强制存取控制未解决得问题。

高安全等级用户按事先约定方式主动向低安全用户等级传输信息,使得信息流从高安全等级从低安全等级流动,造成信息泄露。

你可能感兴趣的:(数据库,学习)