4.数据库安全性

目录

4.1数据库安全性概述

4.1.1数据库地不安全因素

4.1.2安全标准简介

4.2数据库安全性控制

4.2.1用户身份鉴别

1.静态口令鉴别

2.动态口令鉴别

3.生物特征鉴别

4.智能卡鉴别

4.2.2存取控制

1.定义用户权限,并将用户权限登记到数据字典中

2.合法权限检查

4.2.3自主存取控制方法

4.2.4授权:授予与收回

1.GRANT

2.REVOKE

3.创建数据库模式的权限

4.2.5数据库角色

1.角色的创建

2.给角色授权

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

4.角色权限的收回

4.2.6强制存取控制方法

4.3视图机制

4.4审计

1.审计事件

2.审计功能

3.AUDIT和NOAUDIT语句

4.5数据加密

1.存储加密

2.传输加密

4.6其它安全性保护

4.6.1推理控制

4.6.2隐蔽信道

4.6.3数据隐私


4.1数据库安全性概述

数据库地安全性时指保护数据库以防止不合法使用所造成地数据泄露、更改或破坏。

4.1.1数据库地不安全因素

1.非授权用户对数据库地恶意存取和破坏

2.数据库中重要或敏感地数据被泄露

为防止数据泄露,数据库管理系统提供的主要技术有强制存取控制、数据加密存储和加密传输等。此外,在安全性要求较高的部门提供审计功能,通过分析审计日志,可以对潜在的威胁提前采取措施加以防范,对非授权用户的入侵行为及信息破坏情况能够进行跟踪,防止对数据库安全责任的否认。

3.安全环境的脆弱性

4.1.2安全标准简介

计算机以及信息安全技术方面有一系列的安全标准,具有影响的当推TCSEC和CC这两个标准。

目前CC已经基本取代了TSCEC。

TCSEC又称桔皮书,分别从安全策略、责任、保证和文档4个方面来描述安全性级别划分的指标。

TCSEC/TDI将系统划分为4组7个等级

安全级别定义
A1

验证涉及

B3安全域
B2结构化保护
B1标记安全保护
C2受控的存取保护
C1自主安全保护
D最小保护

1)C1:该级只提供了非常初级的自主安全保护,能够实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播。

2)C2:该级实际上是安全产品的最低档,提供受控的存取保护,即将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和资源隔离。

3)B1:标记安全保护。对系统的数据加以标记,并对标记的主体和客体实施强制存取控制MAC以及审计等安全机制。B1级别的产品才被认为是真正意义上的安全产品。

4)B2:结构化保护。建立形式化的安全策略模型,并对系统内的所有主体和课题实施DAC和MAC。

5)B3:安全域。该级的TCB(Trusted Computing Base)必须满足访问监控器的要求,审计跟踪能力更强,并提供系统回复过程。

6)A1:验证设计,即提供B3级保护的同时给出系统的形式化设计说明和验证,以确信各安全保护真正实现。

CC提出了目前国际上公认的表述信息技术性的结构,即把对信息产品的安全要求分为安全功能要求和安全保证要求。安全功能要求用以规范产品和系统的安全行为,安全保证要求解决如何正确有效地实施这些功能。安全功能要求和安全保证要求都以“类-子类-组件”地结构表述,组件是安全要求地最小构件块。

CC的文本由三部分组成:

1)简介和一般模型,介绍CC中的有关术语、基本概念和一般模型以及与评估有关的一些框架。

2)安全功能要求,列出了一系列类、子类和组件。由11大类、66个子类和135个组件构成。

3)安全保证要求,列出了一系列保证类、子类和组件。包括7大类、26个子类和135个组件构成。

CC评估保证级(EAL)的划分
评估保证级定义TCSEC安全级别(近似相当)
EAL1功能测试
EAL2结构测试C1
EAL3系统地测试和检查C2
EAL4系统地设计、测试和复查B1
EAL5半形式化设计和测试B2
EAL6半形式化验证的设计和测试B3
EAL7形式化验证的设计和测试A1

4.2数据库安全性控制

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

4.2.1用户身份鉴别

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

用户鉴别的方法有多种,往往是多种方法结合。

1.静态口令鉴别

静态口令一i版由用户自己设定,鉴别时只要按要求输入正确的口令,系统将允许用户使用数据库管理系统。

2.动态口令鉴别

这种方式的口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法。常用的方式如短信密码和动态令牌方式。

3.生物特征鉴别

它是通过生物特征进行认证的技术这种方式通过采用图像处理和模式识别等技术实现了基于生物特征的认证。

4.智能卡鉴别

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

4.2.2存取控制

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

1.定义用户权限,并将用户权限登记到数据字典中

用户对某一数据对象的操作权力称为权限。数据库管理系统提供适当的语言来定义用户权限,这些定义经过编译后存储在数据字典中,被称作安全规则或授权规则。

2.合法权限检查

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

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

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

这两类方法的简单定义是:

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

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

4.2.3自主存取控制方法

用户权限由两个要素组成:数据库对象和操作类型。定义一个用户的存取权限就是要定义这个用户可以在哪些数据库对象上进行哪些类型的操作。在数据库系统中,定义存取权限称为授权。

在非关系系统中,用户只能对数据进行操作,存取控制的数据库对象也仅限于数据本身。

在关系数据库系统中,存取控制的对象不仅有数据本身(基本表中数据、属性列上的数据),还有数据库模式(包括模式、基本表、视图和索引的创建等)。

关系数据库中的存取权限
对象类型对象操作类型
数据库模式模式CREATE SCHEMA
基本表CREATE TABLE,ATER TABLE
视图CREATE VIEW
索引CREATE INDEX
数据基本表和视图

SELECT,INSERT,UPDATE,DELETE,REFERENCES

,ALL PRIVILEGES

属性列

SELECT,INSERT,UPDATE,REFERENCES,ALL 

PRIVILEGES

4.2.4授权:授予与收回

SQL中用GRANT和REVOKE语句向用户授予或收回对数据的操作权限。GRANT语句向用户授予权限,REVOKE语句收回已经授予用户的权限。

1.GRANT

GRANT语句的一般形式为:

GRANT<权限>[,<权限>]...
ON<对象类型><对象名>[,<对象类型><对象名>]...
TO<用户>[,<用户>]...
[WITH GRANT OPTION];

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

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

SQL标准允许具有WITH GRANT OPTION的用户把相应权限或其子集传递授予其他用户,但不允许循环授予,即被授予者不能把权限再授回给授权者或其祖先。

例如,将查询Student表的权限授给用户U1:

GRANT SELECT
ON TABLE Student
TO U1;

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

2.REVOKE

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

REVOKE<权限>[,<权限>]...
ON<对象类型><对象名>[,<对象类型><对象名>]...
FROM<用户>[,<用户>]...[CASCADE|RESTRICT];

例如,把用户U4修改学生学号的权限收回:

REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;

3.创建数据库模式的权限

GRANT和REVOKE语句向用户授予或回收对数据的操作权限。对创建数据库模式一类的数据库对象的授权则由数据库管理员在创建用户时实现。

CREATE USER语句的一般格式如下:

CREATE USER<username>[WITH][DBA|RESOURSE|CONNECT];

对CREATE USER语句说明如下:

1)只有系统的超级用户才有权创建一个新的数据库用户。

2)新创建的数据库用户有三种权限:CONNECT、RESOURSE和DBA。

3)CREATE USER命令中如果没有指定创建的新用户的权限,默认该用户拥有CONNECT权限。拥有CONNRCT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库。

4)拥有RESOURSE权限的用户能创建基本表和视图,成为所创建对象的属主,但不能创建模式,不能创建新用户。数据库对象的属主可以使用GRANT语句把该对象上的存取权限授予其他用户。

5)拥有DBA权限的用户是系统中的超级用户,可以创建新用户、模式、基本表和视图等;DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户。

注意:CREATE USER语句不是SQL标准,因此不同的关系数据库管理系统的语法和内容相差甚远。

4.2.5数据库角色

数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。因此,可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。在SQL中首先用CREATE ROLE语句创建角色,然后用GRANT语句给角色授权,用REVOKE语句收回授予角色的权限。

1.角色的创建

CREATE ROLE<角色名>

2.给角色授权

GRANT<权限>[,<权限>]...
ON<对象类型>对象名
TO<角色>[,<角色>]...;

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

GRANT<角色1>[,<角色2>]...
TO<角色3>[,<用户1>]...
[WITH ADMIN OPTION];

该语句把角色授予用户,或授予另一个角色。授予者或者是角色的创建者,或者拥有在这个角色上的ADMIN OPTION。

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

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

4.角色权限的收回

REVOKE<权限>[,<权限>]...
ON<对象类型><对象名>
FROM<角色>[,<角色>]

用户可以收回角色的权限,从而修改角色拥有的权限。

4.2.6强制存取控制方法

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

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

敏感度标记被分成若干级,例如绝密(Top Secret TS)、机密(Secret S)、可信(Confidential C)、公开(Pubilc P)等。密级的次序是TS>=S>=C>=P。主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。强制存取控制机制是通过对比主体的敏感度标记和客体的敏感度标记,最终确定主体是否能够存取客体。

当某一用户(或某一主体)以标记label注册入系统时,系统要求他对任何客体的存取必须遵循以下规则:

1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。

2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。

按照规则2),用户可以为写入的数据对象赋予高于子集的许可证级别的密级。这样一旦数据被写入,该用户自己也不能再读该数据对象了。如果违反了规则2),就有可能把数据的密级从高流向低,造成数据的泄露。

强制存取控制是对数据本身进行密级标记,文论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。较高安全性级别提供的安全保护要包含较低级别的所有保护,因此在实现强制存取控制时要首先实现自主存取控制,即自主存取控制与强制存取控制共同构成数据库管理系统的安全机制。其安全检查的流程是,系统首先进行自主存取控制,对通过自主存取控制检查的允许存取的数据库对象再由系统自动进行强制存取控制检查,只有通过强制存取控制检查的数据库对象方可存取。

4.3视图机制

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

视图机制间接地实现支持存取谓词的用户权限定义。

例如,建立计算机系学生的视图,把对该视图的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 张明;

4.4审计

审计功能就是数据库管理系统达到C2以上安全级别必不可少的一项指标。审计功能把用户对数据库的所有操作自动记录下来放入审计日记(audit log)中。审计员可以利用审计日记监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。

审计通常是很浪费空间和时间的,所有数据库管理系统往往都将审计设置为可选特征,允许数据库管理员u你根据具体应用对安全性的要求灵活地打开或关闭审计功能。

可审计时间有服务器时间、系统权限、语句事件及模式对象事件,还包括用户鉴别、自主访问控制和强制访问控制事件。

1.审计事件

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

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

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

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

2.审计功能

1)基本功能,提供多种审计查阅方式:基本的、可选的、有限的,等等。

2)提供多套审计规则,审计规则一般在数据库初始化时设定,以方便审计员管理。

3)提供审计分析和报表功能。

4)审计日志管理功能,包括为防止审计员误删审计记录,审计日志必须先转储后删除;对转储的审计记录文件提供完整性和保密性保护;只允许审计员查阅和转储审计记录,不允许任何用户新增和修改审计记录等。

5)系统提供查询审计设置及审计记录信息的专门视图。对于系统权限级别、语句级别及模式对象级别的审计记录也可通过相关的系统表直接查看。

3.AUDIT和NOAUDIT语句

AUDIT语句用来设置审计功能,NOAUDIT语句则取消审计功能。

审计一般可以分为用户级审计和系统审计。用户审计是任何用户可设置的审计,主要是用户针对自己创建的数据库表或视图进行审计,记录所有用户对这些表或视图的一切成功和不成功的访问要求以及各种类型的SQL操作。

例如,对修改SC表结构或修改SC表数据的操作进行审计:

AUDIT ALTER,UPDATE
ON SC;

例如,取消对SC表的一切审计:

NOAUDIT ALTER,UPDATE
ON SC;

审计设置以及审计日志一般都存储在数据字典中。必须把审计开关打开(及把系统参数audit_trail设为true),才可以在系统表SYS_AUDITTRAIL中看到审计信息。

4.5数据加密

加密的基本思想是根据一定的算法将原始数据——明文(plain text)变换为不可直接识别的格式——密文(cipher text),从而使得不知道解密算法的人无法获知数据的内容。

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

1.存储加密

对于存储加密,一般提供透明和非透明两种存储加密方式。透明存储加密是内核级加密保护方式,对用户完全透明;非透明存储加密则是通过多个加密函数实现的。

透明存储加密是数据在写到磁盘时对数据进行加密,授权用户读取数据时再对其进行解密。由于数据加密对用户透明,数据库的应用程序不需要做任何修改,只需再创建表语句中说明需加密的阻断即可。

2.传输加密

常用的传输加密方式如链路加密和端到端加密。其中链路加密对传输数据再链路层进行加密,它的传输信息由报头和报文两部分组成,前者时路由选择信息,而后者是传送的数据信息。这种方式对报文和报头均加密。端到端加密对传输数据再发送端加密,接收端解密。它只加密报文,不加密报头。与链路加密相比,它只在发送端和接收端需要密码设备,而中间节点不需要密码设备,因此它所需密码设备数量相对较少。

4.6其它安全性保护

除自主存取控制和强制存取控制之外,还有推理控制以及数据应用中隐蔽信道和数据隐私保护等技术。

4.6.1推理控制

推理控制处理的是强制存取控制未解决的问题。例如,利用列的函数依赖关系,用户能从低安全等级信息推导除其无权访问的高安全等级信息。

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

4.6.2隐蔽信道

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

通常,如果INSERT语句对UNIQUE属性列写入重复值,则系统会报错且操作失败。那么针对UNIQUE约束列,高安全等级用户可先向该列插入数据,而低安全等级用户向该列插入相同数据。如果插入失败,则表明发送者已向该列插入数据,此时二者约定发送者传输信息位为0;如果插入成功,则表明发送者未向该列插入数据,此时二者约定发送者传输信息位为1.

通过这种方式,高安全等级用户按事先约定方式主动向低安全等级用户传输信息,使得信息从高安全等级向低安全等级流动,从而导致高安全等级敏感信息泄露。

4.6.3数据隐私

所谓数据隐私是控制不愿被他人知道或他人不便知道的个人数据的能力。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值