数据库中的数据遭到破坏会造成难以估量的损失,所以数据库的数据安全保护是数据库运行过程中一个不可忽视的方面。数据库系统必须建立自己的保护机制,提供数据保护。数据库安全机制是用于实现数据库的各种安全策略的功能集合,正是由这些安全机制来实现安全模型,进而实现保护数据库系统安全的目标。
1.用户标识与鉴别
由于数据库用户的安全等级是不同的,因此分配给他们的权限也是不一样的,数据库系统必须建立严格的用户认证机制。身份的标识和鉴别是数据库管理系统对访问者授权的前提,并且通过审计机制使数据库管理系统保留追究用户行为责任的能力。功能完善的标识与鉴别机制也是访问控制机制有效实施的基础,特别是在一个开放的多用户系统的网络环境中,识别与鉴别用户是构筑数据库管理系统安全防线的第一个重要环节。
近年来标识与鉴别技术发展迅速,一些实体认证的新技术在数据库系统集成中得到应用。目前,常用的方法有用户名/口令、数字证书认证、智能卡认证和个人特征识别等。
2.存取控制
对于存取权限的定义称为授权。这些定义经过编译后存储在数据字典中。每当用户发出数据库的操作请求后,数据库管理系统会查找数据字典,根据用户权限进行合法权检查。若用户的操作请求超出了定义的权限,系统会拒绝此操作。
数据库系统中,不同的用户对象有不同的操作权限。对数据库的操作权限一般包括查询权、记录的修改权、索引的建立权、数据库的创建权。把这些权利按一定的规则授予用户,以保证用户的操作在自己的权限范围之内。授权规则见表10-6所示。
表10-6 授权规则表
传统的存取控制机制主要有自主访问控制、强制防控控制和基于角色的存取控制。近年来,基于角色的存取控制得到了广泛的关注。它在主体和权限之间增加了一个中间桥梁——角色。权限被授予角色,而管理员通过指定用户为特定角色来为用户授权。从而大大简化了授权管理,具有强大的可操作性和可管理性。角色可以根据组织中的不同工作创建,然后根据用户的责任和资格分配角色,用户可以轻松地进行角色转换。而随着新应用和新系统的增加,角色可以分配更多的权限,也可以根据需要撤销相应的权限。
3.数据库加密
由于数据库在操作系统中以文件形式管理,所以入侵者可以直接利用操作系统的漏洞窃取数据库文件,或者篡改数据库文件内容。另一方面,数据库管理员可以任意访问所有数据,往往超出了其职责范围,同样造成安全隐患。因此,数据库的保密问题不仅包括在传输过程中采用加密保护和控制非法访问,还包括对存储的敏感数据进行加密保护,使得即使数据不幸泄露或者丢失,也难以造成泄密。同时,数据库加密可以由用户用自己的密钥加密自己的敏感信息,而不需要了解数据内容的数据库管理员无法进行正常解密,从而可以实现个性化的用户隐私保护。
数据库中存储密文数据后,如何进行高效查询成为一个重要的问题。查询语句一般不可以直接运用到密文数据库的查询过程中,一般的方法是首先解密加密数据,然后查询解密数据。但由于要对整个数据库或数据表进行解密操作,因此开销巨大。在实际操作中需要通过有效的查询策略来直接执行密文查询或较小粒度的快速解密。
一般来说,一个好的数据库加密系统应该满足以下几个方面的要求:足够的加密强度,保证长时间且大量数据不被破译;加密后的数据库存储量没有明显的增加;加解密速度足够快,影响数据操作响应时间尽量短;加解密对数据库的合法用户操作(如数据的增、删、改等)是透明的;灵活的密钥管理机制,加解密密钥存储安全,使用方便可靠。
(1)数据库加密的实现机制 数据库加密的实现机制主要研究执行加密部件在数据库系统中所处的层次和位置,通过对比各种体系结构的运行效率、可扩展性和安全性,以求得最佳的系统结构。按照加密部件与数据库系统的不同关系,数据库加密机制可以从大的方面分为库内加密和库外加密。库内加密的优点是加密功能强,但缺点是对系统性能影响比较大。在目前的数据库服务模式中,数据的加密解密都在客户端完成,因此库外加密方式受到越来越多应用。
(2)数据库加密的粒度 一般来说,数据库加密的粒度可以有4种,即表、属性、记录和数据元素。不同加密粒度的特点不同,总的来说,加密粒度越小,则灵活性越好,且安全性越高,但实现技术也更为复杂,对系统的运行效率影响也越大。在目前条件下,为了得到较高的安全性和灵活性,采用最多的加密粒度是数据元素。为了使数据库中的数据能够充分而灵活地共享,加密后还应当允许用户以不同的粒度进行访问。
(3)加密算法 目前还没有公认的专门针对数据库加密的加密算法,因此一般根据数据库特点选择现有的加密算法来进行数据库加密。一方面,对称密钥算法的运算速度比非对称密钥算法快很多,二者相差大约2~3个数量级;另一方面,在公开密钥算法中,每个用户有自己的密钥对。而作为数据库加密的密钥如果因人而异,将产生异常庞大的数据存储量。因此,在数据库加密中一般采取对称密钥的分组加密算法。
(4)密钥管理 对数据库密钥的管理一般有集中密钥管理和多级密钥管理两种体制,集中密钥管理方法是设立密钥管理中心。在建立数据库时,密钥管理中心负责产生密钥并对数据加密,形成一张密钥表。当用户访问数据库时,密钥管理机构核对用户识别符和用户密钥。通过审核后,由密钥管理机构找到或计算出相应的数据密钥。这种密钥管理方式方便用户使用和管理,但由于这些密钥一般由数据库管理人员控制,因而权限过于集中。多级密钥管理体制,以加密粒度为数据元素的三级密钥管理体制为例,整个系统的密钥由一个主密钥、每个表上的表密钥,以及各个数据元素密钥组成。表密钥被主密钥加密后以密文形式保存在数据字典中,数据元素密钥由主密钥及数据元素所在行、列通过某种函数自动生成,一般不需要保存。在多级密钥体制中,主密钥是加密子系统的关键,系统的安全性在很大程度上依赖于主密钥的安全性。
(5)数据库加密的局限性 数据库加密技术在保证安全性的同时,也给数据库系统的可用性带来一些影响,包括影响系统运行效率、难以实现对数据完整性约束的定义、制约数据的SQL语言及SQL函数、密文数据容易成为攻击目标等。
4.数据库审计(www.zuozong.com)
数据库审计是指监视和记录用户对数据库所施加的各种操作的机制。审计功能自动记录用户对数据库的所有操作,并且存入审计日志。事后可以利用这些信息重现导致数据库现有状况的一系列事件,提供分析攻击者线索的依据。
数据库管理系统的审计主要分为语句审计、特权审计、模式对象审计和资源审计。语句审计是指监视一个或者多个特定用户或者所有用户提交的SQL语句;特权审计是指监视一个或者多个特定用户或者所有用户使用的系统特权;模式对象审计是指监视一个模式中在一个或者多个对象上发生的行为;资源审计是指监视分配给每个用户的系统资源。
审计机制应该至少记录用户标识和认证、客体访问、授权用户进行并会影响系统安全的操作,以及其他安全相关事件。对于每个记录的事件,审计记录中需要包括事件时间、用户、时间类型、事件数据和事件结果。对于标识和认证事件,必须记录事件源的终端ID和源地址等;对于访问和删除对象的事件,则需要记录对象的名称。
审计的策略库一般由两个方面因素构成,即数据库本身可选的审计规则和管理员设计的触发策略机制。当这些审计规则或策略机制一旦被触发,则将引起相关的表操作。这些表可能是数据库自定义的,也可能是管理员另外定义的,最终这些审计的操作都将被记录在特定的表中以备查证。一般地,将审计跟踪和数据库日志记录结合起来,会达到更好的安全审计效果。
对于审计粒度与审计对象的选择,需要考虑系统运行效率与存储空间消耗的问题。为了达到审计目的,一般必须审计到对数据库记录与字段一级的访问。但这种小粒度的审计需要消耗大量的存储空间,同时使系统的响应速度降低,给系统运行效率带来影响。
5.备份与恢复
一个数据库系统总是避免不了故障的发生。安全的数据库系统必须能在系统发生故障后利用已有的数据备份,恢复数据库到原来的状态,并保持数据的完整性和一致性。数据库系统所采用的备份与恢复技术,对系统的安全性与可靠性起着重要作用,也对系统的运行效率有着重大影响。
(1)数据库备份 常用的数据库备份的方法有冷备份、热备份和逻辑备份3种。冷备份是在没有终端用户访问数据库的情况下关闭数据库并将其备份,又称为“脱机备份”;热备份是指当数据库正在运行时进行的备份,又称为“联机备份”;逻辑备份是指使用软件技术从数据库中导出数据并写入一个输出文件,该文件的格式一般与原数据库的文件格式不同,而是原数据库中数据内容的一个映像。
(2)数据库恢复 在系统发生故障后,把数据库恢复到原来的某种一致性状态的技术称为“恢复”,其基本原理是利用“冗余”进行数据库恢复。问题的关键是如何建立“冗余”并利用“冗余”实施数据库恢复,即恢复策略。数据库恢复技术一般有3种策略,即基于备份的恢复、基于运行时日志的恢复和基于镜像数据库的恢复。
数据库的备份和恢复是一个完善的数据库系统必不可少的一部分,目前这种技术已经广泛应用于数据库产品中,如Oracle数据库提供对联机备份、脱机备份、逻辑备份、完全数据恢复及不完全数据恢复的全面支持。据预测,以“数据”为核心的计算(Da- ta Centric Computing)将逐渐取代以“应用”为核心的计算。在一些大型的分布式数据库应用中,多备份恢复和基于数据中心的异地容灾备份恢复等技术正在得到越来越多的应用。
6.推理控制与隐私保护
数据库安全中的推理是指用户根据低密级的数据和模式的完整性约束推导出高密级的数据,造成未经授权的信息泄露,这种推理的路径称为“推理通道”(Inference Channel)。近年来随着外包数据库模式及数据挖掘技术的发展,对数据库推理控制(Inference Control)和隐私保护(Privacy Protection)的要求也越来越高。
常见的推理通道有以下4种。
1)执行多次查询,利用查询结果之间的逻辑联系进行推理。
2)利用不同级别数据之间的函数依赖进行推理分析。
3)利用数据完整性约束进行推理。
4)利用分级约束进行推理。
迄今为止,推理通道问题仍处于理论探索阶段,没有一个一劳永逸的解决方法,这是由推理通道问题本身的多样性与不确定性所决定的。目前常用的推理控制方法可以分为两类,第1类是在数据库设计时找出推理通道,主要包括利用语义数据模型的方法和形式化的方法。这类方法都是分析数据库的模式,然后修改数据库设计或者提高一些数据项的安全级别来消除推理通道;第2类方法是在数据库运行时找出推理通道,主要包括多实例方法和查询修改方法。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。