
摘 要: 针对目前主流数据库的安全防护功能配置方式不灵活、不能应变需求的问题,在HOOK技术的基础上融入组态思想,设计并实现了一种适用于不同数据库的自主安全防护系统(DSS)。在SQLITE上的相关实验表明,利用DSS完全可以实现独立于特定数据库的自主安全防护,大大提高了数据安全防护的灵活性。
关键词: 数据库安全; HOOK API; 访问控制; 数据库审计; SQLITE; 自主安全系统
近年来,有关数据库的安全事故不断出现,例如银行内部数据信息泄露造成的账户资金失密等。因此,高度重视数据库安全防护很有必要。但一直以来,国内数据库产业化发展缓慢,市场份额中较大一部分被国外大型数据库企业占有。这对于国内用户而言,信息的安全性、稳定性等方面都会受到威胁。有的系统涉及使用多个数据库,并且对每个数据库的安防功能要求各不相同。这样,在保障整个系统安全的目标下就需要对每个数据库进行专门配置管理,不但维护难度很大,而且工作也比较繁重。面对这些实际问题,目前的数据库系统自带的安全防护配置方式已不能胜任,如何提出一个灵活独立的安全防护系统迫在眉睫。
1 相关安全防护技术介绍
目前,数据库系统面临的主要威胁有:(1)对数据库的不正确访问引起数据库数据的错误。(2)为了某种目的,故意破坏数据库。(3)非法访问不该访问的信息,且又不留痕迹;未经授权非法修改数据。(4)使用各种技术攻击数据库等。多年来,人们在理论和实践上对数据库系统安全的研究做出了巨大的努力,也取得了很多成果。参考文献[1-2]介绍了保护数据库安全的常用技术,包括:存取管理技术、安全管理技术、以及数据库加密技术,并给出了一些实现途径。其中,访问控制和安全审计作为数据库安全的主要保障措施受到了人们广泛关注,参考文献[3]对访问控制技术中的基本策略进行了总结,给出了实现技术及各自的优缺点。参考文献[4]主要针对权限建模过程中的权限粒度问题做了分析,并提出一个基于角色的访问控制框架。进入21世纪以后,访问控制模型的研究重点开始逐渐由集中式封闭环境转向开放式网络环境,一方面结合不同的应用,对原有传统模型做改进,另一方面,也提出一些新的访问控制技术和模型,比较著名的有信任管理、数字版权管理和使用控制模型 [5]。审计通过对数据库内活动的记录和分析来发现异常并产生报警的方式来加强数据库的安全性[6]。目前,在我国使用的商品化关系数据库管理系统大都提供了C2级的审计保护功能,但实现方式和功能侧重有所不同。周洪昊等人[7]分析了Oracle、SQL Server、DB2、Sybase的审计功能,分别从审计系统的独立性、自我保护能力、全面性和查阅能力四个方面对审计功能做出改进[7]。参考文献[8]则针对审计信息冗余、审计配置方式死板以及数据统计分析能力不足等问题,在数据库系统已有的审计模块基础上,重新设计和实现了一种新型的数据库安全审计系统。
但所有的这些工作都是从 数据库 系统的角度出发,并没有从本质上解决安全防护对数据库系统的依赖性问题,用户还是很难对数据库提供自主的安全防护功能。如果能将安全防护从数据库管理系统中彻底独立出来,针对不同的应用需求允许用户自己实现安全防护功能模块并在逻辑上加入到数据库应用系统中,这样问题也就迎刃而解了。
通过以上分析,本文提出一种独立于具体数据库、可组态的安全防护模型,并给出具体的实现方法。该模型将安全防护从数据库完全独立出来,在多数据库应用中实现集中配置安防,满足用户对于自主防护功能的需求。并在开源的嵌入式数据库产品SQLITE中做了功能测试,实验结果表明,该模型切实可行,达到了预想的效果,既能实现对系统的保护,又大大提高了系统的灵活性。
2 自主安全防护系统的设计与实现
自主安全防护系统DSS(Discretionary Safety System)的主要功能是阻止用户对信息的非法访问,在可疑行为发生时自动启动预设的告警流程,尽可能防范数据库风险的发生,在非法 *** 作发生时,触发事先设置好的防御策略,实行阻断,实现主动防御,并按照设置对所发生的 *** 作进行详细记录,以便事后的分析和追查。
21 系统结构
在DSS中,安全管理员使用角色机制对用户的权限进行管理,通过制定安全策略来设置核心部件Sensor以及访问控制部件。核心部件Sensor侦听用户的数据库 *** 作请求,采用命令映射表将不同的命令映射为系统识别的命令,提取出安全检查所需要的信息,发送到访问控制模块进行安检。安检通过了则允许用户访问数据库,否则拒绝访问,同时根据审计规则生成记录存入审计日志。
DSS作为独立的功能模块主要通过向Sensor提供数据库的调用接口的方式保障对数据库信息安全合理地访问。系统有一个默认的访问控制流程,用户也可以自己设定安全策略,系统自动生成相应访问控制流程。本文约定被访问的对象为客体,请求 *** 作的用户为主体。
22 系统实现
系统实现主要分为系统数据字典设计、用户登录与用户管理、系统相关策略制定、侦听器(Sensor)的实现、访问控制以及日志审计六部分。原数据库API信息(dll)、用户的自主防护策略作为输入,Sensor核心一方面将用户的防护策略融合在原数据库的API接口中,另一方面记录用户对数据库的 *** 作并生成日志,提供给用户做审计。用户在使用过程中不需要修改原有系统,即可实现自主防护。
Sensor由API处理模块、访问控制模块(Access Control)、Sensor核心模块(Core)、注射模块四部分组成。Core是Sensor的核心部件,主要负责拦截接口,解析并分离接口中的重要信息,使程序转入自定义的安检程序中执行安全检查。Access Control组件实现不同级别的访问控制,根据用户提供的安检信息,组态出对应的安防模块,并在合适的时候调用其进行访问控制。API(dll)主要将数据库系统提供的接口信息,转化为dll以便Sensor侦听时使用。Inject/Eject为Sensor提供远程注射的功能。
Core通过拦截对API的调用来实现定制功能。程序在调用API函数之前,首先要把API所在的动态链接库载入到程序中;然后将API函数的参数、返回地址(也就是函数执行完后,下一条语句的地址)、系统当前的环境(主要是一些寄存器的值)压入系统调用栈;接着,进入到API函数的入口处开始执行API函数,执行过程中从系统调用栈中取出参数,执行函数的功能,返回值存放在EAX寄存器中,最终从堆栈中取出函数的返回值并返回(参数压栈的顺序还要受到调用约定的控制,本文不详细介绍)。
举例说明函数调用时堆栈的情况。假设调用约定采用_stdcall,堆栈由高向低递减,API为Int func(int a, int b, int c)。
拦截主要通过HOOK API技术实现,可以拦截的 *** 作包括DOS下的中断、Windows中的API调用、中断服务、IFS和NDIS过滤等。目前微软提供了一个实现HOOK的函数库Detours。其实现原理是:将目标函数的前几个字节改为jmp指令跳转到自己的函数地址,以此接管对目标函数的调用,并插入自己的处理代码。
HOOK API技术的实质是改变程序流程。在CPU的指令集中,能够改变程序流程的指令包括JMP、CALL、INT、RET、RETF、IRET等。理论上只要改变API入口和出口的任何机器码,都可以实现HOOK。但实际实现上要复杂得多,主要需要考虑如何处理好以下问题:(1)CPU指令长度。在32 bit系统中,一条JMP/CALL指令的长度是5 B,因此只需要替换API中入口处的前5 B的内容,否则会产生不可预料的后果。(2)参数。为了访问原API的参数,需要通过EBP或ESP来引用参数,因此需要明确HOOK代码中此时的EBP/ESP的值。(3)时机问题。有些HOOK必须在API的开头,如CreateFileA( )。有些必须在API的尾部,如RECV()。(4)程序上下文内容的保存。在程序执行中会涉及修改系统栈的内容,因此注意保存栈中原有内容,以便还原。(5)在HOOK代码里尽量杜绝全局变量的使用,以降低程序之间的耦合性。通过以上的分析,整理出如图4所示的实现的流程。
DSS与传统数据库的安全防护功能相比,具有以下特点:
(1)独立于具体的数据库。这种独立性体现在:①DSS只需要数据库提供其接口信息即可工作。②支持不同标准的SQL语句,通过数据库命令映射表可将非标准的SQL语句映射为系统设置的SQL命令。③系统自身数据的物理存储是独立于数据库的。
(2)灵活性和针对性的统一。用户可以根据自己的需要配置针对特定应用的相关规则。
(3)完善的自我安全保护措施。DSS只有数据库安全管理员和安全审计员才能访问。安全管理员和安全审计员是一类特殊的用户,他们只负责安全方面的 *** 作,而不能访问数据库中的数据。这与Oracle等的数据库不同,在这些数据库中,DBA可以进行所有的 *** 作。DSS系统本身具有故障恢复能力,能使系统出现问题时恢复到一个安全的状态。
(4)完备的信息查阅和报警功能。在DSS中,本文提供了便利的设计查阅工具,方便用户对系统进行监控。另外,用户也可以自己定义报警条件和报警处理措施,一旦满足报警条件,系统就会自动地做出响应。
3 实验及结果分析
DSS的开发主要采用VS 2005实现,开发完成后在一台主频为28 GHz、内存2 GB、装有Windows 2000 *** 作系统的普通 PC机上对其进行了功能和性能的测试,使用的数据库是开源的嵌入式数据库SQLite 36。为了搭建测试环境,需要在SQLite中添加初始化系统自身的数据字典,并开发应用程序。测试内容包括:登录、用户管理、Sensor、访问控制、日志审计以及增加DSS前后数据库系统安全性变化等功能性测试和增加DSS系统后对数据库性能的影响两方面。其中,性能测试主要从时间和资源的增加情况来说明,针对不同数据库对象分别在五个级别(20 000、40 000、60 000、80 000、100 000)的数据上进行了插入和查询 *** 作测试。为了做好性能对比,在SQLite中也添加了相同的访问控制功能,记为Inline Processing。
从功能测试结果可以看出,DSS可以为数据库系统提供自主防护。从性能测试的结果中看出,查询 *** 作和插入 *** 作耗时相差比较大,这主要是SQLite工作方式引起的,在执行用户的插入 *** 作时,数据库需将内存中的数据写入磁盘数据库文件中,占用了一部分时间。而查询时,SQLite会将数据库文件部分内容缓存起来,加快了查询的速度。另外,增加DSS会对性能有略微的影响,但是它能实现对数据库系统自主保护。
本文针对传统数据库安全防护功能配置不灵活的问题,提出了一种基于HOOK技术的数据库通用安全防护系统。该系统的最大优点在于,它不受数据库自身的约束,完全独立于数据库系统,为用户提供一种按需定制的功能,不仅增加了安防配置的灵活性而且提高了通用性,可以用于不同的数据库系统中。
1数据库用户的管理,按照数据库系统的大小和数据库用户所需的工作量,具体分配数据库用户的数据 *** 作权限,控制系统管理员用户账号的使用。
2建立行之有效的数据库用户身份确认策略,数据库用户可以通过 *** 作系统、网络服务以及数据库系统进行身份确认,通过主机 *** 作系统进行用户身份认证。
3加强 *** 作系统安全性管理,数据服务器 *** 作系统必须使用正版软件,同时要有防火墙的保护。
4网络端口按需开放,根据实际需要只开放涉及业务工作的具体网络端口,屏蔽其它端口,这样可以在较大程度上防止 *** 作系统受入侵。
答:实现数据库安全性控制的常用方法和技术有:
(
l
)用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
(
2
)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如cz
级中的自主存取控制(
dac
)
,
bl
级中的强制存取控制(mac
)。
(
3
)视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
(
4
)审计:建立审计日志,把用户对数据库的所有 *** 作自动记录下来放入审计日志中,dba
可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
(
5
)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
数据库系统的安全除依赖自身内部的安全机制外,还与外部网络环境、应用环境、从业人员素质等因素息息相关,因此,从广义上讲,数据库系统的安全框架可以划分为三个层次:
⑴ 网络系统层次;
⑵ 宿主 *** 作系统层次;
⑶ 数据库管理系统层次。
这三个层次构筑成数据库系统的安全体系,与数据安全的关系是逐步紧密的,防范的重要性也逐层加强,从外到内、由表及里保证数据的安全。下面就安全框架的三个层次展开论述。
2 网络系统层次安全技术
从广义上讲,数据库的安全首先倚赖于网络系统。随着Internet的发展普及,越来越多的公司将其核心业务向互联网转移,各种基于网络的数据库应用系统如雨后春笋般涌现出来,面向网络用户提供各种信息服务。可以说网络系统是数据库应用的外部环境和基础,数据库系统要发挥其强大作用离不开网络系统的支持,数据库系统的用户(如异地用户、分布式用户)也要通过网络才能访问数据库的数据。网络系统的安全是数据库安全的第一道屏障,外部入侵首先就是从入侵网络系统开始的。网络入侵试图破坏信息系统的完整性、机密性或可信任的任何网络活动的集合,具有以下特点:
a)没有地域和时间的限制,跨越国界的攻击就如同在现场一样方便;
b)通过网络的攻击往往混杂在大量正常的网络活动之中,隐蔽性强;
c)入侵手段更加隐蔽和复杂。
计算机网络系统开放式环境面临的威胁主要有以下几种类型:a)欺骗(Masquerade);b)重发(Replay);c)报文修改(Modification of message);d)拒绝服务(Deny of service);e)陷阱门(Trapdoor);f)特洛伊木马(Trojan horse);g)攻击如透纳攻击(Tunneling Attack)、应用软件攻击等。这些安全威胁是无时、无处不在的,因此必须采取有效的措施来保障系统的安全。
从技术角度讲,网络系统层次的安全防范技术有很多种,大致可以分为防火墙、入侵检测、协作式入侵检测技术等。
⑴防火墙。防火墙是应用最广的一种防范技术。作为系统的第一道防线,其主要作用是监控可信任网络和不可信任网络之间的访问通道,可在内部与外部网络之间形成一道防护屏障,拦截来自外部的非法访问并阻止内部信息的外泄,但它无法阻拦来自网络内部的非法 *** 作。它根据事先设定的规则来确定是否拦截信息流的进出,但无法动态识别或自适应地调整规则,因而其智能化程度很有限。防火墙技术主要有三种:数据包过滤器(packet filter)、代理(proxy)和状态分析(stateful inspection)。现代防火墙产品通常混合使用这几种技术。
⑵入侵检测。入侵检测(IDS-- Instrusion Detection System)是近年来发展起来的一种防范技术,综合采用了统计技术、规则方法、网络通信技术、人工智能、密码学、推理等技术和方法,其作用是监控网络和计算机系统是否出现被入侵或滥用的征兆。1987年,Derothy Denning首次提出了一种检测入侵的思想,经过不断发展和完善,作为监控和识别攻击的标准解决方案,IDS系统已经成为安全防御系统的重要组成部分。
入侵检测采用的分析技术可分为三大类:签名、统计和数据完整性分析法。
①签名分析法。主要用来监测对系统的已知弱点进行攻击的行为。人们从攻击模式中归纳出它的签名,编写到IDS系统的代码里。签名分析实际上是一种模板匹配 *** 作。
②统计分析法。以统计学为理论基础,以系统正常使用情况下观察到的动作模式为依据来判别某个动作是否偏离了正常轨道。
③数据完整性分析法。以密码学为理论基础,可以查证文件或者对象是否被别人修改过。
IDS的种类包括基于网络和基于主机的入侵监测系统、基于特征的和基于非正常的入侵监测系统、实时和非实时的入侵监测系统等。
⑶协作式入侵监测技术
独立的入侵监测系统不能够对广泛发生的各种入侵活动都做出有效的监测和反应,为了弥补独立运作的不足,人们提出了协作式入侵监测系统的想法。在协作式入侵监测系统中,IDS基于一种统一的规范,入侵监测组件之间自动地交换信息,并且通过信息的交换得到了对入侵的有效监测,可以应用于不同的网络环境。
3 宿主 *** 作系统层次安全技术
*** 作系统是大型数据库系统的运行平台,为数据库系统提供一定程度的安全保护。目前 *** 作系统平台大多数集中在Windows NT 和Unix,安全级别通常为C1、C2级。主要安全技术有 *** 作系统安全策略、安全管理策略、数据安全等方面。
*** 作系统安全策略用于配置本地计算机的安全设置,包括密码策略、账户锁定策略、审核策略、IP安全策略、用户权利指派、加密数据的恢复代理以及其它安全选项[7]。具体可以体现在用户账户、口令、访问权限、审计等方面。
用户账户:用户访问系统的"身份z",只有合法用户才有账户。
口令:用户的口令为用户访问系统提供一道验证。
访问权限:规定用户的权限。
审计:对用户的行为进行跟踪和记录,便于系统管理员分析系统的访问情况以及事后的追查使用。
安全管理策略是指网络管理员对系统实施安全管理所采取的方法及策略。针对不同的 *** 作系统、网络环境需要采取的安全管理策略一般也不尽相同,其核心是保证服务器的安全和分配好各类用户的权限。
数据安全主要体现在以下几个方面:数据加密技术、数据备份、数据存储的安全性、数据传输的安全性等。可以采用的技术很多,主要有Kerberos认证、IPSec、SSL、TLS、***(PPTP、L2TP)等技术。
4 数据库管理系统层次安全技术
数据库系统的安全性很大程度上依赖于数据库管理系统。如果数据库管理系统安全机制非常强大,则数据库系统的安全性能就较好。目前市场上流行的是关系式数据库管理系统,其安全性功能很弱,这就导致数据库系统的安全性存在一定的威胁。
由于数据库系统在 *** 作系统下都是以文件形式进行管理的,因此入侵者可以直接利用 *** 作系统的漏洞窃取数据库文件,或者直接利用OS工具来非法伪造、篡改数据库文件内容。这种隐患一般数据库用户难以察觉,分析和堵塞这种漏洞被认为是B2级的安全技术措施。
数据库管理系统层次安全技术主要是用来解决这一问题,即当前面两个层次已经被突破的情况下仍能保障数据库数据的安全,这就要求数据库管理系统必须有一套强有力的安全机制。解决这一问题的有效方法之一是数据库管理系统对数据库文件进行加密处理,使得即使数据不幸泄露或者丢失,也难以被人破译和阅读。
我们可以考虑在三个不同层次实现对数据库数据的加密,这三个层次分别是OS层、DBMS内核层和DBMS外层。
⑴在OS层加密。在OS层无法辨认数据库文件中的数据关系,从而无法产生合理的密钥,对密钥合理的管理和使用也很难。所以,对大型数据库来说,在OS层对数据库文件进行加密很难实现。
⑵在DBMS内核层实现加密。这种加密是指数据在物理存取之前完成加/脱密工作。这种加密方式的优点是加密功能强,并且加密功能几乎不会影响DBMS的功能,可以实现加密功能与数据库管理系统之间的无缝耦合。其缺点是加密运算在服务器端进行,加重了服务器的负载,而且DBMS和加密器之间的接口需要DBMS开发商的支持。
定义加密要求工具
DBMS
数据库应用系统
加密器
(软件或硬件)
⑶在DBMS外层实现加密。比较实际的做法是将数据库加密系统做成DBMS的一个外层工具,根据加密要求自动完成对数据库数据的加/脱密处理:
定义加密要求工具加密器
(软件或硬件)
DBMS
数据库应用系统
采用这种加密方式进行加密,加/脱密运算可在客户端进行,它的优点是不会加重数据库服务器的负载并且可以实现网上传输的加密,缺点是加密功能会受到一些限制,与数据库管理系统之间的耦合性稍差。
下面我们进一步解释在DBMS外层实现加密功能的原理:
数据库加密系统分成两个功能独立的主要部件:一个是加密字典管理程序,另一个是数据库加/脱密引擎。数据库加密系统将用户对数据库信息具体的加密要求以及基础信息保存在加密字典中,通过调用数据加/脱密引擎实现对数据库表的加密、脱密及数据转换等功能。数据库信息的加/脱密处理是在后台完成的,对数据库服务器是透明的。
加密字典管理程序
加密系统
应用程序
数据库加脱密引擎
数据库服务器
加密字典
用户数据
按以上方式实现的数据库加密系统具有很多优点:首先,系统对数据库的最终用户是完全透明的,管理员可以根据需要进行明文和密文的转换工作;其次,加密系统完全独立于数据库应用系统,无须改动数据库应用系统就能实现数据加密功能;第三,加解密处理在客户端进行,不会影响数据库服务器的效率。
数据库加/脱密引擎是数据库加密系统的核心部件,它位于应用程序与数据库服务器之间,负责在后台完成数据库信息的加/脱密处理,对应用开发人员和 *** 作人员来说是透明的。数据加/脱密引擎没有 *** 作界面,在需要时由 *** 作系统自动加载并驻留在内存中,通过内部接口与加密字典管理程序和用户应用程序通讯。数据库加/脱密引擎由三大模块组成:加/脱密处理模块、用户接口模块和数据库接口模块,如图4所示。其中,"数据库接口模块"的主要工作是接受用户的 *** 作请求,并传递给"加/脱密处理模块",此外还要代替"加/脱密处理模块"去访问数据库服务器,并完成外部接口参数与加/脱密引擎内部数据结构之间的转换。"加/脱密处理模块"完成数据库加/脱密引擎的初始化、内部专用命令的处理、加密字典信息的检索、加密字典缓冲区的管理、SQL命令的加密变换、查询结果的脱密处理以及加脱密算法实现等功能,另外还包括一些公用的辅助函数。
数据加/脱密处理的主要流程如下:
1) 对SQL命令进行语法分析,如果语法正确,转下一步;如不正确,则转6),直接将SQL命令交数据库服务器处理。
2) 是否为数据库加/脱密引擎的内部控制命令?如果是,则处理内部控制命令,然后转7);如果不是则转下一步。
3) 检查数据库加/脱密引擎是否处于关闭状态或SQL命令是否只需要编译?如果是则转6),否则转下一步。
4) 检索加密字典,根据加密定义对SQL命令进行加脱密语义分析。
5) SQL命令是否需要加密处理?如果是,则将SQL命令进行加密变换,替换原SQL命令,然后转下一步;否则直接转下一步。
6) 将SQL命令转送数据库服务器处理。
7) SQL命令执行完毕,清除SQL命令缓冲区。
以上以一个例子说明了在DBMS外层实现加密功能的原理。
制定一个成功的数据库安全策略的关键在于你要了解为什么要保护数据库,保护哪个数据库,以及如何最好的保护数据以应对所有类型的威胁,遵从各种规范——如SOX、HIPAA、PCI DSS、GLBA 和欧盟法令。在最新的研究中,建议企业按照以下三点来建立完整的数据库安全策略:
1、建立一个集身份验证、授权、访问控制、发现、分类,以及补丁管理于一体的坚实基础。了解哪些数据库包含敏感数据是数据库安全战略的基本要求。企业应对所有的数据库采取一个全面的库存管理,包括生产和非生产的,并且遵循相同的安全政策给它们划分类别。所有的数据库,尤其是那些存有私人数据的数据库,应该有强的认证、授权和访问控制,即使应用层已经完成了认证和授权。缺乏这些坚实基础会削弱审计、监察和加密等其他的安全措施。
此外,如果不能每季度给所有的关键数据库打补丁,那么至少半年一次,以消除已知的漏洞。使用滚动补丁或从数据库管理系统(DBMS)的供应商和其他厂商那里收集信息,以尽量减少应用补丁的停机时间。始终在测试环境下测试安全补丁,定期运行测试脚本,以确保修补程序不影响应用程序的功能或性能。
2、使用具有数据屏蔽、加密和变更管理等功能的预防措施在建立了一个坚实和基本的数据库安全策略后,就应该开始采取预防措施,以保护重要的数据库。这样就为生产和非生产数据库提供了一个保护层。数据隐私不随着生产系统而停止,它也需要扩展到非生产环境,包括测试、开发、质量保证(QA)、分阶段和训练,基本上所有的私有数据都可以驻留。数据库安全专业人士应该评估在测试环境中或外包应用开发中用数据屏蔽和测试数据生成来保护私有数据的效果。
使用网络加密以防止数据暴露给在监听网络流量或数据静止加密的窥视者(他们关注存储在数据库中的数据)。当数据针对不同的威胁,这些加密方法可以实现相互独立。通常情况下,也不会对应用程序的功能有影响。
保护关键数据库的结构要按照标准化的变更管理程序来进行。在过去,对生产环境中的计划或其它数据库进行变更时需要关闭数据库,但新版本的数据库管理系统允许在联机时进行这些更改,这就带来了新的安全风险。一个标准化的变更管理程序能确保只有管理员在得到管理部门批准后才能改变生产数据库并且跟踪所有数据库的变更。机构还应该更新自己的备份和可行性计划,以处理数据或元数据因这些变更而发生的改变。
3、建立具有审计、监测和漏洞评估功能的数据库入侵检测系统当重要数据发生意外变化或者检测到可疑数据时,有必要进行一个快速的调查来查看发生了什么事情。数据库里的数据和元数据可以被访问、更改甚至是删除,而且这些都可以在几秒钟的时间内完成。通过数据库审计,我们能够发现“是谁改变了数据”和“这些数据是什么时候被改变的”等问题。为了支持之前提到的管理条例标准,安全和风险管理的专业人士应该追踪私人数据的所有访问途径和变化情况,这些私人数据包括:xyk卡号、社会安全卡卡号以及重要的数据库的名称和地址等信息。如果私人数据在没有授权的情况下被更改或者被访问,机构应该追究负责人的责任。最后,可以使用漏洞评估报告来确定数据库的安全空白地带,诸如弱效密码、过多的优先访问权、增加数据库管理员以及安全群组监测。
牢记安全政策、安全标准、角色分离和可用性
数据库安全策略不仅关注审计和监测,它也是一个端到端的过程,致力于减少风险、达到管理条例的要求以及防御来自内部和外部的各种攻击。数据库安全需要把注意力更多地放在填补安全空白、与其他安全政策协作以及使安全方式正式化上。在草拟你的安全策略时,要使你的数据库安全政策与信息安全政策一致;要注意行业安全标准;要强调角色分离;要清楚描述出数据恢复和数据使用的步骤。
可以有效监控数据库访问活动,准确掌握数据库系统的安全状态,及时发现违反数据库安全策略的 *** 作,并实时报警、记录,实现对安全事件的定位分析、事后追查取证,全面保障数据库的安全。
Oracle是关系型数据库管理系统 它功能强大 性能卓越 在当今大型数据库管理系统中占有重要地位 在正常情况下 Oracle数据库会保证数据的安全 稳定 为用户提供正确的数据 但由于计算机系统的故障(硬件故障 软件故障 网络故障和系统故障)影响数据库系统的 *** 作 影响数据库中数据的正确性 甚至破坏数据库 使数据库中全部或部分数据丢失 整个系统都将处于瘫痪状态 因此 如何保证Oracle数据库的安全就成为整个系统安全的重要组成部分
Oracle数据库的安全策略包括数据库的备份和恢复 用户角色管理
一 数据库备份所使用的结构
Oracle数据库使用几种结构来保护数据 数据库后备 日志 回滚段和控制文件
数据库后备是由构成Oracle数据库的物理文件的 *** 作系统后备所组成 当介质故障时进行数据库恢复 利用后备文件恢复毁坏的数据文件或控制文件
每一个Oracle数据库实例都提供日志 记录数据库中所作的全部修改 每一个运行的Oracle数据库实例相应地有一个在线日志 它与Oracle后台进程LGWR一起工作 立即记录该实例所作的全部修改 归档(离线)日志是可选择的 一个Oracle数据库实例一旦在线日志填满后 可形成在线日志归档文件 归档的在线日志文件被唯一标识并合并成归档日志
回滚段用于存储正在进行的事务(为未提交的事务)所修改值的老值 该信息在数据库恢复过程中用于撤消任何非提交的修改
控制文件 一般用于存储数据库的物理结构的状态 控制文件中某些状态信息在实例恢复和介质恢复期间用于引导Oracle
二 在线日志
一个Oracle数据库的每一实例有一个相关联的在线日志 一个在线日志由多个在线日志文件组成 在线日志文件(online redo log file)填入日志项(redo entry) 日志项记录的数据用于重构对数据库所作的全部修改
三 归档日志
Oracle要将填满的在线日志文件组归档时 则要建立归档日志(archived redo log) 其对数据库备份和恢复有下列用处
数据库后备以及在线和归档日志文件 在 *** 作系统和磁盘故障中可保证全部提交的事物可被恢复
在数据库打开和正常系统使用下 如果归档日志是永久保存 在线后备可以进行和使用
数据库可运行在两种不同方式下 NOARCHIVELOG方式或ARCHIVELOG 方式 数据库在NOARCHIVELOG方式下使用时 不能进行在线日志的归档 如果数据库在ARCHIVELOG方式下运行 可实施在线日志的归档
四 Oracle的备份特性
Oracle备份包括逻辑备份和物理备份
逻辑备份
数据库的逻辑备份包含读一个数据库记录集和将记录集写入文件
( )输出(Export)输出可以是整个数据库 指定用户或指定表
( )输入(Import)输入将输出建立的二进制转储文件读入并执行其命令
物理备份
物理备份包含拷贝构成数据库的文件而不管其逻辑内容
Oracle支持两种不同类型的物理文件备份 脱机备份(offline backup)和联机备份(online backup)
( ) 脱机备份
脱机备份用在当数据库已正常关闭 数据库处于 offline 时 要备份下列文件
所有数据文件
所有控制文件
所有联机日志
init ora(可选的)
( ) 联机备份
联机备份可用来备份任何运作在ARCHIVELOG方式下的数据库 在这种方式下 联机日志被归档 在数据库内部建立一个所有作业的完整记录
联机备份过程具备强有力的功能 第一 提供了完全的时间点(point in time)恢复 第二 在文件系统备份时允许数据库保持打开状态
备份方式特性比较
五 Oracle数据库的角色管理
Oracle数据库系统在利用角色管理数据库安全性方面采取的基本措施有
通过验证用户名称和口令 防止非Oracle用户注册到Oracle数据库 对数据库进行非法存取 *** 作
授予用户一定的权限 限制用户 *** 纵数据库的权力
授予用户对数据库实体的存取执行权限 阻止用户访问非授权数据
提供数据库实体存取审计机制 使数据库管理员可以监视数据库中数据的存取情况和系统资源的使用情况
采用视图机制 限制存取基表的行和列集合
六 Oracle数据库的安全策略
由于Oracle数据库备份有三种方式 每种方式具有不同的恢复特性 因此应集成数据库与文件系统备份 集成逻辑备份和物理备份
(一) 备份策略
在 *** 作系统级别 使用大容量磁盘阵列 通过磁盘映像技术使每一个数据库文件自动分布于每个物理磁盘 这样 当某个磁盘出现物理损坏时 *** 作系统会自动引发映像磁盘来取代失效的磁盘 保证数据库的正常运行
在多个不同的物理磁盘上保持多个控制文件的备份 控制文件在数据库恢复期间用于引导Oracle 因此保持多个控制文件的备份 可以确保在出现磁盘故障后 能有可用的控制文件用于数据库恢复
使数据库运行在ARCHIVELOG(归档)方式下 归档日志存放于另一映像的逻辑磁盘上 每晚进行一次联机备份 *** 作 备份所有数据文件 所有归档日志文件 一个控制文件 每周进行一次输出(Export) *** 作
(二) 恢复策略
实例失败
从实例失败中恢复是自动进行的 实例失败一般是由服务器失败引起的 当数据库实例失败后 重新启动服务器 启动数据库 Oracle检查数据文件和联机日志文件 并把所有文件同步到同一个时间点上
磁盘失败
如果丢失的是控制文件 只要关闭数据库 从保留有控制文件的地方拷贝一份即可
如果丢失的是数据文件 可用前一天晚上的联机备份进行恢复 步骤如下
)从备份中把丢失的文件存在原来位置
)加载数据库
)恢复数据库
)打开数据库
错误删除或修改对象
在这种情况下 一般希望能追溯返回到错误发生前的那个时间点上 这叫做时间点恢复 完成恢复的步骤如下
)从当前数据库输出(Export) 输入(Import)到备用数据库 使备用数据库与当前数据库保持一致
)向前滚动备用数据库到错误发生前的那个时间点
)从备用数据库输出受错误影响的逻辑对象
)使用上一步产生的输出文件输入那些受影响的对象到当前数据库
(三) 用户角色管理
对所有客户端按工作性质分类 分别授予不同的用户角色
对不同的用户角色 根据其使用的数据源 分别授予不同的数据库对象存取权限
lishixinzhi/Article/program/Oracle/201311/16847
以上就是关于数据库自主安全防护如何实现 数据库自主安全防护技术介绍【详解】全部的内容,包括:数据库自主安全防护如何实现 数据库自主安全防护技术介绍【详解】、保证数据库安全的一般方法包括哪四种、实现数据库安全性保护的常用方法和技术等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)