数据库系统安全

2024-07-23

数据库系统安全(精选12篇)

数据库系统安全 篇1

摘要:数据库存储着大量的数据和信息,被广泛地应用于各种信息系统,这些信息来自于各个地区、各行各业,其中不乏一些重要的信息资源,因此,数据库已成为最让攻击者趋之若鹜的目标,其安全问题可以说是构成信息系统安全的最关键环节。该文围绕数据库的安全性问题的两个方面:数据库数据的安全性和数据库系统防止非法用户侵入,提出了一些安全性策略。

关键词:数据库,备份,存取,加密

目前,随着计算机技术的迅速发展,特别是网络的发展,数据库已经广泛的应用到了各个领域,随之而来的是安全事件的日益增多,信息安全的重要性也越来越凸显出来。特别是数据库在政府、金融、军队等业务领域等到越来越广泛的应用,“信息战”、“电子战”已经成为国与国之间、商家与商家之间的一种重要的攻击与防卫手段,这些数据库中存储的大量的信息资源,让数据库日益成为重要的攻击目标,所以数据库的安全性能至关重要。

数据库系统的安全性问题包括两个方面:1)数据库数据的安全:应能确保当数据库数据存储媒体被破坏时,或当因数据库用户误操作以及其他原因造成数据库系统Down Time时,数据库数据信息不至于丢失。2)数据库系统防止非法用户侵入:应尽最大限度的发现并堵住潜在的各种漏洞,防止非法用户利用他们侵入数据库系统,获取信息资源。

1 数据库数据的安全

当今时代,数据资源已经成为信息社会发展的基础,越来越多的人认识到信息系统和数据安全的重要性。但各种各样的原因会造成这些数据的损坏或丢失,比如存储这些数据的设备会因发生故障而引起数据的丢失;人为操作失误,应用程序出错以及病毒发作,黑客攻击等也都可能导致数据的损失,这些数据的丢失将对我们的工作、生活等各个方面产生重要的不良影响。

要防止数据丢失的发生,我们可以通过提高相关人员的操作水平和建立严格的操作制度,购买高质量的设备等来满足数据库的安全需要。但最有效的方法在于制定合理的数据备份制度,实施完善的数据备份策略以及采用完整的数据备份措施。

1.1 备份

数据备份就是保存数据的副本,它是预防灾难系统崩溃丢失的最好保护措施。数据备份最好的介质有磁带,有容错能力的磁盘阵列(RAID),光学存储设备等。

备份时影响数据安全的因素很多,其中有物理方面、备份权限设置、密码保管、备份软件和数据的恢复操作等。为了提高备份的安全性要采取一定的措施。

1.1.1 增进物理安全

首先,强化本地与异地的物理安全与制度管理,减少人员与备份设备和介质接触的机会,对操作维护人员的操作过程进行审核。其次,打印并异地保存备份操作的文档,经常整理并归档备份,把备份和操作手册的副本与介质共同异地保存。最后,对介质的废弃处理有明确的规定,如对介质安全低级格式化处理,有条件的可采用物理和化学的方法分解处理后废弃。另外还需要考虑到废弃物的去向与用途等。

1.1.2 实施密码及策略

备份内容的安全可采用密码保护,常用的有备份前的数据加密与备份时对备份集的加密两种。

备份前加密是利用操作系统加密或采用专用的加密软件对数据进行加密,备份操作系统时再备份加密后的文件。这样记录在介质上的就是密文了,只有打开权限的人在浏览中看到的是明文,即使恢复时不恢复权限其他人也是无法看到真正内容的。

备份密码的长度与复杂程度也是关键,密码应该具有一定的复杂性。实践证明密码大于8位是较安全的。

1.1.3 选好并用好备份软件

应对备份软件进行系统兼容性和安全性评估,选择经过证明的,与系统兼容性强,安全性高的备份软件。备份软件应具有病毒过滤功能以防止病毒的扩散。该软件能够实现打开文件备份与数据的备份,能够完成计划备份,实现无人值守功能。

1.1.4 正确分配备份人员的权限

一般备份的工作至少由二人完成,备份操作员和备份日志管理员。另外,为了数据安全也可以加入高层管理人员,这些人员中仅备份操纵员需要是IT人员。

在下面的方案中,备份工作由三人完成:高层管理人员,备份操纵员和备份日志管理员。备份密码分为两部分,由高层管理人员和备份日志管理人员分别保管其中的一部分。高层管理人员负责保存密码的前一部分,并审核数据恢复的日志。备份操作员完成每日的备份工作,完成介质异地存储,查看备份日志,不保存备份密码,与其他人完成备份策略的设定。备份日志管理员审核与管理每日的备份与恢复操作日志,保存后一部分的备份密码。

1.1.5 安装防火墙和入侵检测系统

采用专用的备份网络以减少备份对系统资源的占用,并从物理上隔离外网的访问,可增强备份系统的安全性。安装防火墙,并及时更新防病毒代码和调整防火墙的策略,可有效地防止黑客与病毒对系统的破坏。还有,安装入侵检测系统,不仅可以使工作人员对黑客的攻击及时采取对策,又能有效防止内部员工对资源的滥用,并能再现系统被攻击的历史,为日后的调查取证提供帮助。

1.2 数据加密

密码作为解决信息安全的关键技术具有不可替代的作用。随着计算机网络不断渗透到各个领域,利用密码变换将明文变换成只有合法者才能解读的密文,这是密码的最基本的功能。数据库库系统,担负着存储和管理关键业务数据和信息的任务。每个信息系统都要保证其安全性和保密性。一般而言,数据库系统提供的安全控制的措施能满足一般的数据库应用,但对于一些重要部门或敏感领域的应用,仅有这些是难以完全保证数据的安全性的。因此有必要对数据库中存储的重要数据进行加密处理,以强化数据存储的安全保护。

数据加密是防止数据库中存储的信息被有意或无意地篡改、泄露的有效手段,与传统的通信网络加密技术相比,由于数据保存的时间要长得多,对加密强度的要求也更高。而且,由于数据库中数据是多用户共享,对加密和解密的时间要求也更高,要求不会明显降低系统性能。

为防止密码被破解,采用先进的加密技术显得非常重要了。因此采用DES、密码反馈等先进的加密技术来提高安全性是很有必要的。在对数据库文件密码、数据库字段说明部分加密时要把它们作为一个整体加密。

1.3 反复制

复制功能是操作系统提供的,真正的“反复制”需要操作系统的功能支持。这里的“反复制”是指除非数据库文件拥有者明确告诉数据库管理系统要复制一个数据库文件副本,否则非法用户既使用操作系统提供的复制功能获得了一个副本,并且有数据库密码,数据库也无法正确打开。这一功能要靠数据库管理系统实现,它能在数据库打开和关闭时对数据库文件进行特殊处理。

数据库文件反复制能力的实现思想是:1)数据库管理系统在存储数据库文件时,用本地计算机的一些硬件信息及用户密码加密数据库文件的文件特征说明部分和字段说明部分;2)数据库管理系统在打开数据库文件时,自动调用本地计算机的一些硬件信息及用户密码,解密数据库文件的文件特征说明部分和字段说明部分;3)如果用户要复制数据库文件,则在关闭数据库文件时,进行相应的设置使数据库管理系统不进行上述两个过程。整个实现过程如图1所示。

这一安全策略的采用,可使数据库文件具有以下的安全性:1)密码不可能被猜解。因为用户密码只是加密密匙和解密密匙的一部分,所以即使非法用户给出了正确的用户密码,数据库文件也无法在别的计算机或路径中正确解密。2)密码很难被破解。由于加密的内容较少,在加密时就可以采用算法复杂的加密算法保护密码。3)可以避免非法用户还原密码数据区或重构数据库文件头。因为数据库文件的文件特征说明部分和数据库字段说明部分都已被加密且作为一个整体加密,所以非法用户很难收集到重构文件头的必要信息。4)数据库文件的安全不依赖于操作系统和数据库管理系统。

2 数据库系统防止非法用户侵入

为了保护数据库系统免受威胁的影响,达到其基本的安全要求,应当采取合理的安全对策。这些安全策略要能实现数据库系统安全的完整性、保密性和可用性。采取的安全策略一般为:安全管理、用户管理、存取控制、隐通道分析技术等等。

2.1 安全管理

绝大多数数据库管理系统采用的是由数据库管理员DBA负责系统的全部管理工作(包括安全管理)。显然,这种管理机制使得DBA的权力过于集中,存在安全隐患。在安全管理方面可以采用三权分立的安全管理体制:系统管理员分为数据库管理员DBA,数据库安全管理员SSO,数据库审计员Auditor三类。DBA负责自主存取控制及系统维护与管理方面的工作,SSO负责强制存取控制,Auditor负责系统的审计。这种管理体制真正做到三权分立,各行其责,相互制约,可靠地保证了数据库的安全性。

2.2 用户管理

用户需要访问的数据库管理系统、数据库系统、操作系统、文件系统以及网络系统等在用户管理方面非常相似,采用的方法和措施也十分近似。在一个多用户系统中,进而在网络环境下,识别授权用户永远是安全控制机制中最重要的一个环节,也是安全防线的第一个环节。

在这里的用户管理包括标识和鉴别。标识是指用户向系统出示自己的身份证明,最简单的方法是输入用户名和口令字。而鉴别则是系统验证用户的身份证明。身份认证是安全系统最重要而且最困难的工作。

标识过程和鉴别过程容易混淆。具体而言,标识过程是将用户的用户名与程序或进程联系起来;而用户的鉴别过程目的在于将用户名和真正的合法授权的用户相关联。

2.3 隐通道分析技术

尽管自主和强制访问控制限制了系统中的信息只能由低安全级主体向高安全级主体流动,低安全级主体仍然可以通过其他方式向高安全级主体发送信息,隐通道就是其中的一种。隐通道是系统的一个用户以违反系统安全策略的方式传送信息给另一用户的机制。它往往通过系统原本不用于数据传送的系统资源来传送信息,并且这种通信方式往往不被系统的访问控制机制所检测和控制。隐通道包括存储隐通道与定时隐通道。隐通道的发送者和接收者之间事先约定好某种编码方式,并使用系统正常操作。如果隐通道的发送者直接或间接地修改资源属性,另一主体(接收者)直接或间接地读取这个属性的变化时,这个隐通道就是存储隐通道。如果一个隐通道是一个主体,通过调整系统资源(如CPU)的使用时间影响了另一个主体实际的响应时间,从而发送信息给另一主体时,这个隐通道是定时隐通道。尽管高安全级的用户有可能利用隐通道传送信息给低安全级的用户,但隐通道的主要潜在威胁是它有可能被特洛伊木马所利用。

3 总结

数据库已经成为人们日常工作和生活中不可缺少的重要组成部分,同时,数据库的安全问题也逐步的引起了大家的关注。一个完整的数据库安全体系,并不是人们传统意义上通过简单的密码或者口令加密就能过完成的,数据库的安全涉及到了企业的管理层,执行层,技术层等多方面的协调工作,这也就对数据库安全提出了更高的要求。完善的管理制度,稳定的硬件设备和成熟的软件加密,是构成数据库安全的核心内容。数据库安全问题是一个长期的解决过程,需要不断的投入和改善各个环节,本文只是从理论上对数据库安全做了一些简单的介绍,大家可以在本文的基础上多研究相关资料,掌握更多的数据库安全知识。参考文献:

参考文献

[1]Hogoboom K.Sybase系统管理员手册[M].北京:机械工业出版社,1998.

[2]于慧龙,解玲.基于保护轮廓的数据库系统安全性[J].信息网络安全,2002(7).

[3]田婕.谈数据库安全性策略[J].计算机安全,2003(6).

[4]何敏.重视数据库安全[J].计算机安全,2002(4).

[5]姚志强.子密钥数据库安全加密算法研究[J].中国安全科学学报,2007,17(1).

[6]朱海卫.应用系统中数据库安全性研究及实现[D].北京:北京邮电大学,2006.

数据库系统安全 篇2

由于Oracle数据库备份有三种方式,每种方式具有不同的恢复特性,因此应集成数据库与文件系统备份,集成逻辑备份和物理备份。

一、备份策略

1.在操作系统级,使用大容量磁盘阵列,通过磁盘映像技术使每一个数据库文件自动分布于每个物理磁盘。这样,当某个磁盘出现物理损坏时,操作系统会自动引发映像磁盘来取代失效的磁盘,保证数据库的正常运行。

由于我们使用的是双服务器,因此在另一服务器上保留一个备份数据库。备份数据库与正在使用的数据库具有相同的参数状态,这样在数据库故障中,只需作必须的最少恢复,最大限度地缩短了恢复时间。

在多个不同的物理磁盘上保持多个控制文件的备份。控制文件在数据库恢复期间用于引导Oracle,因此保持多个控制文件的备份,可以确保在出现磁盘故障后,能有可用的控制文件用于数据库恢复。

使数据库运行在ARCHIVELOG(归档)方式下,归档日志存放于另一映像的逻辑磁盘上。

每晚进行一次联机备份操作,备份所有数据文件、所有归档日志文件、一个控制文件。

每周进行一次输出(Export)操作。

二、恢复策略

1.实例失败

从实例失败中恢复是自动进行的。实例失败一般是由服务器失败引起的,当数据库实例失败后,重新启动服务器,启动数据库,Oracle检查数据文件和联机日志文件,并把所有文件同步到同一个时间点上,

2.磁盘失败

如果丢失的是控制文件,只要关闭数据库,从保留有控制文件的地方拷贝一份即可。

如果丢失的是数据文件,可用前一天晚上的联机备份进行恢复,步骤如下:

1)从备份中把丢失的文件存在原来位置。

2)加载数据库

3)恢复数据库

4)打开数据库

3.错误删除或修改对象

在这种情况下,一般希望能追溯返回到错误发生前的那个时间点上。这叫做时间点恢复。完成恢复的步骤如下:

1)从当前数据库输出(Export),输入(Import)到备用数据库,使备用数据库与当前数据库保持一致。

2)向前滚动备用数据库到错误发生前的那个时间点。

3)从备用数据库输出受错误影响的逻辑对象。

4)使用上一步产生的输出文件输入那些受影响的对象到当前数据库。

MILY: 宋体; mso-bidi-font-family: 宋体“>三、用户角色管理

1.对所有客户端按工作性质分类,分别授予不同的用户角色。

2.对不同的用户角色,根据其使用的数据源,分别授予不同的数据库对象存取权限。

基于以上的安全策略,可以防止非法用户访问数据库,限制合法用户操纵数据库的权限;可以使数据库在故障发生后,不会丢失任何数据,并能使数据库迅速恢复到故障发生前的那一时间点上,最大限度的保证数据的安全和整个系统的连续运行。

数据库系统安全 篇3

关键词:数据库安全代理系统结构分析

0引言

随着信息时代的到来,各种信息爆炸式发展并积累着,这涉及到人们日常生活、企事业单位的管理、各种科研活动以至国家的宏观经济调控等等各个方面。采用计算机对各种信息作为数据进行管理成为高效科学的手段,这也促进了计算机数据库的发展。目前,基于计算机网络的系统正得到越来越广泛的应用,计算机网络的开放性和信息的安全性之间的矛盾日益突出。基于网络的数据库访问安全问题,即数据库远程访问安全问题成为研究热点问题,本文针对信息系统中基于广域网的数据库访问带来的非法访问、黑客攻击、数据的截取、篡改等安全问题提供了建立一个安全代理系统代理对数据库的访问的思路,并对其中整个系统结构进行分析。

1数据库安全代理访问系统结构

为了达到安全访问数据库的目的,在传统的数据库访问方式中加入加密和认证安全技术以及防火墙技术。形成新的数据库访问结构。而新加入的模块以代理的形式在起作用。

1.1总体系统结构数据库安全访问代理用来提供用户身份认证和数据库访问服务并提供了网络传输加密服务。所有的客户方的数据库访问请求都通过数据库安全访问代理进行转发。客户方数据访问代理用于接收所有的客户应用数据库访问请求(包括数据库客户的连接建立和连接断开请求),并负责向数据库客户传送数据库访问的结果。数据库访问请求是按照协议格式化为数据报提供给数据加密,认证客户端,而数据库访问结果是按照协议格式由数据加密/认证客户端提供。数据加密认证客户端完成客户端的数据加密和认证工作,同服务器端的数据加密,认证服务器一起完成强大的数据加密功能保障数据安全。数据加密,认证服务器接收通过广域网f或者是局域网)传输的客户端发出的数据库访问请求数据报,这个请求是经过数据加密,认证客户端加密的。解密后的数据传递给数据库访问代理服务器。然后将数据库访问代理服务器返回的结果加密通过网络回送客户端。

可以看到代理系统将广域网包含在内部。广域网是数据库访问中的最薄弱环节,容易引起各种安全问题。采用代理后广域网中传输的是加密后的数据,配合认证签名技术可以保证数据不被窃取篡改,极大的提高了系统的数据安全性。数据库访问代理服务器主要用于向数据库服务器提出所代理客户的数据库访问请求,并负责接受应答,执行真正的数据库操作。

1.2安全访问代理的中间件特点数据库安全访问代理处在应用和数据库之间,起一个数据库中间件的作用和结构。可以在代理系统中,对数据库的访问请求进行控制管理,配合数据库的特点,达到发挥最大数据库性能的目的,例如建立数据库连接池。这种模型完全克服了传统的客户,服务器模型的缺点,具有可重用性、灵活性、可管理性、易维护性等一系列优良的特性。远程过程调用中间件(开PC,Remote Proeedure Call)在客户,服务器计算方面,比数据库中间件又迈进了一步。即C的灵活特性使得它有比数据库中间件更广泛的应用。它可以应用在更复杂的客户/服务器计算环境中。

1.3安全访问代理的代理作用之所以称为代理是因为系统接收数据库应用的数据库访问请求,把请求映射到代理系统对于数据库的访问,而系统不对这些请求进行过于复杂的处理。同其它代理系统一样,这种代理具有能够加入安全控制的特点,同时代理系统对外接收数据库访问请求,而数据库系统可以只接受代理的访问请求,起到隔离和安全保护作用。另一个重要特点是,可以加入到己经开发应用的信息系统中,极大提高原有系统的安全性能而不需要重新开发。

1.4安全访问代理的防火墙作用现在网络的一个现状是黑客的攻击广泛存在。攻击后果可以是窃取信息、使系统瘫痪或者造成网络堵塞。数据库安全访问代理可以起应用级网关类别的防火墙作用,代理服务器而不是数据库暴露在广域网中,对数据库的访问都是通过代理服务器来完成。代理服务器采用防火墙技术对抗黑客的各种攻击,以及配合数据加密和身份认证技术,使系统达到极大的安全要求。数据库和代理服务器处于一个局域网之中,不会受到广域网用户的访问或者攻击,同时数据库的原有安全措施在起作用。

1.5安全代理访问系统采用SSL加密认证技术代理系统中的数据加密和身份认证及签名采用SSL技术来完成。代理系统中的数据加密和身份认证及签名采用SSL技术来完成。应用程序通常使用IPC(Interporcess Communications Facilty)与不同层次的安全协议打交道,在不同传输层协议中工作。最流行的工PC界面是Bad-sockets和TLI。在Unix系统V命令里可以找到。在Intemet中提供安全服務的首先一个想法便是强化它的IPC界面,如BSD Sockets等,具体做法包括双端实体的认证,数据加密密钥的交换等。

1.6安全代理访问系统形成多层结构为了克服由于传统客户/服务器模型的这些缺陷给系统应用带来的影响,一种新的结构出现了,这就是三层(N层)客户,服务器模型。三层客户,服务器结构构建了一种分割式的应用程序。系统对应用程序进行分割后,划分成不同的逻辑组件,主要分为三层:用户服务层,业务处理层,数据服务层。系统中由于安全访问代理的加入而形成多层结构。安全代理形成独立的一层,与其它层通过标准的数据库访问接口,这就提供了极大的灵活性,每一层的改变可以不影响其它层。这也很大程度上降低了数据安全访问代理的设计复杂性。

1.7安全代理访问系统采用ODBC技术ODBC之所以能够操作众多的数据库,是由于当前绝大部分数据库全部或部分地遵从关系数据库概念,ODBC看待这些数据库时正是着眼了这些共同点。ODBC基本思想是提供独立程序来提取数据信息,并具有向应用程序输入数据的方法。ODBC接口的优势之一为互操作性,程序设计员可以在不指定特定数据源情况下创建ODBC应用程序。从应用程序角度方面,为了使每个驱动程序和数据源都支持相同的ODBC函数调用和SQL语句集,ODBC接口定义了一致性级别,即ODBCAPI一致性和ODBC SRL语法一致性。

1.8安全代理访问系统对于应用的透明性对于应用的透明性是指对应数据库应用来说,采用或者不采用数据库安全访问代理,对于数据库的访问方法没有区别。技术的透明性可以达到一个向上继承的作用,这也是很大的优点。对应用的透明性是通过采用标准的数据库访问技术来达到的,数据库应用的每一个数据库访问操作经过访问代理系统映射为同样的数据库访问实施于数据库,对AP工调用进行一对一的映射,所以原来开发系统不需要改动。也为系统的方案设计提供了灵活性。

1.9安全代理访问系统中数据的压缩传输数据库安全访问代理中,数据的传输要通过工nternet来完成。带宽相对于局域网来说要窄的多,造成数据库访问的瓶颈,影响速度。对于使用很广泛的拨号上网方式来说,速度问题更为重要。所以考虑采用数据压缩传输。数据的压缩是作为SSL的一部分存在的,采用的主要压缩技术是Zlib。通常的压缩比可以达到2:1—5:1。

2结语

数据库系统安全 篇4

随着社会科技的不断发展与进步,互联网得到了飞速发展,计算机技术也得到了广泛的应用,但另一方面信息的安全问题却日益突出,信息安全技术应运而生并得到了极大的发展。信息安全技术的核心是数据加密技术,它不仅能够加解密数据,而且还能够鉴别、认证数字签名等,从而使在网络上传输的数据的完整性、确认性及机密性得到了切实的保证。本文将DES算法和RSA算法的优点结合起来,将一个数据加密系统设计了出来,同时将Java安全软件包充分利用起来,实现了数字签名。

1 数据加密技术

1.1 私钥加密体制

私钥加密体制指在加密和解密时所使用的密钥是相同的,由两种类型,分别是分组密码和序列密码。分组密码对明文进行分组的依据是其固定的长度,用同一个密钥加密每一个分组,从而促进等长的密文分组的产生。序列密码又称流密码,因为它将明文数据一次加密一个字节或比特。和序列密码相比,分组密码使用于软件实现,并且具有较快的加密速度,因此在人们的日常工作和生活中得到了极为广泛的运用。

1.2 公钥加密体制

1976年,W.Diffie和Hellman最早提出了公钥体制,利用两个不同的密钥分开加密和解密的能力是该体制最大的特点。公开密钥在加密信息中得到了应用,而使人密钥则在解密信息中得到了应用。通信双方可以直接进行保密通信,而不需要事先交换密钥。同时,在计算机上也不能实现从公开的公钥或密文中将明文或密钥分析出来。

2 数据库“敏感”数据安全加密系统设计

2.1 数据库“敏感”数据安全加密系统的体系结构

该加密系统是在目前较为成熟的仿真网络体系结构HLA的基础上发展起来的,由两部分组成,分别是CA服务器端和客户端。在联邦成员中嵌入加密客户端,可以对各联邦成员之间的“敏感”数据进行加密,CA服务器则可以生成、分发及管理密钥。联邦成员和CA服务器之间及各个联邦成员之间进行通讯的途径是HLA-RTI接口。加密系统体系结构如图1所示。

2.2 数据库“敏感”数据安全加密系统的功能模块

CA服务器端与加密客户端组成了加密系统的功能模块。其中,CA服务器端的主要功能是认证客户端的身份、生成、存储并分发RSA密钥等。密钥是在用户口令字和大数分解理论的基础上生成的,每次有一对密钥(公钥和私钥)产生,用于对会话密钥进行加密和数字签名,也就是对称加密算法AES或DES、3DES算法的密钥;将生成的密钥对和申请者的用户名联系起来,促进一个关联目录的生成,以方便客户端查找即是密钥的存储;依据客户端的请求信息,在关联目录中将与之相匹配的信息查找出来,如果找到的话,就把密钥向请求的客户端发送即是密钥的分发。

加密客户端的主要功能是完成对文件的加密和解密、传输实时数据的加密和解密密文、管理和传输对称加密算法的密钥及和CA服务器交互等。其中,对称加密算法AES或DES、3DES及混沌序列加密算法的密钥均在密钥生成模块生成;密钥的加密传输模块主要是使会话密钥的安全得到切实的保障,也就是说,用公钥密码算法RSA的公钥对会话密钥进行加密,然后一起传输加密后的密钥和密文,在解密端,为了得到会话密钥,可以使用TSA的私钥来进行解密;实时数据的加密和解密模块的基础是混沌特性,在加密或解密实时数据时利用混沌序列密码算法。加密系统的功能模块划分如图2所示。

2.3 数据加密模块的设计与实现

混合加密体制是数据加密系统所使用的,它将对称密码算法具有的较快的贾母速度、较高的加密强度、较高效的加解密大量数据等能力进行了充分的运用;公钥密码算法具有较高的加密强度,密钥便于管理。为了弥补传统密码算法中不便于传递密钥的缺点,可以加密明文的密钥。将二者结合起来,可以实现数据传输的安全性。

2.3.1 3DES算法的设计与实现

目前,虽然DES具有较为广泛的应用范围,并且人们可以很方便地从公开渠道获取,但是因为DES只有56位的密钥长度,易于攻击,其加密强度已经远远不能满足现代安全的需要,因此可以将两个56位的密钥混合起来使用来完成加解密,这样密钥就达到了112位的长度,从而大大增强了加密强度,这就是3DES。3DES的算法原理如图3所示。

图3中密钥K1、K2是随机产生的。

三重DES算法的实现主要包括DES类和THREE类两个类。其中DES类的主要函数是public static byte[]encrypt(byte[]oword64,int[][]i Sub Keys)//加密;public static byte[]decrypt(byte[]b Cipher-text,int[][]Sub Keys)//解密。THREE类的主要函数是public static byte[]encrypt(byte[]oword,int[][]Sub Keys1,int[][]Sub Keys2)//解密;public static byte[]decrypt(byte[]sword,int[][]Sub Keys1,int[][]Sub Keys2)//加密,返回明文。

2.3.2 RSA算法的设计与实现

大数分解是RSA的安全性赖以存在的基础。公钥和私钥都是两个大素数的函数。RSA算法的实现主要包括三个部分,即生成密钥、加密数据和解密数据。在变量的定义方面,在对p、q、n、e、d、t进行定义时,利用Java中的大数Big Interger();在密钥的生成方面,利用publi boolean generate PQNTED(Stringe);在加密数据方面,利用public String Encrypt(String msg、Big Integer pbkey、Big Intiger n),在加密的过程中,在对所要加密的字节数组进行分组时,可以利用转换函数copy Bytes();在解密数据的过程中,利用之前产生的公钥n与私钥d。把所要解密的数据与公钥n与私钥d作为参数向加密函数public String Decrypt(String msg,Big Integer prikey Big Integer n)传递。

RSA只有在大数运算的基础上才能实现,只有这样才能执行大量的大数加减乘除和模逆、模幂运算。这就导致相对于其他特别是对称密钥算法来说,RSA的实现效率十分低下。本文设计的系统中生成的DES密钥用RSA替代的原因也就是这种速度上的差异。

本文设计的数据库“敏感”数据安全加密系统,将数据的加密技术和签名技术综合了起来,一方面解决了密钥的管理问题,另一方面也使数据的不可否认性及完整性得到了切实的保障,同时也将该系统网络通信的程序设计和界面设计方法提供了出来。本系统将集中主要的加密算法进行了具体的分类,使代码的高效性、可扩展性等得到了有效地增强,有利于以后的再次开发。

摘要:本文首先简要阐述了数据加密技术,然后从数据库“敏感”数据安全加密系统的体系结构、功能模块及数据加密模块的设计与实现三个方面,对数据库“敏感”数据安全加密系统设计进行了相关的研究。

关键词:数据库,敏感数据,安全加密系统,设计

参考文献

[1]胡向东,魏琴芳.应用密码学[M].北京:电子工业出版社.2006.

[2]贺雪晨,陈林玲,赵琰.信息对抗与网络安全[M].北京:清华大学出版社.2006.

[3]褚雄,王子敬,王勇.一种基于FPGA的DES加密算法实现[J].江南大学学报(自然科学版),2006,15(6):661—664.

[4]朱作付,徐超,葛红美.基于DES和RSA算法的数据加密传输系统设计[J].通信技术,2010,43(4).

[5]Compag,HewIett-Packard,InteI,Lucent,Microsoft,NEC,PhiIips.UniversaI Bus Specification(Revision2.0)[M].InteI,2000.

数据库系统安全 篇5

随着计算机的普及以及网络的发展,数据库已经不再仅仅是那些程序员所专有的话题。而Oracle数据库更是凭借其性能卓越,操作方便灵活的特点,在数据库的市场中已经占据了一席之地。但是同样随着网络技术的不断进步,数据信息的不断增加,数据安全已经不再是以前的“老生长谈”,也更不是以前书本上那些“可望不可及”的条条框框。

或许很久以前,大家都觉得Oracle数据库的安全并不存在隐患,因为Oracle公司在去年11月份开始促销其数据库软件时提出的口号是“只有Oracle9i能够做到绝对安全”。但是不管它这么说是为了促销,还是为了扩大知名度,总之伴去年12月份,英国的安全专家DavidLitchfield发现的9iAS中存在的程序错误导致的缓冲溢出漏洞以及后来,PenTestLimited和eEyeDigitalSecurity各自提出了一个小的漏洞,所有使用Oracle公司产品的人都不由地紧张了原本松弛的大脑--这个对于用户来说,毕竟关系到了自己的“身家性命”。

下面笔者将带着大家走进Oracle数据安全的世界。由于笔者水平有限,所以不足之处在所难免,望大家不吝赐教。

(一)Oracle数据库的一些基本常识

这里仅仅是为了以后的安全奠定一些基础,因为我们后面要用到它们。呵呵~!

1.Oracle所包含的组件:

在Oracle,数据库是指整个OracleRDBMS环境,它包括以下组件:

・Oracle数据库进程和缓冲(实例)。

・SYSTEM表空间包含一个集中系统类目,它可以由一个或多个数据文件构成。

・其它由数据库管理员(DBA)(可选)定义的表空间,每个都由一个或多个数据文件构成。

・两个以上的联机恢复日志。

・归档恢复日志(可选)。

・其它文件(控制文件、Init.ora、Config.ora等)。

每个Oracle数据库都在一个中央系统类目和数据字典上运行,它位于SYSTEM表空间。

2.关于“日志”

Oracle数据库使用几种结构来保护数据:数据库后备、日志、回滚段和控制文件。下面我们将大体上了解一下作为主要结构之一的“日志”:

每一个Oracle数据库实例都提供日志,记录数据库中所作的全部修改。每一个运行的Oracle数据库实例相应地有一个在线日志,它与Oracle后台进程LGWR一起工作,立即记录该实例所作的全部修改。归档(离线)日志是可选择的,一个Oracle数据库实例一旦在线日志填满后,可形成在线日志归档文件。归档的在线日志文件被唯一标识并合并成归档日志。

・关于在线日志:一个Oracle数据库的每一实例有一个相关联的在线日志。一个在线日志由多个在线日志文件组成。在线日志文件(onlineredologfile)填入日志项(redoentry),日志项记录的数据用于重构对数据库所作的全部修改。

・关于归档日志:Oracle要将填满的在线日志文件组归档时,则要建立归档日志(archivedredolog)。其对数据库备份和恢复有下列用处:

<1>数据库后备以及在线和归档日志文件,在操作系统和磁盘故障中可保证全部提交的事物可被恢复。

<2>在数据库打开和正常系统使用下,如果归档日志是永久保存,在线后备可以进行和使用。

数据库可运行在两种不同方式下:NOARCHIVELOG方式或ARCHIVELOG方式。数据库在NOARCHIVELOG方式下使用时,不能进行在线日志的归档。如果数据库在ARCHIVELOG方式下运行,可实施在线日志的归档。

3.物理和逻辑存储结构:

OracleRDBMS是由表空间组成的,而表空间又是由数据文件组成的。表空间数据文件被格式化为内部的块单位。块的大小,是由DBA在Oracle第一次创建的时候设置的,可以在512到8192个字节的范围内变动。当一个对象在Oracle表空间中创建的时候,用户用叫做长度的单位(初始长度((initialextent)、下一个长度(nextextent)、最小长度(minextents)、以及最大长度(maxextents))来标明该对象的空间大小。一个Oracle长度的大小可以变化,但是要包含一个由至少五个连续的块构成的链。

4.Oracle与MicrosoftSQLServer比较下的联网协议:

(二)Oracle数据安全的维护

记得某位哲学家说过:“事物的变化离不开内因和外因。”那么对于Oracle数据安全这个话题而言,也势必分为“内”和“外”两个部分。那么好,我们就先从“内”开始说起:

§1.从Oracle系统本身说起

我们先抛开令人闻风色变的“hacker”和其他一些外部的原因,先想一下我们的数据库。什么硬盘损坏,什么软件受损,什么操作事物……一系列由于我们的“疏忽”而造成的系统问题就完全可以让我们辛苦建立的数据库中的数据一去不复返。那么,我们就先从自己身上找找原因吧。

【一】解决系统本身问题的方法--数据库的备份及恢复

・数据库的备份:

关于Oracle数据库的备份,标准地有三中办法:导出/导入(Export/Import)、冷备份、热备份。导出备份是一种逻辑备份,冷备份和热备份是物理备份。

<1>导出/导入(Export/Import)

利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle数据库中去。

a.简单导出数据(Export)和导入数据(Import)

Oracle支持三种类型的输出:

(1)表方式(T方式),将指定表的数据导出。

(2)用户方式(U方式),将指定用户的所有对象及数据导出。

(3)全库方式(Full方式),将数据库中的所有对象导出。

数据导出(Import)的过程是数据导入(Export)的逆过程,它们的数据流向不同。

b.增量导出/导入

增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。

增量导出包括三个类型:

(1)“完全”增量导出(Complete)

即备份整个数据库,比如:

$expsystem/managerinctype=completefile=990702.dmp

(2)“增量型”增量导出

备份上一次备份后改变的数据。比如:

$expsystem/managerinctype=incrementalfile=990702.dmp

(3)“累计型”增量导出(Cumulative)

累计型导出方式只是导出自上次“完全”导出之后数据库中变化了的信息。比如:

$expsystem/managerinctype=cumulativefile=990702.dmp

数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效地完成。比如数据库的备份任务可作如下安排:

・星期一:完全导出(A)

・星期二:增量导出(B)

・星期三:增量导出(C)

・星期四:增量导出(D)

・星期五:累计导出(E)

・星期六:增量导出(F)

・星期日:增量导出(G)

如果在星期日,数据库遭到意外破坏,数据库管理员可按以下步骤来恢复数据库:

第一步:用命令CREATEDATABASE重新生成数据库结构;

第二步:创建一个足够大的附加回段。

第三步:完全增量导入A:

$impsystem./managerinctype=RECTOREFULL=YFILE=A

第四步:累计增量导入E:

$impsystem/managerinctype=RECTOREFULL=YFILE=E

第五步:最近增量导入F:

$impsystem/managerinctype=RESTOREFULL=YFILE=F

<2>冷备份

冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份Oracle信息而言,冷备份是最快和最安全的方法。冷备份的优点是:

・是非常快速的备份方法(只需拷贝文件)

・容易归档(简单拷贝即可)

・容易恢复到某个时间点上(只需将文件再拷贝回去)

・能与归档方法相结合,作数据库“最新状态”的恢复。

・低度维护,高度安全。

但冷备份也有如下不足:

・单独使用时,只能提供到“某一时间点上”的恢复。

・在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。

・若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。

・不能按表或按用户恢复。

如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将所备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须拷贝的文件包括:

・所有数据文件

・所有控制文件

・所有联机REDOLOG文件

・Init.ora文件(可选)

值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的

下面是做冷备份的完整例子:

(1)关闭数据库$sqldbalmode=y

SQLDBA>connectinternal;

SQLDBA>shutdownnormal;

(2)用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件

SQLDBA>!cp

(3)重启Oracle数据库

$sqldbalmode=y

SQLDBA>connectinternal;

SQLDBA>startup;

<3>热备份

热备份是在数据库运行的情况下,采用archivelogmode方式备份数据的方法。所以,如果你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成:

1.数据文件一个表空间一个表空间地备份。

(1)设置表空间为备份状态

(2)备份表空间的数据文件

(3)恢复表空间为正常状态

2.备份归档log文件。

(1)临时停止归档进程

(2)log下那些在archiveredolog目标目录中的文件

(3)重新启动archive进程

(4)备份归档的redolog文件

3.用alterdatabasebackupcontrolfile命令来备份拷贝文件

热备份的优点是:

・可在表空间或数据文件级备份,备份时间短。

・备份时数据库仍可使用。

・可达到秒级恢复(恢复到某一时间点上)。

・可对几乎所有数据库实体作恢复。

・恢复是快速的,在大多数情况下在数据库仍工作时恢复。

热备份的不足是:

・不能出错,否则后果严重。

・若热备份不成功,所得结果不可用于时间点的恢复。

・因难于维护,所以要特别仔细小心,不允许“以失败而告终”。

【二】来自内部的另外一个隐患--用户管理以及密码问题

在这里,其实作为一个差不多点的数据库管理员都很清楚,Oracle数据库本身就使用了很多种手段来加强数据库的安全性,经常见到的就有密码,角色,权限等等。那么我们就从最简单的DBSNMP

说起:

Oralce数据库如果采用典型安装后,自动创建了一个叫做DBSNMP的用户,该用户负责运行Oracle系统的智能代理(IntelligentAgent),该用户的缺省密码也是“DBSNMP”。如果忘记修改该用户的口令,任何人都可以通过该用户存取数据库系统。现在我们来看一下该用户具有哪些权限和角色,然后来分析一下该用户对数据库系统可能造成的损失。

启动SQL/PLUS程序,使用该用户登录进入:

SQL>select*fromsession_privs;

CREATESESSION

ALTERSESSION

UNLIMITEDTABLESPACE

CREATETABLE

CREATECLUSTER

CREATESYNONYM

CREATEPUBLICSYNONYM

CREATEVIEW

CREATESEQUENCE

CREATEDATABASELINK

CREATEPROCEDURE

CREATETRIGGER

ANALYZEANY

CREATETYPE

CREATEOPERATOR

CREATEINDEXTYPE

可以看到该用户不是SYS或SYSTEM管理用户,然而,它却具有两个系统级权限:UNLIMITEDTABLESPACE和CREATEPUBLICSYNONYM。

看到这两个权限你应该马上想到,这些都是安全隐患,尤其是UNLIMITEDTABLESPACE,它是破坏数据库系统的攻击点之一。如果这时候你还依然认为,即使有人利用这个没有修改的口令登录进数据库也造成不了什么损失的话,我就不得不提醒你:该用户具有UNLIMITEDTABLESPACE的系统权限,它可以写一个小的脚本,然后恶意将系统用垃圾数据填满,这样数据库系统也就无法运行,并将直接导致最终的瘫痪。目前很多数据库系统都要求7X24的工作,如果出现了系统用垃圾数据填满的情况,那么,等数据库系统恢复时,恐怕不可挽回的损失已经造成了。

可是除了DBSNMP还有很多其他的用户,怎么办呢?让我们先看一下目前普遍存在于Oracle数据库中的用户管理问题:

(1)权限过大:对ORACLE数据库编程和浏览的一般用户常常具有DBA(数据库管理员权限),

能对数据库系统做任何修改或删除。

(2)安全性差:很多ORACLE用户缺省存储位置都在系统表空间,这样不仅影响系统的正常工

作,而且不同用户的数据信息互相影响、透明,保密性差。随着数据的不断加入,

有可能使整个数据库系统崩溃。

(3)密码有规律:在ORACLE调试初期形成的用户名和密码一致的不良习惯保留到现在;系统用户SYS和SYSTEM的密码也众所皆知。

知道了这些普遍的“毛病”,我们怎么做呢?下面是我的一些建议:

(1)ORACLEDBA(数据库管理员)的规范

・SUNSolaris操作系统下ORACLE用户密码应严格保密,绝不该把密码设成

ORACLE;并指定专门的数据库管理员定期修改。

・ORACLE初始化建立的SYS和SYSTEM系统管理员用户密码应由原来MANAGER改成别的不易被记忆的字符串。

・ORACLEWEBSERVER的管理端口具备DBA浏览数据库的能力,因此其管理者

ADMIN的密码也应保密,不该把密码设成MANAGER;并指定专门的数据库管理员定

期修改。

・ORACLEDBA最好在SUNSPARC服务器控制台上用窗口式界面实现管理。前提

是ORACLE用户启动服务器,然后在窗口式命令行下输入SVRMGRM,即启动了ORACLESERVERMANAGER菜单式管理;用SYSDBA身份登录后,就可做数据库系统维护工作了

(2)SQL*PLUS编程用户的规范

・存储结构的规范

考虑到用SQL*PLUS编程可实现各行各业、各公司、各部门多种多样的应用需求,我们的SQL*PLUS编程用户也应该朝这个方向规范:不同种类的应用必须有不同的用户;不同种类的应用必须有不同的存储位置,包括物理文件、缺省表空间、临时表空间的创建和规划:当准备编写某一较大规模(从ORACLE数据量和面向用户量考虑)应用程序时,首先应该创建一个逻辑的存储位置-表空间,同时定义物理文件的存放路径和所占硬盘的大小。

①、物理文件缺省的存放路径在/oracle_home/dbs下,在命令行下用UNIX指令df-k可查看硬盘资源分区的使用情况。如果oracle_home使用率达90‰以上,而且有一个或多个较为空闲的硬盘资源分区可以利用,我们最好把物理文件缺省的存放路径改到较为空闲的硬盘资源分区路径下。在此路径下我们可以这样规划资源物理文件的存储:

xxx表空间

xxx行业/xxx公司/xxx部门/xxx服务.dbf

DEMO表空间

default_datafile_home1/col/elec/sys4/demo1.dbf

default_datafile_home1/col/elec/sys4/demo2.dbf

公司系统四部摹拟演示系统物理文件

HUMAN表空间

default_datafile_home1/col/elec/human/human.dbf

公司人事部人事管理系统物理文件

BOOK表空间

default_datafile_home1/col/elec/book/book.dbf

公司资料室图书管理系统物理文件

QUESTION表空间

default_datafile_home1/col/elec/client/question.dbf

公司客户服务部问题库系统物理文件

PC表空间

default_datafile_home1/col/chaoxun/client/pc.dbf

公司PC机售后服务系统物理文件

……表空间

default_datafile_home2/……………………………

等等

说明:其中default_datafile_home1指oracle_home/dbs;

default_datafile_home2指较为空闲的硬盘资源分区路径。

②、物理文件的大小根据应用系统的数据量、数据对象、程序包的多少来定。一般用于摹拟演示的小系统,表空间初始的物理文件为2M即能满足要求,如果信息量满,还可以增加物理文件,扩充表空间(每次扩充大小也可暂定为2M);一般实际运行的应用系统可适当增加表空间初始的物理文件大小,但也不要一次分配太大(因为不易回收空间,却易扩充空间),这也需要根据具体情况具体分析:信息量大、需长时间保存的应用在条件允许情况下,表空间可以大到几百M甚至上G;信息量小、短期经常刷新的应用,表空间可以控制在2M以下。

③、表空间的名称应该采用同系统应用相似的英文字符或字符缩写,表空间所对应的一个或多个物理文件名也应有相关性。不同用户所处的缺省表空间不同,存储的信息就不能互相访问。这比把所有用户信息都储存在系统表空间,安全性大大提高了。如果用ORACLEWEBSERVER管理端口创建的用户,其缺省和临时表空间一定是系统表空间,DBA切记要改变用户的缺省表空间。临时表空间存放临时数据段,处理一些排序、合并等中间操作,根据实际应用的需求可以把它们放在专门创建的表空间里;如果系统表空间大,也可以把它们放在系统表空间。用户创建的数据索引最好和数据文件分开存放在不同表空间,以减少数据争用和提高响应速度。

・密码和用户名的规范

有相当数量的ORACLE用户名和密码一致,这是个很不安全的因素。我们建议ORACLE用户名和密码一定不要一样,密码最好在五,六位字符以上。不同用户间不应该使用相同的密码。用户名的定义可根据实际应用的英文名来设,而依据编程人员的姓名定义的用户名实际上不规范,可在日后的工作中结合上述有关存储结构规范的说明逐步改进。

(3)特殊要求用户的规范

在ORACLE数据库使用过程中,还会遇到一些有特殊要求的用户:非编程人员需要对某个表有查询、增加、删除、修改的权利。DBA应创建一个这样的用户,先确定用户名和密码,再规定相关应用所在缺省表空间(包含某个表)和临时表空间,最后TABLE属主给其授权:赋予CONNECT角色SELECT、INSERT、DELETE、UPDATEONTHETABLE的对象级权限,这可根据实际需求自由取舍。

举例:●给新用户授于对象级权限(命令行方式):

假设新用户NEW2需要有查询、删除、修改DCD用户的表EMP。

%svrmgrl

SVRMGR>connectinternal;以系统管理员登录

SVRMGR>createusernew2identifiedbynew2345defaulttablespaceapp;

SVRMGR>connectdcd/dcdpwd;以dcd用户登录

SVRMGR>grantconnecttonew2;

SVRMGR>grantselectonemptonew2;

SVRMGR>grantdeleteonemptonew2;

SVRMGR>grantupdateonemptonew2;

说了这么多关于用户的问题,那么接下来我们就详细得说一下关于密码文件的使用以及维护--在Oracle数据库系统中,用户如果要以特权用户身份(INTERNAL/SYSDBA/SYSOPER)登录Oracle数据库可以有两种身份验证的方法:即使用与操作系统集成的身份验证或使用Oracle数据库的密码文件进行身份验证。因此,管理好密码文件,对于控制授权用户从远端或本机登录Oracle数据库系统,执行数据库管理工作,具有重要的意义。

Oracle数据库的密码文件存放有超级用户INTERNAL/SYS的口令及其他特权用户的用户名/口令,它一般存放在ORACLE_HOMEDATABASE目录下。

・密码文件的创建:

在使用OracleInstanceManager创建一数据库实例的时侯,在ORACLE_HOMEDATABASE目录下还自动创建了一个与之对应的密码文件,文件名为PWDSID.ORA,其中SID代表相应的Oracle数据库系统标识符。此密码文件是进行初始数据库管理工作的基础。在此之后,管理员也可以根据需要,使用工具ORAPWD.EXE手工创建密码文件,命令格式如下:

C:>ORAPWDFILE=PASSWORD=ENTRIES=

各命令参数的含义为:

FILENAME:密码文件名;

PASSWORD:设置INTERNAL/SYS帐号的口令;

MAX_USERS:密码文件中可以存放的最大用户数,对应于允许以SYSDBA/SYSOPER权限登录数据库的最大用户数。由于在以后的维护中,若用户数超出了此限制,则需要重建密码文件,所以此参数可以根据需要设置得大一些。

有了密码文件之后,需要设置初始化参数REMOTE_LOGIN_PASSWORDFILE来控制密码文件的使用状态。

・设置初始化参数REMOTE_LOGIN_PASSWORDFILE:

在Oracle数据库实例的初始化参数文件中,此参数控制着密码文件的使用及其状态。它可以有以下几个选项:

NONE:指示Oracle系统不使用密码文件,特权用户的登录通过操作系统进行身份验证;

EXCLUSIVE:指示只有一个数据库实例可以使用此密码文件。只有在此设置下的密码文件可以包含有除INTERNAL/SYS以外的用户信息,即允许将系统权限SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用户。

SHARED:指示可有多个数据库实例可以使用此密码文件。在此设置下只有INTERNAL/SYS帐号能被密码文件识别,即使文件中存有其他用户的信息,也不允许他们以SYSOPER/SYSDBA的权限登录。此设置为缺省值。

在REMOTE_LOGIN_PASSWORDFILE参数设置为EXCLUSIVE、SHARED情况下,Oracle系统搜索密码文件的次序为:在系统注册库中查找ORA_SID_PWFILE参数值(它为密码文件的全路径名);若未找到,则查找ORA_PWFILE参数值;若仍未找到,则使用缺省值ORACLE_HOMEDATABASEPWDSID.ORA;其中的SID代表相应的Oracle数据库系统标识符。

・向密码文件中增加、删除用户:

当初始化参数REMOTE_LOGIN_PASSWORDFILE设置为EXCLUSIVE时,系统允许除INTERNAL/SYS以外的其他用户以管理员身份从远端或本机登录到Oracle数据库系统,执行数据库管理工作;这些用户名必须存在于密码文件中,系统才能识别他们。由于不管是在创建数据库实例时自动创建的密码文件,还是使用工具ORAPWD.EXE手工创建的密码文件,都只包含INTERNAL/SYS用户的信息;为此,在实际操作中,可能需要向密码文件添加或删除其他用户帐号。

由于仅被授予SYSOPER/SYSDBA系统权限的用户才存在于密码文件中,所以当向某一用户授予或收回SYSOPER/SYSDBA系统权限时,他们的帐号也将相应地被加入到密码文件或从密码文件中删除。由此,向密码文件中增加或删除某一用户,实际上也就是对某一用户授予或收回SYSOPER/SYSDBA系统权限。

要进行此项授权操作,需使用SYSDBA权限(或INTERNAL帐号)连入数据库,且初始化参数REMOTE_LOGIN_PASSWORDFILE的设置必须为EXCLUSIVE,

具体操作步骤如下:

创建相应的密码文件;

设置初始化参数REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE;

使用SYSDBA权限登录:CONNECTSYS/internal_user_passswordASSYSDBA;

启动数据库实例并打开数据库;

创建相应用户帐号,对其授权(包括SYSOPER和SYSDBA):授予权限:GRANTSYSDBATOuser_name;

收回权限:REVOKESYSDBAFROMuser_name;

现在这些用户可以以管理员身份登录数据库系统了;

・使用密码文件登录:

有了密码文件后,用户就可以使用密码文件以SYSOPER/SYSDBA权限登录Oracle数据库实例了,注意初始化参数REMOTE_LOGIN_PASSWORDFILE应设置为EXCLUSIVE或SHARED。任何用户以SYSOPER/SYSDBA的权限登录后,将位于SYS用户的Schema之下,以下为两个登录的例子:

1.以管理员身份登录:

假设用户scott已被授予SYSDBA权限,则他可以使用以下命令登录:

CONNECTscott/tigerASSYSDBA

2.以INTERNAL身份登录:

CONNECTINTERNAL/INTERNAL_PASSWORD

・密码文件的维护:

1.查看密码文件中的成员:

可以通过查询视图V$PWFILE_USERS来获取拥有SYSOPER/SYSDBA系统权限的用户的信息,表中SYSOPER/SYSDBA列的取值TRUE/FALSE表示此用户是否拥有相应的权限。这些用户也就是相应地存在于密码文件中的成员。

2.扩展密码文件的用户数量:

当向密码文件添加的帐号数目超过创建密码文件时所定的限制(即ORAPWD.EXE工具的MAX_USERS参数)时,为扩展密码文件的用户数限制,需重建密码文件,具体步骤如下:

a)查询视图V$PWFILE_USERS,记录下拥有SYSOPER/SYSDBA系统权限的用户信息;

b)关闭数据库;

c)删除密码文件;

d)用ORAPWD.EXE新建一密码文件;

e)将步骤a中获取的用户添加到密码文件中。

3.修改密码文件的状态:

密码文件的状态信息存放于此文件中,当它被创建时,它的缺省状态为SHARED。可以通过改变初始化参数REMOTE_LOGIN_PASSWORDFILE的设置改变密码文件的状态。当启动数据库事例时,Oracle系统从初始化参数文件中读取REMOTE_LOGIN_PASSWORDFILE参数的设置;当加载数据库时,系统将此参数与口令文件的状态进行比较,如果不同,则更新密码文件的状态。若计划允许从多台客户机上启动数据库实例,由于各客户机上必须有初始化参数文件,所以应确保各客户机上的初始化参数文件的一致性,以避免意外地改变了密码文件的状态,造成数据库登陆的失败。

4.修改密码文件的存储位置:

密码文件的存放位置可以根据需要进行移动,但作此修改后,应相应修改系统注册库有关指向密码文件存放位置的参数或环境变量的设置。

5.删除密码文件:

在删除密码文件前,应确保当前运行的各数据库实例的初始化参数REMOTE_LOGIN_PASSWORDFILE皆设置为NONE。在删除密码文件后,若想要以管理员身份连入数据库的话,则必须使用操作系统验证的方法进行登录。

但是管理员都觉得乏味,因为在管理员中流行一种很简单的加密办法--就是经常,很频繁地修改自己的密码。可是,每次修改都跟打一次仗似的--因为更新程序并不是每个人都愿意做的事情。

那么有没有什么简单点的办法呢?请往下看:

模型:Oracle7.3;开发工具:Develope。收费系统(在数据库中的名称是SFYY),其Client端分散在市区的数个营业点,通过城域网与主机(小型机)相连。

过程:

・在收费小型机Oracle系统的system用户(DBA)下,创建新用户test;?

createusertest?

identifiedbycarton?

defaulttablespacedataspace1?

quota100K?

・对test用户授以权限;?

grantcreatesessiontotest;?

grantresourcetotest;?

・在test用户下建立一个存储函数mmtranslate,它其实是一个加密程序。下面是一个简单的例子。?

functionmmtranslate(mvarchar2)?

returnvarchar2?

as?

inumber(2);?

kkvarchar2(10);?

begin?

kk:=′′;?

i:=1;?

loop?

ifi<=length(m)then?

ifinstr(′1234567890′,substr(m,i,1),1,1)>0then?

kk:=kk

chr(100+to_number(substr(m,i,1)));?

elseifinstr(‘wxyz‘,substr(m,i,1),1,1)>0then?

kk:=kk

chr(-8+ascii(substr(m,i,1)));?

else?

kk:=kk

chr(4+ascii(substr(m,i,1)));?

endif;?

else?

exit;?

endif;?

i:=i+1;?

endloop;?

returnkk;?

exception?

whenothersthen?

return′-1′;?

end;?

・在test用户下建表mmtest并插入记录:?

createtablemmtest?

(usnamevarchar2(6),------用户名称?

mimavarchar2(6)------加密前的密码);?

insertintommtestvalues(‘sfyy‘,‘eds2‘);?

commit;

・执行以下语句?

SQL>selectmmtranslate(‘eds2‘)fromdual;?

MMTRANSLATE(‘EDS2‘)?

----------------------------------------?

ihwf?

利用DBA权限更改sfyy的密码为上面语句的执行结果:?

alterusersffy?

identifiedbyihwf;;?

・修改应用程序,对于开发环境是Develope2000的程序来说,主要是修改主程序的on-logon触发器:?

declare?

mmvarchar2(6);?

begin?

logon(‘test‘,‘carton‘);?

selectmimaintommfrommmtestwhereusname=‘sfyy‘;?

mm:=mmtranslate(mm);?

logout;?

logon(‘sfyy‘,mm);?

end;?

然后再利用触发器WHEN-NEW-FROM-INSTANCE执行Callfrom或Newform等命令,进入业务处理程序。这个主程序应当仅仅由管理员来掌握,编译之后将执行文件下发到各收费点的Clien端。?

・在System用户下,利用Oracle提供的pupbld.sql,建立表Productuserprofile,执行下面这样的命令,限制在非开发状态Sql命令的使用,例如?

insertintoproductuserprofile?

(product,userid,attribute,charvalue)values?

(‘SQL*Plus‘,‘TEST‘,‘CONNECT‘,‘DISABLED‘);?

insertintoproductuserprofile?

(product,userid,attribute,charvalue)values?

(‘SQL*Plus‘,‘SFYY‘,‘DELETE‘,‘DISABLED‘);这样,在SQL状态下,根本无法连接到TEST用户,而在sfyy用户下,delete命令将不能执行。当然,DBA可以改变这些设置。

当然了,这个仅仅是属于一种“应用技巧”,但是足可以把那些每天忙于更新系统的管理员舒服好几天了。但是另一方面,还要加强对源程序的管理,在Client端只存放执行程序。加强审计,发现异常现象,及时处理。这样才可以做到更高一层的“安全”。

在下面,我主要是向大家介绍一个REM对GHXXB制立数据库触发子,密码的加密程序。

REM对GHXXB制立数据库触发子(当INSERTORUPDATEGHXXB时触发)

droptriggerscjmmm;

createorreplacetriggerscjmmm

beforeinsertorupdateofmmOnghxxbForeachRow

Begin

:new.mm:=ENCRYPT(:new.mm,:NEW.GH,TO_CHAR(SYSDATE,‘SS‘));

End;

/

---------------------------密码的加密程序ENCRYPT----------------------

CreateorReplace

FunctionENCRYPT(InpassInVarchar2,IN_GHInVarchar2,IN_SSInVarchar2)

ReturnVarchar2Is

bcsvarchar2(20);

bcs1number;

csnumber;

jgnumber;

m_ghVARCHAR2(4);

m_mmVARCHAR2(20);

Begin

m_gh:=IN_GH;

m_mm:=INPASS;

cs:=TO_NUMBER(IN_SS);

Ifcs<=1thencs:=77;endif;

bcs:=substr(to_char(ascii(substr(m_gh,1,1))),1,2);

Ifbcs<‘1‘thenbcs:=‘7‘;endif;

m_gh:=substr(m_gh,2);

LoopEXITWHENnvl(length(m_gh),0)=0;

bcs:=bcs

substr(to_char(ascii(substr(m_gh,1,1))),-1,1);

m_gh:=substr(m_gh,2);

Endloop;

LoopEXITWHENnvl(length(m_mm),0)=0;

bcs:=bcs

substr(to_char(ascii(substr(m_mm,1,1))),-1,1);

m_mm:=substr(m_mm,2);

Endloop;

bcs1:=to_number(bcs);

jg:=cs*bcs1;

LoopEXITWHENlength(to_char(jg))>13;

jg:=jg*cs;

Endloop;

RETURN(IN_SS

substr(to_char(jg),1,14));

End;

/

总结上面的东西,我们仅仅是从自身做起,知道了怎么维护Oracle数据库安全这个话题的“皮毛”。可是,对于这个似乎永远也说不完的话题,我们光知道怎么从内部“防御”就够了吗?不要忘了,在外面,还有一群虎视耽耽的“hacker”在盯着你的数据库--因为这里面有他们想要的东西。

所以,请大家关注好下一个话题:

§2.不被“hacker”入侵的几个建议

我们的目标是:没有蛀牙!(开个玩笑~!呵呵)其实应该是:它应尽可能地堵住潜在的各种漏洞,防止非法用户利用它们侵入数据库系统。对于数据库数据的安全问题,数据库管理员可以参考有关系统双机热备份功能以及数据库的备份和恢复的资料。

以下就数据库系统不被非法用户侵入这个问题作进一步的阐述。

・组和安全性:在操作系统下建立用户组也是保证数据库安全性的一种有效方法。Oracle程序为了安全性目的一般分为两类:一类所有的用户都可执行,另一类只DBA可执行。在Unix环境下组设置的配置文件是/etc/group,关于这个文件如何配置,请参阅Unix的有关手册,以下是保证安全性的几种方法:

(1)在安装OracleServer前,创建数据库管理员组(DBA)而且分配root和Oracle软件拥有者的用户ID给这个组。DBA能执行的程序只有710权限。在安装过程中SQL*DBA系统权限命令被自动分配给DBA组。

(2)允许一部分Unix用户有限制地访问Oracle服务器系统,增加一个由授权用户组的Oracle组,确保给Oracle服务器实用例程Oracle组ID,公用的可执行程序,比如SQL*Plus,SQL*forms等,应该可被这组执行,然后该这个实用例程的权限为710,它将允许同组的用户执行,而其他用户不能。

(3)改那些不会影响数据库安全性的程序的权限为711。(注:在我们的系统中为了安装和调试的方便,Oracle数据库中的两个具有DBA权限的用户Sys和System的缺省密码是manager。为了您数据库系统的安全,我们强烈建议您该掉这两个用户的密码,具体操作如下:

在SQL*DBA下键入:

alterusersysindentifiedbypassword;

alterusersystemindentifiedbypassword;

其中password为您为用户设置的密码。

・Oracle服务器实用例程的安全性:

以下是保护Oracle服务器不被非法用户使用的几条建议:

(1)确保$ORACLE_HOME/bin目录下的所有程序的拥有权归Oracle软件拥有者所有;

(2)给所有用户实用便程(sqiplus,sqiforms,exp,imp等)711权限,使服务器上所有的用户都可访问Oracle服务器;

(3)给所有的DBA实用例程(比如SQL*DBA)700权限。Oracle服务器和Unix组当访问本地的服务时,您可以通过在操作系统下把Oracle服务器的角色映射到Unix的组的方式来使用Unix管理服务器的安全性,这种方法适应于本地访问。

在Unix中指定Oracle服务器角色的格式如下:

ora_sid_role[_dla]

其中sid是您Oracle数据库的oracle_sid;

role是Oracle服务器中角色的名字;

d(可选)表示这个角色是缺省值;a(可选)表示这个角色带有WITHADMIN选项,您只可以把这个角色授予其他角色,不能是其他用户。

以下是在/etc/group文件中设置的例子:

ora_test_osoper_d:NONE:1:jim,narry,scott

ora_test_osdba_a:NONE:3:pat

ora_test_role1:NONE:4:bob,jane,tom,mary,jim

bin:NONE:5:root,oracle,dba

root:NONE:7:root

词组“ora_test_osoper_d”表示组的名字;词组“NONE”表示这个组的密码;数字1表示这个组的ID;接下来的是这个组的成员。前两行是Oracle服务器角色的例子,使用test作为sid,osoper和osdba作为Oracle服务器角色的名字。osoper是分配给用户的缺省角色,osdba带有WITHADMIN选项。为了使这些数据库角色起作用,您必须shutdown您的数据库系统,设置Oracle数据库参数文件initORACLE_SID.ora中os_roles参数为True,然后重新启动您的数据库。如果您想让这些角色有connectinternal权限,运行orapwd为这些角色设置密码。当您尝试connectinternal时,您键入的密码表示了角色所对应的权限。

・SQL*DBA命令的安全性:

如果您没有SQL*PLUS应用程序,您也可以使用SQL*DBA作SQL查权限相关的命令只能分配给Oracle软件拥有者和DBA组的用户,因为这些命令被授予了特殊的系统权限。

(1)startup

(2)shutdown

(3)connectinternal

・数据库文件的安全性:

Oracle软件的拥有者应该这些数据库文件($ORACLE_HOME/dbs/*.dbf)设置这些文件的使用权限为0600:文件的拥有者可读可写,同组的和其他组的用户没有写的权限。

Oracle软件的拥有者应该拥有包含数据库文件的目录,为了增加安全性,建议收回同组和其他组用户对这些文件的可读权限。

・网络安全性:

当处理网络安全性时,以下是额外要考虑的几个问题。

(1)在网络上使用密码在网上的远端用户可以通过加密或不加密方式键入密码,当您用不加密方式键入密码时,您的密码很有可能被非法用户截获,导致破坏了系统的安全性。

(2)网络上的DBA权限控制您可以通过下列两种方式对网络上的DBA权限进行控制:

A设置成拒绝远程DBA访问;

B通过orapwd给DBA设置特殊的密码。

・建立安全性策略:

系统安全性策略

(1)管理数据库用户:数据库用户是访问Oracle数据库信息的途径,因此,应该很好地维护管理数据库用户的安全性。按照数据库系统的大小和管理数据库用户所需的工作量,数据库安全性管理者可能只是拥有create,alter,或drop数据库用户的一个特殊用户,或者是拥有这些权限的一组用户,应注意的是,只有那些值得信任的个人才应该有管理数据库用户的权限。

(2)用户身份确认:数据库用户可以通过操作系统,网络服务,或数据库进行身份确认,通过主机操作系统进行用户身份认证的优点有:

A用户能更快,更方便地联入数据库;

B通过操作系统对用户身份确认进行集中控制:如果操作系统与数据库用户信息一致,Oracle无须存储和管理用户名以及密码;

C用户进入数据库和操作系统审计信息一致。

(3)操作系统安全性

A数据库管理员必须有create和delete文件的操作系统权限;

B一般数据库用户不应该有create或delete与数据库相关文件的操作系统权限;

C如果操作系统能为数据库用户分配角色,那么安全性管理者必须有修改操作系统帐户安全性区域的操作系统权限。

・数据的安全性策略:

数据的生考虑应基于数据的重要性。如果数据不是很重要,那么数据的安全性策略可以稍稍放松一些。然而,如果数据很重要,那么应该有一谨慎的安全性策略,用它来维护对数据对象访问的有效控制。

・用户安全性策略:

(1)一般用户的安全性:

A密码的安全性:如果用户是通过数据库进行用户身份的确认,那么建议使用密码加密的方式与数据库进行连接。这种方式的设置方法如下:

在客户端的oracle.ini文件中设置ora_encrypt_login数为true;

在服务器端的initORACLE_SID.ora文件中设置dbling_encypt_login参数为true。

B权限管理:对于那些用户很多,应用程序和数据对象很丰富的数据库,应充分利用“角色”这个机制所带的方便性对权限进行有效管理。对于复杂的系统环境,“角色”能大大地简化权限的理。

(2)终端用户的安全性:

您必须针对终端用户制定安全性策略。例如,对于一个有很多用户的大规模数据库,安全性管理者可以决定用户组分类为这些用户组创建用户角色,把所需的权限和应用程序角色授予每一个用户角色,以及为用户分配相应的用户角色。当处理特殊的应用要求时,安全性管理者也必须明确地把一些特定的权限要求授予给用户。您可以使用“角色”对终端用户进行权限管理。

・数据库管理者安全性策略:

(1)保护作为sys和system用户的连接:

当数据库创建好以后,立即更改有管理权限的sys和system用户的密码,防止非法用户访问数据库。当作为sys和system用户连入数据库后,用户有强大的权限用各种方式对数据库进行改动。

(2)保护管理者与数据库的连接:

应该只有数据库管理者能用管理权限连入数据库,当以sysdba或startup,shutdown,和recover或数据库对象(例如create,drop,和delete等)进行没有任何限制的操作。

(3)使用角色对管理者权限进行管理

・应用程序开发者的安全性策略:

(1)应用程序开发者和他们的权限数据库应用程序开发者是唯一一类需要特殊权限组完成自己工作的数据库用户。开发者需要诸如createtable,create,procedure等系统权限,然而,为了限制开发者对数据库的操作,只应该把一些特定的系统权限授予开发者。

(2)应用程序开发者的环境:

A程序开发者不应与终端用户竞争数据库资源;

B用程序开发者不能损害数据库其他应用产品。

(3)free和controlled应用程序开发应用程序开发者有一下两种权限:

Afreedevelopment

应用程序开发者允许创建新的模式对象,包括table,index,procedure,package等,它允许应用程序开发者开发独立于其他对象的应用程序。

Bcontrolleddevelopment

应用程序开发者不允许创建新的模式对象。所有需要table,indesprocedure等都由数据库管理者创建,它保证了数据库管理者能完全控制数据空间的使用以及访问数据库信息的途径。但有时应用程序开发者也需这两种权限的混和。

(4)应用程序开发者的角色和权限数据库安全性管理者能创建角色来管理典型的应用程序开发者的权限要求。

Acreate系统权限常常授予给应用程序开发者,以至于他们能创建他的数据对象。

B数据对象角色几乎不会授予给应用程序开发者使用的角色。

(5)加强应用程序开发者的空间限制作为数据库安全性管理者,您应该特别地为每个应用程序开发者设置以下的一些限制:

A开发者可以创建table或index的表空间;

B在每一个表空间中,开发者所拥有的空间份额。应用程序管理者的安全在有许多数据库应用程序的数据库系统中,您可能需要一应用程序管理者,应用程序管理者应负责起以下的任务:

a)为每一个应用程序创建角色以及管理每一个应用程序的角色;

b)创建和管理数据库应用程序使用的数据对象;

c)需要的话,维护和更新应用程序代码和Oracle的存储过程和程序包。

我相信有了以上的这些建议,作为一个Oracle的管理者绝对可以做好他本职的工作了。可是,我们再怎么努力,都始终得面对这样一个现实,那就是Oracle毕竟是其他人开发的,而我们却在使用。所以,Oracle到底有多少漏洞--我想这个不是你和我所能解决的。不过既然作为一篇讨论Oracle数据安全的文章,我认为有必要把漏洞这一块也写进去,毕竟这也是“安全”必不可少的一部分。呵呵!

所以……

【Oracle漏洞举例】:

・Oracle9iASWebCache远程拒绝服务攻击漏洞(-10-28)

・Oracle8.1.6的oidldapd中的漏洞

・Oracle9iASOracleJSP泄漏JSP文件信息漏洞

・LinuxORACLE8.1.5漏洞

想必我没有理由再往下举了,因为读者肯定已经从其他有效的途径得到了关于Oracle漏洞的最新情报。我这里就不再赘述了。

总而言之一句话--“Oracle数据安全是一个博大而又精深的话题;如果你没有耐心,就永远不会得到它的精髓之所在。”

本文已经在《 X档案》第四期学习手册上发表

数据库系统安全 篇6

目前,存储资源的使用方式正在发生新的变化——趋向网络化的存储和数据的地区性分散(这源于企业对业务连续性和数据共享的需要),要合并联网环境中的存储资源,原有的、基于某个层面的数据保护措施(像防火墙、网络防毒等)就难以应对了。怎么办呢?最近,我们采访了HDS公司首席安全官Art Edmonds,他指出,必须将存储与安全技术有机融合。

安全必备3利器

在过去,存储设备几乎无一例外地通过SCSI连接技术直接连接到服务器上。进入数据存储库只有一个途径:通过应用服务器。如果该服务器是安全的,那么数据也是安全的。但通过网络把存储资源连接起来改变了这种简单模式,它为访问共享资源上的数据提供了多条传输途径,进而带来多方面的安全隐患。用户应用时特别要小心。这里有3种方法可助您一臂之力。

利器1:慎重授权

为了方便管理,大多数网络单元(如交换机和阵列)都为用户提供了带外访问功能,管理员在更改网络配置及许可权时要分外小心,慎重授权,否则数据会丢失或被盗用。

利器2:专线传输

无论是为了数据共享、业务连续性,还是保护数据,用户应该考虑与数据地区分布有关的问题。出于客户支持和产品设计的目的,许多企业需要共享数据,于是通过网关连接SAN的概念日渐盛行。虽然某些安全措施内置在网关当中,但用户仍要注意:如果不使用专线,传输网络将不在自己保护范围之内。

由于提供相对廉价的数据复制功能,特别是美国9.11事件之后,远程复制技术开始流行。需要提醒用户的是,一定要保证传输期间所复制数据的安全。

利器3:加密数据

不管用哪种存储基础设施保护数据,因多半静态数据没有经过加密,故易受到攻击。虽然用户可以把数据备份到磁带上用于恢复,或者找个安全地方保管起来,但只要有人拿走了这盘磁带,或读取到磁带信息,他就等于拥有了数据。

有的备份方案提供了加密,但不是所有企业都在用这项功能。这归因于一系列问题:性能衰退、应用响应延时,还有数据备份、恢复和管理的高复杂度。

硬盘上的数据同样岌岌可危。许多用户认为:硬盘上的数据是安全的,因为应用程序在与客户机通信时会对数据进行加密,网络在传输期间也会对数据进行加密。但如果数据存放到网络应用的后端(存储端),这些几乎是相当原始的数据(除非企业像有些政府部门那样,采用程序对静态数据进行加密)很容易被别人获取(如撤走硬盘),并用合适工具就能读取硬盘上的数据。用户千万要注意静态数据问题,不管用哪种存储基础设施。

细数存储3隐患

1.SAN隐患

光纤通道SAN(Fabric SAN,又称FC SAN)主要部署在数据中心,在FC SAN上的存储资源往往是关键任务数据。也因此,安全一直是FC SAN关注的一个重要方面。通常,人们采用分区和LUN屏蔽技术,保护对存储资源的安全访问。问题是,这2种技术无法提供介质安全,也无法提供加密静态数据的功能。

(1)分区技术的安全漏洞

FC SAN结构包括磁盘阵列、交换机和主机总线适配器(HBA)等多个单元,这些单元允许主机通过光纤通道网络进行通信。分区能够把这些单元配置成几个逻辑组,确保只有该组成员才能通信及访问特定的存储资源。

常用的分区方法有2种:硬分区(Hard Zoning)和软分区(Soft Zoning)。硬分区能够按照端口级别来进行分组,譬如只有连接到某端口的主机适配器才能与连接到该端口的阵列进行通信。这种方法非常有效,但如果网络结构发生变化,需要重新配置时缺乏灵活性。

软分区通常叫做全局名(WWN)分区。光纤通道结构里面的每个单元都由WWN加以标识。WWN分区用交换机里面的简单名字服务器(SNS)来确定某个区中的哪个WWN可以进行通信。这种分区法比较灵活,因为如果重新配置网络,不必改变分区。不过,WWN容易被欺骗,所以安全性不如硬分区。

(2)LUN屏蔽的不足

光纤通道设备以逻辑单元号(LUN)的形式提供数据资源。LUN屏蔽是把某存储资源上的多个LUN分给特定服务器。当众多服务器共享同一存储资源(比如某磁盘阵列)、却因某种原因不允许用户访问该阵列上的同一磁盘时,需要用到屏蔽技术。举例说,网络上有一容量为1TB的磁盘阵列,由Unix和Windows NT服务器共享。因为Windows NT服务器会为它看到的任何LUN分配识别标号,所以就要屏蔽Unix LUN,让Windows NT服务器看不到。有了屏蔽机制,管理员就可以决定每台服务器可以访问哪些LUN。

屏蔽可通过主机、HBA、交换机或磁盘阵列来实现,具体取决于软件支持以及用户如何来管理屏蔽方法。HBA和基于控制器的屏蔽技术相结合,使用WWN和LUN信息,以确保安全访问(譬如说,只可以访问该阵列上带有该WWN名的某个LUN)。

从限定哪个节点可以访问哪些资源的角度来看,分区和LUN屏蔽技术确实提供了一层安全保护。然而,您应该看到:它们没有采用验证或授权措施。虽然许多交换机厂商提供有如口令控制、访问控制列表(ACL)及基于验证的公钥基础设施(PKI)的保护技术。但是,每家厂商的安全级别各不相同,如果同一结构里面的交换机来自多家厂商,实施安全的方法互不兼容,交换机设备的安全控制难以发挥作用。

2.iSCSI隐患

iSCSI的安全防范主要是通过利用IP网络安全技术来实现,尤其是IPSec。IPSec标准为IP网络上传输数据定义了多个级别的安全。iSCSI将会利用IPSec的重要标准,包括验证报头(AH),用来验证初始连接;因特网密钥交换(IKE),用于在连接期间可以不断进行相互验证;封装安全协议(ESP),用于对第4层及更高层的数据进行加密(iSCSI协议位于第4层)。但这一层保护只针对传输中的数据,加密功能并不作用于静态数据。

此外,IP网络上传输iSCSI数据包能够利用其他各种网络安全措施,譬如VPN和防火墙。不过,IP网络上传输的iSCSI数据包是重要信息,因为它里面有数据块的实际位置,所以应当考虑采用另外的安全措施。

3.NAS隐患

NAS方案和充当文件服务器的通用服务器之间有两大区别。首先,NAS设备是经过优化的文件服务器,性能高得多,数据存储容量也大得多,又不会带来任何传输瓶颈问题;其次,NAS能够实现不同文件的共享,这样Unix和Windows等就能共享同一数据。所以,虽然部署NAS根本不会改变网络基础设施,但大规模数据共享和各种访问机制更有可能将数据置于危险境地。

NAS方案的默认设置允许所有用户都可以访问各种资源。所以,管理员应当赶紧设置许可权、ACL及管理权限。管理员要注意一个重要方面:NAS服务器上的安全特性可能会由NAS设备上的操作系统来确定。譬如说,如果NAS方案使用基于Windows NT版本之一的软件,那么其安全类似于Windows NT服务器的安全。这些NAS设备允许Unix服务器访问数据。不过,管理员可能也需要使用本地Unix命令为Unix文件设置安全。另一方面,有些NAS方案能在本地同时支持NFS和CIFS文件许可权,所以要注意NAS方案将提供什么以及每台服务器上需要完成什么。

唾手可得3方案

在美国等市场,已经开始涌现相关存储安全技术,通过利用多种手段来保护数据。不过,这些方法有待改善,特别是在标准方面,只有产品标准化,用户应用才更方便。据悉,现在有多家标准组织和行业协会(如SNIA)在致力于加强存储安全。

近来,一些专注存储技术的公司开始推广存储安全解决方案,比如HDS,它的解决方案涉及从HBA到光纤交换机再到存储设备的端到端整体安全保护,并且作为SINA成员,其方案将率先遵循各种新推标准协议。另外,在存储安全市场,新增诸多新兴企业,并已开始交付各种存储安全方案,主要是加密方案。它们能够分析数据流量,加密数据,并把加密数据传送到存储资源上。由于其加密功能被集成在专用设备上,所以加密起来不会像基于软件的加密技术那样占用宝贵的CPU时间。此外,这类方案还提供了集中管理及实施保密策略的功能,可同时保护主/辅助存储资源上的数据(如下所示)。国内在这方面还没有成熟的方案推出。

方案1:NeoScale解决方案

NeoScale Systems公司提供面向磁盘主存储和磁带辅助存储2种加密方案:CryptoStor FC和CryptoStor for Tape。两者均符合FIPS 140-2(联邦信息保护标准)、基于加密/压缩、状态存储处理、智能卡验证实现基于角色的管理、密钥管理(密钥生成、保护、代管及恢复)及群集操作。与完全采用软件进行加密的方案不同,此2种方案不占用主机CPU资源。

(1)CryptoStor FC

基本功能:用于加密光纤存储设备(如图1所示),可以达到千兆位吞吐量,端口到端口的时延不超过100ms。

特色:基于策略的安全和数据通路透明。

部署位置:部署在主机端、光纤通道结构内部、磁盘阵列前面或者存储网关后面。

售价:3.5万美元以上

网址:http://www.cryptostor.com

(2)CryptoStor for Tape

基本功能:用于加密、验证和数据压缩磁带库和虚拟磁带系统中的数据,兼容主流备份应用软件,配备光纤通道和SCSI两种接口模式。如图2所示。

售价:1.5万美元以上

网址:http://www.neoscale.com

方案2:Decru解决方案

Decru公司的解决方案包括 DataFort E和DataFort FC两个系列,如图3所示。

基本功能:用于加密NAS、SAN、DAS和磁带备份等环境中的数据,速率达千兆位。

特色:(1)以透明方式加密及解密在网络存储设备来回传送的数据,主要是因为采用随机数生成器(TRNG)创建密钥,多密钥加密方法确保了密钥不会以明文形式传输。

(2)采用集成智能卡,提供另一层验证。智能卡确保只有授权的管理员才能配置及管理DataFort、授予数据访问权限。

(3)采用独特的分层方案,隔离开管理存储数据和读取存储数据。

部署:DataFort FC部署如图4所示。

特色:面向NAS环境的DataFort E440为3万美元;面向SAN环境的DataFort FC440售价为3.5万美元。

网址:http://www.decru.com

方案3:Vormetric解决方案

Vormetric的解决方案是CoreGuard Core Security。

基本功能:CoreGuard Core Security集成多种安全技术。首先,CoreGuard保护了主机的完整性,通过认证、授权技术,防止未经授权的应用、软件工具及操作/文件系统以及蠕虫、特洛伊木马、未授权补丁和被篡改代码运行及访问受保护数据;其次,使用行业标准算法AES和3DES,在文件—系统层面提供基于策略的高速数据加密功能。

部署:安装在被保护主机内。

售价:未知

网址:http://www.vormetric.com

上述方案都属于加密方案,由于它们主要针对网络存储中可能存在的众多安全漏洞,所以不需要等待标准机构批准。但是,性能、时延、透明度及与现有存储方法的集成度将是用户采用这类方案的决定性问题。

数据库系统的安全性研究 篇7

从20世纪40年代开始,信息技术经过不断的发展,改变着人们的生活方式,信息是现今人类社会不可或缺的重要战略资源.。随之而产生的信息安全问题也越来越突出。在当今信息爆炸的时代,绝大部分的信息存储和大量的信息处理都依赖于数据库系统。

作为计算机信息系统的核心部件———数据库系统,其安全性至关重要。信息安全是指信息网络的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏更改、泄露,系统连续可靠正常地运行,信息服务不中断。信息安全的内容已由保密性、完整性、可获性和规则性等数据安全与规约安全概念,扩展到鉴别、授权、访问控制、抗否认性和可服务性以及基于内容的个人隐私、知识产权等的系统保护。而这些安全问题又要依靠密码、数字签名、身份认证、防火墙、安全审计、灾难恢复、防病毒、防黑客入侵等安全机制加以解决。其中完整性、可用性、保密性和可靠性是信息安全的特征,密码技术和管理是信息安全的核心,安全标准和系统评估构成信息安全基础[1]。浙江大学在1998-2000年研制出了基于恶意DBMS威胁模型的数据库安全与保护系统。另外,还有一些学者对多级安全数据库进行了一些有益的研究[3]。在国外正式通过TCSEC(Trusted Computer System Evaluation Criteria,美国政府颁布的数据安全等级标准)认证的安全或可信数据库系统有取INFORMIX-Online/Secure,Oracle公司的Trusted Oracle系列和Sybase的Secure SQL Serv-er系列,集中对信息战环境下的数据库安全进行了研究,

2 数据库系统安全

2.1 基本概念

为了方便研究数据库系统的安全性,首先在这里阐述一下相关的术语及基本概念:

数据库系统:是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。它通常由数据库、数据库管理系统、应用系统、数据库管理员组成。

角色:是数据库中被命名的一组与数据库操作相关的权限,角色是权限的集合。

明文:作为加密输入的原始信息。

密文:为明文变换的结果。

密钥:是参与加密解密变换的参数。

2.2 数据库系统存在的安全问题

数据库中所存放的信息可能是各种保密资料,比如国家机密、军事情报、客户档案、人事档案、银行储蓄数据等,这些信息必须加以保护。如果不能严格地保证数据库中数据的安全性,就会严重制约数据库的应用。数据库系统担负着存储和管理数据信息的任务,而数据库系统中的数据是由数据库管理系统(DBMS)统一进行管理和控制的[2]。因此,为了适应和满足数据共享的环境和要求,DBMS必须能保证整个系统的正常运转,放置数据意味丢失和不一致数据的产生,以及当数据库遭受破坏后能迅速地恢复正常,这就是数据库的安全保护。引发数据库安全安全性问题有很多方面,其中包括:

(1)操作系统安全性方面的问题,如在主存储器和数据文件用过以后,操作系统是否把它们清除掉。

(2)可操作性方面的问题,如使用口令时,如何设口令保密。

(3)数据系统本身的安全性方面的问题。

3 SQL Server的安全技术

3.1 Microsoft SQL Server 2000的安全配置机制

3.1.1 安全构架

在Microsoft SQL Server 2000中工作时,用户要经过两个安全性阶段:身份验证和授权。授权阶段使用登录帐户标识用户并只验证用户连接SQL Server实例的能力。如果身份验证成功,用户就可以连接到SQL Server实例。接下来用户需要访问服务器上数据库的权限,为此要授予每个数据库中映射到用户登录的帐户的访问权限,用来控制用户在SQL Server数据库中所允许进行的活动。SQL Server 2000的安全模型如图1所示。

3.1.2 安全级别

SQL Server的安全机制分为4部分:

(1)操作系统的安全性

操作系统安全性是操作系统管理员的任务。由于SQL Server采用了集成Windows NT网络安全性的机制,所以使操作系统安全性的行为得到提高,但同时也加大了管理数据库系统安全性的灵活性和难度。

(2)SQL Server的登录安全性

SQL Server通过登录账号的设置来创建附加安全层。每位用户只有登录成功,才能与SQL Server建立一次连接。

(3)数据库的使用安全性

SQL Server数据库都有自己的用户和角色,该数据库只能由它的用户或角色访问,其他用户无权访问其数据。数据库系统可以通过创建和管理数据库的用户和角色来保证数据库不被非法其他用户访问。

(4)数据库对象的使用安全性

SQL Server可以对权限进行管理。SQL Server支持SQL标准的DCL功能,保证合法用户即使进入了数据库也不能有超过权限范围的数据存取操作,即合法用户必须在自己的权限范围内进行数据操作。

3.2 数据库系统的安全性控制

数据库系统的安全是指防止非法用户利用软、硬件技术对数据进行非授权访问、修改和删除。数据库安全是数据库系统研究的一个重要方面,为了保护数据库的安全,一个完善的数据库安全系统至少应当包括身份鉴别、存取控制、数据加密等功能。研究的基本内容包括以下几个方面:

3.2.1 用户标识与鉴别

用户标识与鉴别是系统提供的最外层安全保护措施,常用的方法有账户锁定和口令历史。账户锁定是保证数据库安全性的基本措施,指任何对数据库系统的访问都要通过一个用户账号来获取访问权限。口令历史指系统给每个合法的用户分配一个唯一的登录ID和密码,通过对它们的认证获得访问权。系统提供一定的方式让用户标识自己的身份。每次用户请求进入系统时,系统必须对用户身份的合法性进行鉴别认证。用户要登录数据库系统时,必须向该系统提供用户标识和鉴别信息,以供安全系统识别认证。

SQL Server提供了两种身份验证方法,分别是Windows登录认证和混合登录认证。

Windows认证模式实质上就是使用Windows服务器平台对用户账户的安全性认证,一个应用程序可以使用单个SQL Server登录口令访问数据库中的数据以及实现和故障排除要比Windows认证模式简单得多[6]。

在SQL Server 2000中,数据库管理员可以根据需要,创建新的用户,授权给新用户。例如要创建一个名为“Yang”的用户,其密码为“999”,它对“库存”数据库中的“产品信息”表只具有查询功能,但没有删除、插入、更改等维护权力。首先打开企业管理器,找到“安全性”目录下的“登录”,右击鼠标,选择“新建登录”菜单项,输入登录账号名,密码,默认数据库为“库存”。在“数据库访问”页面,选择其可以访问的数据库“库存”,数据库角色为“Public”,单击“确定”,这样就创建了一个用户。打开“SQL查询分析器”,只要输入正确的登录名和密码,通过SQL Server身份验证后即可访问数据库。IC电话卡、金融IC卡、社会保险卡和手机中的SIM卡都属于智能卡的范畴。智能卡在应用当中采用了包括生物识别在内的用户身份识别、用户PIN码认证、智能卡与智能卡读写机具的交互认证等各种安全措施。

3.2.2 数据库的备份与恢复

备份与恢复是数据库安全策略的重要内容之一,为了防止数据库系统在运行过程出现一些不可预测的因素而导致数据库中的数据丢失、损坏等问题,数据库的备份与恢复对维护数据库的安全性和完整性就具有着非常重要的意义。

举一例子,如果要对“库存”数据库进行备份,需以下几个步骤:

(1)打开企业管理器,展开服务器组,然后展开服务器。

(2)选中要备份的数据库,右击鼠标,在弹出的快捷菜单中,选择“所有任务”子菜单下的“备份数据库”,将会看到如图2所示的SQL Server备份界面。

(3)在“备份”中选择“数据库-安全”;“目的”中点击“添加”,选择备份文件的存放路径,也可将默认路径作为备份文件的存储目录;“重写”中选择“追加到媒体”。

(4)点击“选项”选项卡,选中“完成后验证备份”,单击“确定”开始备份且自动验证。

除了手工备份数据库外,也可以通过以下代码实现“库存”数据库的备份:

BACKUP DATABASE库存

TO DISK='C:数据库备份备份1'WITH FORMAT

当数据库遭受损坏,或者是由于某种需要(例如需要撤销某段时间对数据库的操作),我们前面所做的备份就派上了用场。恢复数据库,就是将数据库恢复到备份时的状态。当恢复数据库时,SQL Server会自动将备份文件中的数据全部拷贝到数据库,并回滚任何未完成的事务,以保证数据库中数控的一致性[3]。

假设“库存”数据库因病毒入侵造成数据被修改、丢失等问题,此时就可以通过如下的操作来恢复数据库:

(1)打开企业管理器,展开服务器组,然后展开服务器。

(2)选中要恢复的数据库,右击鼠标,在弹出的快捷菜单中,选择“所有任务”子菜单下的“还原数据库”。

(3)在“还原为数据库”文本框中,输入新的数据库名称;还原”选项中选择“数据库”;在“要还原的第一个备份”的下拉菜单中,选择需要恢复的数据库备份;在还原列表中,单击要还原的数据库备份。

(4)点击“确定”,则开始数据库还原,结束后自动推出还原状态。

以上所说的是手工恢复数据库,当然,数据库恢复也可用如下代码实现:

RESTORE DATABASE库存

FROM DISK='E:毕业设计数据库备份备份3'

4 数据加密算法分析与实现

4.1 数据加密的必要性

信息安全的核心就是数据库的安全,也就是说数据加密是信息安全的核心问题。对数据库中的敏感数据进行加密处理,将成为十分必要且有效的手段。SQL语言中的内部函数使用会受到一定限制。同时,DBMS的一些应用开发工具的使用也会受到限制。DBMS中有些应用开发工具不能直接对加密后的数据进行操作,因而它们的使用将会受到限制。

4.2 DES算法

DES(Data Encryption Standard)是美国IBM公司于1977

年提出的一种分组数据加密算法。在过去近30年的应用中,在已知的公开文献中,还无法将这种加密算法完全、彻底地破解掉,这种算法的加解密过程非常快,至今仍被广泛应用,被公认是安全的。如信用卡持卡人的PIN码加密传输,智能卡与POS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。

4.2.1 DES算法分析

DES算法是一种对称密码算法,其基本思想是:将二进制序列的输入明文,以64位为数据分组,然后对这些明文进行替换和换位,最后形成密文。

(1)DES算法的特点如下:

1)对称算法。既可用于加密,也可用于解密。

2)64位的密钥,使用长度位56位(64位明文中,有8位用于奇偶校验)。

3)加密算法是混淆与扩散的结合,或者说是换位与置换的结合。

4)每个DES都在明文上实施16重相同的组合技术。这种重复性可以被非常理想地应用到一个专用芯片中[4]。

(2)DES算法加密一段64位的数据块以下3个步骤:

1)初始置换。首先对64bit的明文X进行初始置换IP后得出X0,并将其左半边32bit和右半边32bit分别记为L0和R0。在初始置换过程中,64位的明文经过一个初始循环IP后,比特重排产生了经过置换的输入。

2)迭代过程。在初始置换过程完成以后,迭代过程则对同一个函数进行16次循环,该函数本身既包含有置换函数也包含有替代函数。最后一次循环(第16次循环)的输出由64位组成,它是输入明文和密文的函数,这个输出的左边与右边两个部分经过交换就得到预输出。

3)IP-1处理。将所得密文(因为没有交换,因此是R16L16)进行IP逆置换IP-1,最后输出经DES加密以后得到的密文。

(3)DES算法的解密过程中使用同样的步骤和同样的密钥,只需把16个子密钥的顺续颠倒过来,应用的顺序为K[16],K[15],K[14],。。。。K[1]。无论是个人或商业的应用(如:银行系统的自动取款机ATM)依然采用DES加密,迄今为止,DES是世界上第一个公认的实用密码算法标准[5]。

4.2.2 DES算法设计

基于.NET的开发环境下DES加密和解密的实现方法。首先引入System.Security.Cryptography命名空间。该空间包含实现安全方案的类,例如加密和解密数据、管理密钥、验证数据的完整性并确保数据没有被篡改等。通过DESCrypto ServiceProvider类中的Create Encryptor和Create Decryptor函数实现对明文值的加密和解密。其中DES算法的主要代码如下:

4.3 RSA算法

RSA算法是一种非对称加密算法。在公钥加密标准和电子商务中RSA被广泛使用。虽然把两个大质数相乘生成一个合数是一件非常容易的事情,但要把一个合数分解为两个质数却十分困难。

RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前,RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解140多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定[6]。非对称密码体制中RSA算法是一个既能用于数据加密也能用于数字签名的加密算法。

5 结语

研究分析数据库系统的安全,预期达到的目标为:能识别用户,合理地分配权限,最大限度地实现数据的共享性;控制已经进入系统的用户,防止产生数据的安全隐患;对重要数据进行加密,同时.NET环境下用C#编程实现了DES的加密与解密,实现数据的完整性。通过对SQL Serer 2000的实际操作,实现数据库安全的实际应用。

参考文献

[1]徐玲.数据库安全技术分析及安全增强技术研究[D].重庆:重庆大学,2004.

[2]葛洪伟,姜代红,罗海驰,等.数据库系统原理与应用[M].北京:中国电力出版社,2008.

[3]余晨,李文炬.SQL Server2000培训教程[M].北京:清华大学出版社,2001.

[4]张基温.信息安全实验与实践教程[M].北京:清华大学出版社,2005.

[5]李辉星.DES加密算法的研究[J].景德镇高专学报,2008,23(2):29-31.

多级安全关系数据库管理系统 篇8

关键词:多级安全,数据库,管理

0.引言

国内外对于多级安全数据库管理系统研究领域已经开展了很多研究,而且设计了许多的多级安全数据库体系架构。这些体系架构主要分成TCB子集结构(TCB Subset DBMS)、可信主体结构(Trusted Subject DBMS)和外部封装体系结构等三类。

1. 访问控制模型概述

安全模型是概念模型的一种,其具有独立于软件实现以及高层抽象等特点,亦称作策略表达模型。在各种安全系统中(数据库系统也包括在内),安全模型能够有效的将该系统的安全策略和安全需求精确地描述出来。自上世纪70年代起,很多安全模型相继出现,而最重要的安全策略则是实施访问控制。仅有被授权的用户、程序或进程才能对系统资源进行访问,即访问控制,其对系统谁能访问,系统的哪些资源能够被访问,怎样对这些资源加以使用等做出决定。对于未经允许的用户采取适当的访问控制可防止数据被他们无意或有意获取。

安全模式以不同的访问控制策略类型为依据,可分成强制访问控制(MAC,Mandatory Access Control)以及自主访问控制(DAC,Discretionary Access Control)两种类型。

对于用户或用户组,即系统中的主体以自身的身份以及安全策略为依据,允许访问系统中的信息对象的模式,例如通过读、写等手段对用户访问信息对象进行控制,这就是DAC即自主访问控制的基本思想。对象由单个用户生成,单个用户拥有对象;对象的拥有者可完全支配对象,对其它用户能否访问该对象做出决定。DAC这种访问控制策略允许主体施加特定限制给访问控制。主体被允许设置访问控制权限给访问资源的用户,系统在用户访问资源时会对用户访问该资源的权限进行检查,用户能够访问资源的前提是通过验证,反之该用户则无权对系统继续访问。访问矩阵是自主型安全模型的典型代表。在数据库管理系统以及操作系统中该模型均可使用,访问矩阵的基本思想是,在全局矩阵A中存储全部的访问控制信息,主体表示为A中的行,客体表示为A中的列,A中的每一个元素代表i(主体)有权访问j(客体)。如:在某系统中,有User1、User2以及User3三个主体,有O bject1、O bject2、O bject3以及O bject4四个客体。

简单易行、直观明了是该方法的优点,不过每有一个主体或客体增加,都要将其与其它全部客体或主体比较,所以更新等操作相当麻烦,需要付出很高的代价。怎样对特洛伊木马的攻击进行有效抵御是DAC普遍难以解决的问题。在拥有对象者不知情的情况下,为了将访问控制机制绕过,破坏、篡改或者修改系统信息,木马能够以属主的身份授权攻击者,或者以某种方式表示信息,使攻击者能够访问信息。利用无法逃避的访问控制,强制访问控制能够对各种攻击,包括直接的和间接的加以防止。系统在强制访问控制下会指派不同的安全属性给主体和客体,在没有改变系统安全策略的情况下无法轻易改变这些安全属性。系统对主体和客体的安全属性是否匹配进行检查,以此对允许继续访问与否进行判断。包括用户自己的数据资源在内的所有数据资源用户都无权赋予其它用户访问权限,所以数据的访问控制不能简单指派,这是强制访问控制与自主访问控制的不同之处。BIBA模型以及BLP模型等是强制访问控制模型的典型代表。

如果系统对安全性的要求不高,其安全性需要自主访问控制即可满足。而在一些有较高安全性要求的系统中,如国防、军事等的应用中,强制访问控制必须实现。不过如果系统中只有强制访问控制,则会出现无法正常使用很多资源的现象。所以,以MAC为主,辅以DAC的访问控制策略适合在有较高安全性要求的系统中使用。

2. 完整性锁体系结构

完整性锁体系结构(Integrity Lock Architecture)是一个可信主体DBMS体系结构的重要的变种。

在锁体系统的构成中有三个重要的组成部分,一部分为不可信前端进程,另一部分可信的筛选器进程,最后一部分为不可信的数据管理器进程。

不可信前端进程和用户进行交流,任务是进行查询语法分析,并返回给用户处理器所查询结果。可信的筛选器进程就是把数据数据库对象及其安全标签进行加密与解密。可信前端把每个元组进行校验和后必须将有关这些操作都完成,有效提高了TCB的复杂性。除此之外,验证校验和通过修改后产生后察修改,但无法有效修改以及删除组织数据。

3. 改进的MLS/DBMS体系结构

本文前文讨论了安全管理体系常见的系统结构。在本部分的讨论过程中,提出以本人工作经验为基础的MLS-DBMS体系结构,对此结构进行系统的分析以及其对数据库管理系统的作用机理,并集合代码对其安全内核以及相关安全模块进行分析。

本文可信的操作系统使用的是Seclinux,如图1展示体系结构。

本系统构成由四个安全等级组成,分别为:系统公开级别(Unclassified),系统秘密级别(Confidential),系统机密级别(Secret)、系统绝密级别(Top Secret)等四个等级。具有安全内核的安全数据库管理系统SECBase,各个安全等级的DBMS实例,可信操作系统Seclinux,以及各级数据片段是这个体系结构主要包括的四个部分。这个体系结构中,用户端被SECBase安装了相关安全机制,它可以对来自不同安全等级用户端的操作进程对DBMS来讲是否可信进行了保证。

在上述的四个安全级别中每个安全能级均存在级DBMS分支,并且利用每一级数据库的不同而创造具体实例。其中包括本级层次的数据以及通过本级别数据调配的子集单级数据库,系统受到了由单级DBMS传输而产生的用户请求后,由能够确保DBMS和数据的完整性,将采用可信操作系统Sec Linux对各级数据文件进行访问,这样不仅充分使可信操作系统的安全功能被充分利用,同时还利用可信操作系统达到MAC。

多级安全数据库根据其安全级别被分解为多个分别存储的单级数据库,每个单级数据库对应一个安全级别,数据库的数据被分别存储在各级数据磁盘中,根据安全级别进行成严格的区域分割,而且可以利用相应的访问控制规则对各个区域之间的访问进行控制。自主访问控制模块(DACM)、强制访问控制模块(MACM)、推理控制模块(ICM)、安全约束处理模块(SCM)和审计模块(AM)就是SECBase安全内核主要的模块。只要用户登陆成功,就可以提出访问请求。

4. SECBase安全内核相关模块

4.1 自主访问控制模块

自主访问控制做表一级的权限检查。用户的访问请求经分析解释以后传递给自主访问控制模块,自主访问控制模块检查该用户是否对该表进行诸如插入之类操作的权限。当自主访问通过控制检查,强制访问控制模块就会接收到用户的访问请求,否则就拒绝用户的访问请求。在DBMS启动时自动加载了用户权限,一个用户对一个表具有的权限都被这个表中每条元组进行一一记载。

系统管理员(DBA)进行负责自主访问控制,利用GR AN T和R EVO KE连个操作对用户进行授权和撤销权限。

4.2 强制访问控制模块

强制访问控制是通过用户无法回避的存取限制来防止各种直接和间接的攻击。通过了自主访问控制检查的用户请求被送到强制访问控制模块进行强制访问控制检查。当通过了强制访问控制检查,推理控制模块也接受了用户的强求,否则就拒绝请求。半元组级标记在SECBase中达到,对实体多实例和元组多实例也支持。普通用户对不大于自身安全等级的数据实体进行创建。

4.3 安全约束处理模块

根据递给推理控制模块接受了释放的安全约束并进行处理,其他类型的安全约束采取来计算密级模板。安全约束定义我们可以从下面得出:

struct Security_Constraints{int N um//约束编号Label Typeleft//“”的左边的变量Label Typeright//密级常量或变量charselection_control//选择条件,就是这个安全约束采用的范围}。

本文建立的是一个以安全约束图为基本安全框架的密级分配算法并且以基础构建的安全算法为基本对安全约束图进行二次约定。进而通过二者的相互制约达到安全系统相互牵制的作用。建立安全约束图仅仅是为了保证约束的执行顺序能够安全合理,所以建图时对于选择条件可以不用考虑。

参考文献

[1]Bell D.E.,LaPadula.L.J.Secure Computer Systems:Mathematical Foundations.ESD-TR-73-278,Vol.I,AD 770 768,Electronic Systems Division,Air Force Systems Command,HanscomAir Force Base,Bedford,MA,USA,Nov 1973.

[2]Bell D.E.,LaPadula.L.J.Secure Computer Systems:AMathematical Model.ESD-TR-73-278,Vol.II,AD 771 543,Electronic Systems Division,Air Force Systems Command,HanscomAir Force Base,Bedford,MA,USA,Nov 1973.[14]Landwehr,Carl E.,Connie L.Heitmeyer,and John McLean,A Security Model forMilitary Message Systems,ACM Trans.Computer Systems,Vol.2,No.3,Aug.1984,pp.198-222.

[3]Graubart,Richard D.and John P.L.Woodward,“APreliminary Naval Surveillance DBMS Security Model,”Proc.IEEESymp.Security and Privacy,Oakland,Calif.,Apr.1982,pp.21-37.

[4]Denning D.E.,Lunt T.F.and R.R.Schell et al.A multilevelrelational data model.Proceedings of 1987 IEEE Symp.Securityand Privacy.Oakland,CA.IEEE Computer Society Press.Apr.1987.

[5]Denning D.E.,Lunt T.F.,R.R.Schell et al.The SeaViewsecurity model.Proceedings of 1988 IEEE Symp.Security andPrivacy.Oakland,CA.IEEE Computer Society Press.Apr.1988.

[6]Thuraisingham B M.A nonmonotonic typed multilevellogic for multilevel secure database&knowledge-base managementsystems.Proceedings of the 4th IEEE Workshop on ComputerSecurity Foundations,1991.pp.127-138.

数据库系统安全 篇9

计算机技术的发展改变了人类工作及生活方式, 使其成为高效管理的手段, 促进计算机数据库领域研究的进展。计算机网络的广泛应用有其积极的一面, 但也出现一些问题, 网络开放性与信息安全性的矛盾一直存在。数据库远程访问的安全逐渐成为研究热点, 如非法访问、黑客攻击、数据篡改等安全问题的存在对于网络系统安全构成了极大威胁。

2 数据库安全代理访问

为实现数据库的安全访问, 在数据库传统访问方式中以代理形式添加加密、认证及防火墙等安全技术, 组成数据库新的访问结构。

2.1 系统总体结构

数据库安全访问代理主要用于对用户身份进行认证, 以及为数据库访问提供传输加密等服务, 用户对数据库的访问请求都需要利用数据库安全访问代理向其需要目的地转发。服务器端接收用户数据库访问请求后, 运行数据库相应服务后向客户传送访问结果。

数据库访问请求根据协议格式向数据报提供至数据认证客户端, 由数据认证客户端根据协议格式提供访问结果。

数据加密认证工作由客户端完成, 实现强大数据加密功能以确保数据安全。通过客户端发出的数据库访问请求由服务器接收, 该请求经客户端加密。解密后数据传至代理服务器, 结果执行完毕返回后加密回送客户端。

由上述描述可知代理系统处于广域网中, 数据库访问中广域网是最薄弱环节, 易出现各种安全问题。广域网通过代理后传输加密数据, 通过认证签名技术可有效避免窃取篡改数据, 使系统数据安全性有效提高。向数据库服务器提出代理客户数据访问请求由数据库访问代理服务器实现, 接受应答后执行相应数据库操作。

2.2 安全访问代理特点

在数据库与具体应用之间, 安全访问代理起到数据库中间件的作用。在代理系统中实现对访问请求的控制管理, 并与数据库结合实现充分发挥其性能的目的。如数据库连接池的建立就是克服传统的C/S结构弊端, 具有可重用、灵活、易管理维护等优点。远程过程调用中间件在C/S计算上, 具有客户机的灵活性, 使其比数据库中间件在更复杂的C/S计算环境中广泛应用。

2.3 安全访问代理作用

安全访问代理由系统接收访问请求后, 将对数据库的访问请求映射至代理系统, 系统对这些请求不进行复杂处理, 结合代理能实现安全控制的特征, 以及对外接收数据库访问的请求。数据库系统对代理访问请求接受后实现隔离与安全保护。另外, 还能加到其它己应用的信息系统中, 使系统安全性明显提高。

2.4 防火墙

目前网络最严重的问题是黑客攻击, 其后果造成信息被窃取、系统瘫痪甚至网络堵塞。数据库安全访问代理能够实现应用级网关防火墙功能, 使数据库在广域网中得到保护, 通过代理服务器完成对数据库的访问。代理服务器运用防火墙技术实现对黑客攻击的抵御, 同时结合数据加密与身份认证等安全技术提高系统安全性。

同时位于同一局域网中的代理服务器与数据库能够有效避免广域网中的用户访问及非法攻击, 起到保护数据安全的重要作用。

2.5 SSL加密认证技术

在代理系统中的数据加密、身份认证与签名等安全措施都是通过SSL技术来实现。应用程序一般采用IPC与各层次安全协议进行通信, 并工作于不同传输层协议中。

2.6 多层结构

为避免因传统C/S结构的不足对系统应用造成的不利影响, 出现了一种分割式应用程序, 即三层 (N层) C/S模型结构。应用程序被系统分割为不同逻辑组件, 主要分为用户服务、业务处理与数据服务三层。因安全访问代理加入系统而形成多层结构, 应使其单独形成一层, 利用标准数据库访问接口与其它层连通, 提高系统灵活性, 使数据安全访问代理的设计复杂性大大降低。

2.7 ODBC技术

ODBC对众多数据库的支持与操作的主要愿意是因目前主流的多数数据库都是基于关系数据库的基础。其基本思想是提供相对独立的程序以利于数据信息提取, 并对应用程序实现数据的有效输入方法。其接口具有互操作性的优势, 使软件设计师可在非特定数据源条件下建立基于ODBC应用的相应程序。同时在应用程序方面, 为使各驱动程序与数据源都能实现对ODBC函数的调用与SQL语句集的支持, 其接口对级别进行了一致性定义, 使ODBC API与ODBC SRL语法实现一致。

2.8 应用透明性

对数据库的具体应用是否采用数据库安全访问代理与其对数据库采用何种访问方法无区别称为安全代理访问应用透明性。技术透明性能够实现向上继承, 这是其最大的优点。应用透明性主要是采用标准数据库访问技术进行实现的, 对数据库的任一访问操作都是通过访问代理系统映射为同一数据库访问而进行实施的, 由于映射的一一对应, 原开发的应用程序不需做任何改动, 这也使系统方案设计的灵活性大大提高。

2.9 数据压缩传输

数据传输在安全访问代理中主要是利用因特网来实现的, 因特网带宽比局域网窄很多, 很容易造成数据库访问拥塞, 对数据库效率产生不小影响。因此, 可通过采用数据压缩传输方式进行解决, 数据压缩是SSL的重要组成部分, 这样可在一定程度上提高数据传输效率, 目前压缩比基本上可达到四比一左右。

结束语

计算机网络发展至今, 黑客攻击、数据窃取等已覆盖几乎所有的信息系统, 这些安全问题需要加强安全控制及培训, 提高安全意识。目前, 可基于数据库安全访问代理相关技术在数据与其应用间建立一个数据库访问多层结构, 能够实现代理相对独立, 使系统复杂度有效降低。安全代理访问技术在一定程度上可提高数据库安全, 对于保护数据被非法窃取, 避免黑客攻击等具有积极的意义。

参考文献

[1]宋红君, 秦利波.数据库安全技术策略与多级安全代理模型[J], 华北科技学院学报, 2005.2.[1]宋红君, 秦利波.数据库安全技术策略与多级安全代理模型[J], 华北科技学院学报, 2005.2.

[2]贺达, 洪飞龙, 鄢田云等.数据库应用系统中安全代理的研究与实现[J].网络安全技术与应用, 2005, 2.[2]贺达, 洪飞龙, 鄢田云等.数据库应用系统中安全代理的研究与实现[J].网络安全技术与应用, 2005, 2.

[3]谷震离, 杜根远.SQLserver数据库应用程序中数据库安全性研究[J].计算机工程与设计, 2007.10.[3]谷震离, 杜根远.SQLserver数据库应用程序中数据库安全性研究[J].计算机工程与设计, 2007.10.

[4]金烨, 曹珍富.一个新的用于移动代理的签名方案[J].计算机工程, 2010.6[4]金烨, 曹珍富.一个新的用于移动代理的签名方案[J].计算机工程, 2010.6

[5]周世忠.浅谈网络数据库安全研究与应用[J].电脑知识与技术, 2010.5.[5]周世忠.浅谈网络数据库安全研究与应用[J].电脑知识与技术, 2010.5.

[6]汪新建, 罗绯, 李明.网络数据库的应用与安全认识[J].西南军医, 2009.1.[6]汪新建, 罗绯, 李明.网络数据库的应用与安全认识[J].西南军医, 2009.1.

数据库系统安全性分析与实现 篇10

1 数据库系统的安全属性分析

对数据库系统安全属性的分析, 是实现数据库安全策略的一个重要环节, 是一个数据库系统采用恰当安全策略的前提。数据库系统的安全属性涉及多个方面, 从总体上来讲, 包括机密性、完整性、可用性、可控性和可审查性等属性。

(1) 机密性:防止数据被非法窃取、调用或存取而泄密。数据只能被其相应的合法用户访问或调用。 (2) 完整性:防止非法用户对数据进行添加、修改和删除, 同时也防止合法用户越权访问对未被授权的数据进行添加、修改和删除, 并且能够判断数据是否被修改。 (3) 可用性:确保合法用户在需要的时候可以访问数据, 并按需使用。防止数据被破坏, 或被非法抢占。 (4) 可控性:对数据的访问进行权限控制, 确保具有不同权限的合法用户访问该访问的数据, 做该做的操作, 同时对非法访问进行检测并干预其非法行为。 (5) 可审查性:对违反安全策略的事件提供审计审核手段, 能记录和追踪这些非法活动。

2 数据库系统的安全技术分析

基于数据库系统的各种安全属性要求, 各种数据库系统充分提供了多种多样的安全性技术以提高数据库系统的安全性。经典的数据库系统的安全技术或机制包括加密技术、身份验证机制、访问控制、审核与跟踪、备份与还原、容错技术等。

加密技术是指通过对明文数据进行模糊处理, 形成密文, 非法者获取了这样密文的数据是没有任何作用的, 除非使用对应的解密密钥, 把密文解密成明文。在数据库系统中可以采用加密函数、对称密钥、非对称密钥、透明数据加密和证书等加密机制来实现数据的加密。

身份验证机制, 当实体 (如用户) 连接到数据库时, 必须提供其凭据 (如登录账号和密码) , 数据库系统对实体提供的凭据进行验证, 如果验证通过则可以连接到数据库, 否则, 不能连接到数据库。对需连接到数据库的实体进行身份验证可以由数据库管理系统本身来完成 (如MS SQL Server服务器) , 也可以通过操作系统来完成。

访问控制与身份验证机制密切相关。当实体 (如用户) 成功通过了身份验证, 然后访问控制机制对实体的访问请求进行处理, 检查该实体对被访问数据的操作权限, 并做出相应的处理, 使实体在权限范围内执行相应的操作。

数据库审核与跟踪技术, 对数据库的访问与操作等事件进行记录, 经过审核的事件写入事件日志或审核文件中, 审核内容包括登录审核、安全审核、SQL审核等, 不但可以在服务器级别创建审核, 而且可以在数据库级别创建审核。

数据库的备份和还原技术, 是保证数据安全性的重要措施, 防止数据丢失或破坏带来的严重后果和损失。备份就是对数据进行复制形成副本, 当数据被破坏或丢失时, 可以通过副本还原到备份时的状态。备份和还原是保证数据可用性的重要安全措施, 也是数据库系统重要的日常维护工作。

数据库的容错技术, 不仅有部件级的容错技术, 也有系统级别的容灾技术。经典部件级的容错技术就是RAID技术 (如RAID1、RAID5等) , 以确保当磁盘上某部分数据被破坏时, 数据库系统仍然正常运行, 同时在线自动恢复被破坏的数据。数据库系统的异地容灾, 是系统级别的容错技术, 就是在不同的地方, 构建一套或多套具有相同数据和应用的系统, 当某一系统崩溃或发生灾害破坏时, 其他地方的数据库系统能接管, 保证整个系统正常运行。对企业级的应用和数据库系统起到了安全性和业务连续性的作用, 但系统建设成本昂贵。

3 数据库系统的安全策略实现

根据数据库安全技术的分析, 结合数据库系统的架构, 可以在数据库系统的系统级别、服务器级别、数据库级别和数据库对象级别实现不同的安全技术。系统级别采用异地容灾技术, 服务器级别可以采用身份验证、访问控制、角色管理和审核等, 数据库级别可以采用访问控制、角色管理和审核等, 数据库对象级别可以采用权限管理, 再结合RAID容错技术、加密技术、备份与还原技术, 这样, 就构建成一个数据库系统的整体安全策略解决方案, 如图1所示。

4 结语

数据库系统安全 篇11

关键词:PKI;CA;非对称加密;对称加密

中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)15-30633-03

Data Security Policy of Party-constructure Management Information System Based on PKI Technology

YU Zhi-min, CAI Qiu-rou

(Dept. of Computer Science and Engineering, Tongji University, Shanghai 200331, China)

Abstract:The structure of party-construct information system is discussed in this paper. In this system, the platform for data exchanging is the kernel. It is most important to ensure the data transferring safety, data integrity, no modification and not negation. So the system security solution based on PKI technology is brought forward and implemented.

Key words:PKI; CA; unsymmetrical encrypt; symmetrical encrypt

1 引言

随着改革的不断深入和上海经济的快速发展,如何运用科学手段对上海现有130万党员、6万多党组织进行有效管理,是新时期党建的重要课题,也是为适应新形势下社会经济结构的“多元化”变化对党建提出的新要求。基于Internet的党建信息系统的建立,旨在对全市的党员、党组织信息进行集中、统一的管理,及时、准确地掌握各种数据,为领导的决策提供充分依据,为全市的基层党建工作提供有力的技术支持。随着计算机技术的发展和互联网络的普及,信息系统的安全正在受到前所未有的挑战。黑客骚扰、病毒侵入、机密信息泄漏等等正成为许多信息部门需要面临的棘手问题。上海市党委组织部是重要管理部门,掌握着许多国民经济重要信息,因此它的信息安全建设在整个信息系统项目中具有非常重要的意义。

2 党建信息系统的业务要求

系统将建立统一集中的数据库,数据包含三大方面,即:党组织信息库、党员信息库、辖系单位信息库。

信息系统主要包括党员服务中心管理系统,部内服务系统,数据交换服务系统,应用服务系统,管理系统,党员服务系统等。其中的核心是数据交换平台。在系统中数据交换平台将负责公务网外各个组织之间以及组织和党员服务中心之间的数据交换,因此是一个非常重要的功能枢纽环节。当某一个公务网外的组织信息发生变化,则系统会自动将变动的数据打包,然后发送到数据交换平台;平台会按照预先设定好的消息队列,将该数据包发送到有接收权的组织(如党员服务中心、发送信息的组织的上级组织等),并通过数据交换平台将接收方接收到数据的确认信息反馈到发送信息的组织,完成整个数据交换的操作流程。

3 安全需求

前面已经提到,党组织、党员的信息是一些比较重要的数据,首先,要保证数据存储、操作安全;而且整个系统中有一部分是在Internet上运行的,因此安全问题就更加关键和重要。确保网上信息有效、安全地进行,从而使信息除发送方和接收方外,不被其他方知悉;保证传输过程中不被篡改;发送方确任接收方不是假冒的;发送方不能否认自己的发送行为,即非否认性。

4 解决方案及具体实现

4.1 系统的解决方案

近年来,通过电子身份认证来实现网上数据交换的安全性的技术被越来越广泛的使用。公钥基础设施(PKI)是目前网络安全建设的基础与核心,是电子商务安全实施的基本保障。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息和公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效时间,发证机关(证书授权中心)的名称,该证书的序列号等信息,证书的格式遵循ITUT X.509国际标准。利用PKI体系,可以综合应用数字摘要、数字证书、对称加密算法、数字签名、数字信封等加密技术,可以建立起安全程度极高的加解密和身份认证系统,基于上述因素,本系统在建设上充分运用现代网络信息技术及CA认证体系,建立以PKI技术为基础的信息管理数字身份认证系统,以确保网上数据传输的安全性和可靠性,保证系统的正常运行。

4.2 数据信息的安全实现

系统的核心就是数据的交换服务,负责与技监局、社保卡中心进行数据交换。党员服务中心将定期把管理的党组织所辖系的单位信息与技监局管理的单位信息数据进行比对,如信息不一致,则以技监局的数据为准,将单位信息数据导入,更新原有的单位数据;同样,党员服务中心也将定期把管理的党员个人基本信息与社保卡中心管理的人员信息数据进行比对,如信息不一致,则以社保卡中心的数据为准,将人员基本信息数据导入,更新原有的党员个人基本信息,并向社保卡中心提供描述人员党员属性的相关信息,如入党时间、所属党组织等。但是保证数据在传输中的安全、完整和不可篡改以及发送数据方的不可否认性尤为重要。

数据在数据库的访问是经过严格认证的,用户的密码是经过摘要处理后存入数据库,别人无法知悉。

数据在传输前经过加密处理,接受方接收到后进行解密处理来保证数据的安全,当密钥的安全和交换必须谨慎进行。我们知道对称加密速度很快,在不知道密钥的情况下,如果加密强度适中很难破译,但是密钥被截获将造成灾难性的后果。非对称加密不存在这个问题但速度比对称加密慢百倍以上。所以,采用对称加密的方法对数据进行加密,对称密钥随机、实时地生成,然后经非对称密钥加密后和加密的数据一起打包传输,这样就保证了传输数据被截获也不会泄漏。另外为了保证数据的完整性、正确性和发送方的不可抵赖性,对数据进行数字摘要处理,并对数字摘要进行数字签名,就保证了发送方的不可抵赖性,最后把上述信息一起打包传输,具体流程如图1所示。接受方收到后进行相应处理就可以还原数据,并可以确认发送者的身份,流程如图2所示。

图1 用户A发送流程图

具体实施如下:在进行对话之前有个握手过程,握手过程中所交换的信息如下。

(1)双方交换X.509 V3格式的身份证明文件。双方利用非对称加密技术(如RSA)验证对方的身份并得到对方的公钥;

证书的内容包括:证书序列号、证书使用DSA和SHA-1哈希算法签名、证书发行者的名字、证书主体的名字、证书的有效期、DSA 公钥及其参数、主体键标识扩展项、基本扩展项标识等组成。

图2 用户B接收流程图

握手过程建立后,如图1所示用户A发送数据的过程为:

(1)用户A组织好业务数据包(明文);

(2)用户A使用私钥对数据包进行数字签名,并将签名块放到业务数据包后面;

数字签名的代码如下:

java.security.Signature signet

=.Signature.getInstance("DSA");

signet.initSign(priKey);

signet.update(information);

byte[] signedInf=signet.sign();

(3)使用双方约定好的对称密钥和加密算法加密数据(密文);

加密过程代码如下:

Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");

cipher.init(Cipher.ENCRYPT_MODE, skey);

fileIn = new FileInputStream(fileName);

fileOut = new FileOutputStream(outFileName);

CipherOutputStream cipherOut = new CipherOutputStream(fileOut, cipher);

(4)以用户B的公开密钥加密对称密钥,代码如下:

javax.crypto.Cipher rsaCipher rsaCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");

rsaCipher.init(Cipher.ENCRYPT_MODE, pubRSAKey);

byte[] keyBytes = symmetricKey.getEncoded();

byte[] encodedKeyBytes = rsaCipher.doFinal(keyBytes);

(5)发送加密后的数据包。

通过SSL通讯还可以保证传输通道安全。

如图2所示用户B的接收处理过程为:

(1)接收加密的数据包;

接受数据报到数据包后触发数据处理程序。

(2)以用户B的私有密钥解密对称密钥;

javax.crypto.Cipher rsaCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");

rsaCipher.init(Cipher.DECRYPT_MODE, priKey);

if (common.Public_var.sKey != null) {

byte[] encodedKeyBytes= rsaCipher.doFinal(common.Public_var.sKey);

SecretKeySpec keySpec = new SecretKeySpec(encodedKeyBytes,"DESede");

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");

SecretKey desKey = keyFactory.generateSecret(keySpec);

(3)用对称密钥对加密的数据进行解密;

java.io.ObjectInputStream objIn

= new ObjectInputStream(

new FileInputStream(skeyFileName));

Key key = (Key)objIn.readObject();

Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");

cipher.init(Cipher.DECRYPT_MODE, key);

fileIn = new FileInputStream(fileName);

fileOut = new FileOutputStream(outFileName);

CipherInputStream cipherIn

= new CipherInputStream(fileIn, cipher);

int theByte = 0;

int fileLength = 0;

while ((theByte = cipherIn.read()) != -1)

{fileOut.write(theByte);

fileLength++;}

(4)对明文用一次Hash算法,得到信息摘要;同时用用户A的公开签名密钥对数字签名进行解密,等到信息摘要;

Hash算法比较简单,采用MD5或SHA-1算法都可以获得较好的效果。

代码如下:

java.security.MessageDigest mesDigest = java.security.MessageDigest.getInstance("MD5");

mesDigest.update( message);

byte[] digest = mesDigest.digest();

(5)将两个信息摘要进行对比,如果一致说明数据是完整的,没有被篡改;反之表明数据被篡改过。

(6)数字签名的验证:根据A发送的数据包中的签名,B使用A的公钥进行验证,如果验证成功证明确实是A发送过来的,数据包可以长时间保存,对于防止今后的法律纠纷有重要作用。

如下所示:

java.security.Signature signCheck = java.security.Signature.getInstance("DSA");

signCheck.initVerify(pubKey);

signCheck.update(information);

if (signCheck.verify(signedInf)

根据以上数据传输过程,可以完全保证数据传输的保密性、完整性、身份认证和不可抵赖性。

为了保证系统的稳定性和可靠性,系统选用上海CA中心提供的数字认证系统,来对系统中的用户身份进行认证,并对数据进行加解密,保证系统的安全性。该系统已获得国家专利,通过国家权威部门的测评,是保密局推荐的政府采购安全产品。

5 结束语

本文探讨了党建信息系统采用的安全策略,描述了系统安全框架的软件结构,给出系统安全的解决方案。满足了系统的需求,保证了数据交换中数据的完整性、不可篡改性,发送方的不可抵赖性,较好的实现了系统的安全。在上海党建系统已基本运用成功,这些经验对于全国的推广有重要意义。

参考文献:

[1] Bruce Schneier,Applied Cryptography[M]. 机械工业出版社,2000.1.

[2] Bruce Eckel. Java编程思想[M]. 机械工业出版社,2001.5.

[3] 李明柱. PKI技术及应用开发指南. http://ibm.com/developerWorks/cn/.2002-6.

[4] MD5算法研究. http://www.5xsoft.com. 2002-5.

数据库系统安全 篇12

1 企业的数据库系统常见的安全机制及缺陷

现阶段,企业数据库系统常见的安全机制包含下面几种:①依靠操作系统当中的访问控制功能进行安全管理。当前,各种主流的操作系统都具有较为健全的用户认证体系。针对系统中的用户,系统中都有一个与之对应的访问控制列表(ACL),在这个访问控制列表当中针对用户具体的访问权限进行了设定。每一个登录系统的用户都必须在其对应的权限当中进行访问。如此一来,数据库的管理层就能够通过对每一个用户的访问权限进行控制,从而有效控制用户针对数据库当中信息资料的删除、复制、写入以及读取等各个方面的操作进行限制。②应用用户身份认证来进行安全管理。一般来说,通常使用的十分认证都是用户在进行数据库登录的时候必须要输入对应的用户密码,通过密码验证的形式来针对企业不同的数据资料进行保护。一般都是在一个对应的配置文件当中来进行用户名与密码保存,而这个密码通常是运用某类加密模式进行存储的,从而有效避免因为配置文件被非法访问的时候导致密码外泄。③针对数据库进行加密来实现安全管理。采用这种安全体系的设计理念在于应用密码学的模式来针对储存在数据库当中的数据资料实施加密保护,以此来提升数据库当中储存的原始数据的安全性。

而上述这三种安全机制都存在着不同的缺陷。①依靠操作系统当中的访问控制功能进行安全管理,这种模式的缺陷在于:一方面,数据库当中的资料安全基本都是依靠系统进行保护,当系统配置不当的时候,安全无法得到保障;另一方面,当数据库当中的信息资料在电脑间或者目录间进行移动的时候,这种保护模式就完全失去作用。因此,该种模式的最大弊端在于必须要依靠外部环境来进行保护,倘若外部环境出现变化,数据库中的信息资料就非常容易遭受入侵。②应用用户身份认证来进行安全管理,而这种模式的最大弊端在于完全依靠密码验证的身份认证。倘若是内部用户采用正常模式(应用数据库管理软件)来打开对应的数据库资料,这种模式自然非常适用。然而,倘若外部入侵者采用二进制文件模式来打开数据库资料的时候,就能够轻易的避开身份认证。因此,该模式的最大弊端在于其主要依靠数据库管理软件来进行保护,无法避免入侵者采用其他模式进行查看。③针对数据库进行加密来实现安全管理,由于企业数据库当中的资料较大,采用该种模式进行加密与解密所需要的时间也非常久,用户每一次打开与关闭通常都需要耗费几分钟的时间来进行加密与解密,实用性不高[2]。

2 企业数据库系统安全防入侵策略

2.1 保障硬件安全

硬件是保障企业数据库安全的先决条件,硬件设施是否安全直接涉及到企业数据库系统是否能够安全、正常的运转,其同时也是企业数据库进行日常安全维护的前提条件。所以,企业在选择自身数据库系统硬件的时候,除了考虑经济方面的因素意外,还必须要综合考虑硬件技术的便捷性与优越性。企业数据库系统是整个企业网络运转的关键,这个数据库的硬件设施性能直接关系到整个企业各种系统的运转效率,所以,企业必须要高度重视硬件设施的选择工作。除此之外,企业还必须要重视UPS设施与服务器环境的监管工作,企业要想保障自身数据库能够稳定、安全的运转,服务器工作的环境(温度、湿度)也是至关重要的因素。一般来说,数据库系统服务器所处环境的湿度应当保持在50%~70%左右,温度应当控制在18℃~24℃之间,并且要尽可能保证这个环境无尘,要尽可能让每一项指标都达到相应的标准,以此来保障数据库系统的正常运转[3]。

2.2 加大网络安全防范力度

随着信息化网络的不断的普及,数据的共享范围也在不断拓展,信息资料的传播速度也获得了较大的提升。这在一定程度上也提升了数据的安全隐患,许多黑客或者不法分子利用网络当中的这些漏洞入侵企业数据库的新闻事件屡见不鲜。所以,加强企业数据库网络安全监管工作也是企业数据库系统防入侵的重要环节。对于网络当中不法分子经常使用的“伪造、修改、截获、中断”等入侵模式,企业应当采用下面几点措施进行防控。首先,正确配置企业数据库系统与网络,同时要定期进行检查,保障配置遭到非法修改。其次,在数据库网络当中设置防火墙,要在第一时间更新病毒库,加大漏洞扫描与安全审计工作的力度。再者,采用访问控制、身份认证、加密相结合的模式,以此来提升入侵的难度。最后,采用物理措施,在企业内部采用双网的模式,企业数据库必须要实施内网管理,从而有效减少数据之间的交叉。

2.3 加大数据软件的保护力度

①加大企业数据库系统的数据管理力度。其一是定期或者不定期更改管理员口令,通过更改管理员口令防止系统帐号被部分不法分子盗取之后私自入侵系统。其二是第一时间进行数据库版本升级或者进行系统漏洞修补,从而有效降低因为数据库系统自身的BUG所导致的数据库系统崩溃或者泄漏。其三是采用登陆审计模式,针对每一个进入到数据库的用户进行监管,记录其进行操作的详细流程,这种方面不仅有效加大了责任追踪力度,并且能够有效避免因为误操作所导致的损失。其四企业数据库必须要针对外网的开放进行限制。尽管企业建设数据库系统的目的在于资源共享,便于企业内部人员进行使用,然而企业数据库当中一些重要的“行业机密”或者“企业机密”,倘若不进行限制,则非常容易导致不法分子的入侵[4]。所以,要想保障企业数据库资料的安全,必须要针对外网访问进行严格的控制,对不同的员工设置不同的访问权限,并且要进行身份验证,从而有效保障数据库系统的安全。②加强信息库信息数据的备份工作。数据备份是进行数据保护、实现数据库迅速恢复的主要措施,尽管现阶段各个企业的数据库备份工作都是应用双机热备或者磁盘镜像的模式,但是利用网络设施来进行离线备份也是至关重要的。鉴于企业数据库当中的信息资料较大,并且这些数据的保存周期都非常长,备份设施可以选择虚拟带库、光盘或者磁带库备份等模式,倘若企业自身条件允许,也可以选择异地备份的模式,以此来有效避免因为意外入侵导致数据丢失的情况发生。

2.4 加大企业终端电脑管理与员工的电脑安全教育力度

企业内部员工是数据库信息资料使用的直接接触者,因此,只有针对员工进行电脑安全知识与数据库知识的培训教育,才能够让广大员工在使用的过程中有效避免安全事故的发生。这就需要企业定期开展对应的培训工作,编制详细的用户使用手册,同时还必须要重点标注使用过程中需要注意的重要事项,使得员工可以科学合理的利用数据库,防止数据库遭受不必要的破坏[5]。

3 结束语

综上述诉,企业数据库已经成为每一个企业必不可少的工具,数据库系统的构建与防入侵监管属于一项繁杂且漫长的工程,所以,企业数据库的管理工作必须要坚持细致入微,衔接得当,构建一个安全、稳定的环境,保障企业数据库系统安全、有序的运转。

摘要:随着科学技术与信息化技术日新月异的发展,各个企业都已经建立自己的数据中心与数据库服务器。但数据库在不断发展的同时,面临的风险也就越来越多。怎么有效保障企业数据库不被入侵,使得企业数据库系统保持完整性与机密性,这是当前各个企业急需解决的重要问题。鉴于此,该文主要讨论了企业数据库系统当中常见的安全机制与缺陷,在此基础上提出了及点企业数据库系统防入侵的建议,仅供参考与借鉴。

上一篇:爱与一个城市下一篇:年径流特征