㈠ 深入解析Oracle数据库安全策略
Oracle是关系型数据库管理系统,它功能强大、性能卓越,在当今大型数据库管理系统中占有重要地位。在正常情况下,Oracle数据库会保证数据的安全、稳定,为用户提供正确的数据,但由于计算机系统的故障(硬件故障、软件故障、网络故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失,整个系统都将处于瘫痪状态。因此,如何保证Oracle数据库的安全就陵慧掘成为整个系统安全的重要组成部分。
Oracle数据库的安全策略包括数据库的备份和恢复、用户角色管理。
一、数据库备份所使用的结构
Oracle数据库使用几种结构来保护数据:数据库后备、日志、回滚段和控制文件。
1.数据库后备是由构成Oracle数据库的物理文件的操作系统后备所组成。当介质故障时进行数据库恢复,利用后备文件恢复毁坏的数据文件或控制文件。
2.每一个Oracle数据库实例都提供日志,记录数据库中所作的全部修改。每一个运行的Oracle数据库实例相应地有一个在线日志,它与Oracle后台进程LGWR一起工作,立即记录该实例所作的全部修改。归档(离线)日志是可选择的,一个Oracle数据库实例一旦在线日志填满后,可形成在线日志归档文件。归档的在线日志文件被唯一标识并合并成归档日志。
3.回滚段用于存储正在进行的事务(为未提交的事务)所修改值的老值,该信息在数据库恢复过程中用于撤消任何非提交的修改。
4.控制文件,一般用于存储数据库的物理结构的状态。控制文件中某些状态信息在实例恢复和介质恢复期间用于引导Oracle。
二、在线日志
一个Oracle数据库的每一实例有一个相关联的在线日志。一个在线日志由多个在线日志文件组成。在线日志文件(online redo log file)填入日志项(redo entry),日志项记录的数据用于重构对数据库所作的全部修改。
三、归档日志
Oracle要将填满的在线日志文件组归档时,则要建立归档日志(archived redo log)。其对数据库备份和恢复有下列用处:
1.数据库后备以及在线和归档日志文件,在操作系统和磁盘故障中可保证全部提交的事物可被恢复。
2.在数据库打开和正常系统使用下,如果归档日志是永久保存,在线后备可以进行和使用。
数据库可运行在两种不同方式下:NOARCHIVELOG方式或ARCHIVELOG方式。数据库在NOARCHIVELOG方式下使用时,不能进行在线日志的归档。如果数据库在ARCHIVELOG方式下运行,可实施在线日志的归档。
四、Oracle的备份特性
Oracle备份包括逻辑备份和物理备份。
1.逻辑备份
数据库的逻辑备份包含读一个数据库记录集和将记录集写入文件。
(1)输出(Export)输出可以是整个数据库、指定用户或指定表。
(2)输入(Import)输入将输出建立的二进制转储文件读入并执行其命令。
2.物理备份
物理备份包含拷贝构成数据库的文件而不管其逻辑内容。
Oracle支持两种不同类型的物理文件备份:脱机备份(offline backup)和联机备份(online backup)。
(1) 脱机备份
脱机备份用在当数据库已正常关闭,数据库处于"offline"时,要备份下列文件:
所有数据文件
所有控制文件
所有联机日志
init.ora(可选的)
(2) 联机备份
联机备份可用来备份任何运作在ARCHIVELOG方式下的数据库。在这种方式下,联机日志被归档,在数据库内部建立一个所有作业的完整记录。
联机备份过程具备强有力的功能。第一,提供了完全的时间点尺核(point-in-time)恢复。第二,在文件系统备份时允许数据库保持打开状态。
备份方式特性比较
五、Oracle数据库的角色管理
Oracle数据库系统在利用角色管理数据库安全性方面采取的基本措施有:
通过验证用户名称和口令,防止非Oracle用户注册到Oracle数据库,对数据库进行非法存取操作。
授予用户一定的权限,限制用户操纵数据库的权力。
授予用户对数据库实体的存取执行权限,阻止用户访问非授权数据。
提供碧孙数据库实体存取审计机制,使数据库管理员可以监视数据库中数据的存取情况和系统资源的使用情况。
采用视图机制,限制存取基表的行和列集合。
六、Oracle数据库的安全策略
由于Oracle数据库备份有三种方式,每种方式具有不同的恢复特性,因此应集成数据库与文件系统备份,集成逻辑备份和物理备份。
(一)、备份策略
在操作系统级别,使用大容量磁盘阵列,通过磁盘映像技术使每一个数据库文件自动分布于每个物理磁盘。这样,当某个磁盘出现物理损坏时,操作系统会自动引发映像磁盘来取代失效的磁盘,保证数据库的正常运行。
在多个不同的物理磁盘上保持多个控制文件的备份。控制文件在数据库恢复期间用于引导Oracle,因此保持多个控制文件的备份,可以确保在出现磁盘故障后,能有可用的控制文件用于数据库恢复。
使数据库运行在ARCHIVELOG(归档)方式下,归档日志存放于另一映像的逻辑磁盘上。每晚进行一次联机备份操作,备份所有数据文件、所有归档日志文件、一个控制文件。每周进行一次输出(Export)操作。
(二)、恢复策略
1.实例失败
从实例失败中恢复是自动进行的。实例失败一般是由服务器失败引起的,当数据库实例失败后,重新启动服务器,启动数据库,Oracle检查数据文件和联机日志文件,并把所有文件同步到同一个时间点上。
2.磁盘失败
如果丢失的是控制文件,只要关闭数据库,从保留有控制文件的地方拷贝一份即可。
如果丢失的是数据文件,可用前一天晚上的联机备份进行恢复,步骤如下:
1)从备份中把丢失的文件存在原来位置。
2)加载数据库
3)恢复数据库
4)打开数据库
3.错误删除或修改对象
在这种情况下,一般希望能追溯返回到错误发生前的那个时间点上。这叫做时间点恢复。完成恢复的步骤如下:
1)从当前数据库输出(Export),输入(Import)到备用数据库,使备用数据库与当前数据库保持一致。
2)向前滚动备用数据库到错误发生前的那个时间点。
3)从备用数据库输出受错误影响的逻辑对象。
4)使用上一步产生的输出文件输入那些受影响的对象到当前数据库。
(三)、用户角色管理
1.对所有客户端按工作性质分类,分别授予不同的用户角色。
2.对不同的用户角色,根据其使用的数据源,分别授予不同的数据库对象存取权限。
基于以上的安全策略,可以防止非法用户访问数据库,限制合法用户操纵数据库的权限;可以使数据库在故障发生后,不会丢失任何数据,并能使数据库迅速恢复到故障发生前的那一时间点上,最大限度的保证数据的安全和整个系统的连续运行。
㈡ 数据库安全控制的主要策略有哪些
1、 网站服务器安全 防止服务器被黑客入侵。首先,要选择比较好的托管商,托管的机房很重要。现在很多服务商都在说硬件防火墙防CC攻击,其实一般小托管商很少具备这些配置。机房里其他电脑的安全也是很重要的,例如现在很多攻击方法是通过嗅探的方法得到管理密码的,或者ARP欺骗,其最大的危害就是根本找不到服务器漏洞,却莫名其妙地被黑了。其次,对于服务器本身,各种安全补丁一定要及时更新,把那些用不到的端口全部关闭掉,越少的服务等于越大的安全系数。 2、 网站程序安全 程序漏洞是造成安全隐患的一大途径。网站开发人员应该在开发网站的过程中注意网站程序各方面的安全性测试,包括在防止sql注入、密码加密、数据备份、使用验证码等方面加强安全保护措施。 3、 网站信息安全 信息安全有多层含义。首先,最基本的是网站内容的合法性,网络的普及也使得犯罪分子利用网络传播快捷的特性而常常发布违法、违规的信息。要避免网站上出现各种违法内容、走私贩毒、种族歧视及政治性错误倾向的言论。其次,防止网站信息被篡改,对于大型网站来说,所发布的信息影响面大,如果被不法分子篡改,,引起的负面效应会很恶劣。轻者收到网监的警告,重者服务器被带走。 4、 网站数据安全 说到一个网站的命脉,非数据库莫属,网站数据库里面通常包含了政府网站的新闻、文章、注册用户、密码等信息,对于一些商业、政府类型的网站,里面甚至包含了重要的商业资料。网站之间的竞争越来越激烈,就出现了优部分经营者不正当竞争,通过黑客手段窃取数据,进行推广,更有黑客直接把“拿站”当做一项牟利的业务。所以,加强一个网站的安全性,最根本的就是保护数据库不要被攻击剽窃掉。
㈢ 防范安全隐患 网络数据库安全隐患及防范策略探讨
中图分类号:TN915.08 文献标识码:A摘 要:随着信息技术的飞速发展,网络技术和数据库技术日渐成熟,21世纪计算机网络的运行速度越来越快,高速的网络也逐渐走向商业、家庭。由于信息在当今人类的经济、军事、生活等方面越来越重要,信息的安全也渐渐被人们所重视。因此网络数据库的安全问题是目前网络信息安全的重点之一,网络环境下数据库数据被盗、丢失使得网络环境下数据库安全性研究极为重要。本文详细论述网络环境下数据库将面临的安全威胁,从数据库安全的基础概念着手,让大家知道提高数据库的安全策略是什么,做好哪些防范才能使数据库安全。
关键词:网络环境 数据库安全 威胁 策略
一、网络数据库的含义
将海量数据汇集,且按照规格有组织的整理好,存储在计算机的硬盘上面,方便人们查找使用数据集合称为“数据库”。我们所说的数据有数字、文字、图形、图像、声音、符号、文件、档案等一切描述事物的符号记录。而在开放式的网络中数据具有共享性,我们需要把数据与资源共享两种方式融合在一起那就是我们所说的“网络数据库”,它是需要后台数据库加上前台程序,然后通过浏览器将数据储存、查询等一系列操作的系统。网络数据库的设计是根据数据棋型来设计的数据库,它在关系数据库的基础上面集合网络技术、存储技术、检索技术为一体的新型数据库,它使web数据库的应用成为网络信息时代的一大亮点。目前网络数据库在信息检索、电子商务、网上医疗、网络数字图书馆等多个领域得到了广泛的使用。其重要性也被越来越多的人所重视。
二、网络数据库的安全知识与安全机制
数据库的安全简单说是指保证数据库的正常运作,不被非授权用户非法使用、盗取、修改以及破坏数据。在现实操作中网络管理员一般会忽略服务器端的安全设置,而是把问题抛给程序开发者来处理。数据库安全主要包括三个方面:互联网系统安全、操作系统安全、数据库管理系统安全等三个方面。
(一)互联网系统安全机制
Intemet系统安全是数据库第一道保障,一般的入侵都是从网络系统开始的。但是现在互联网系统面临着木马程序的攻击、网络犯罪欺骗、网络非法入侵与网络病毒等威胁。这些威胁都有可能使信息系统的完整性、秘密性、可信性遭到破坏。从技术角度来说预防互联网系统安全的技术有很多种:如防火墙它是目前应用广泛的一种防御方式;防病毒软件它可以使网络数据库免受木马病毒的攻击,现在市面上的防病毒软件有瑞星、360、诺顿等;入侵检查它是专门为保护计算机系统安全而配置的以及能及时发现威胁并报告威胁的一种技术,其可以时时监控系统是否有被入侵,并能主动的实施安全防御并且保护系统。
(二)操作系统安全机制
现在很多企业家庭大多都用Windows的操作系统,这个系统本身就有缺陷、安全配置、网络病毒等三个方面的威胁。但是这些威胁可以通过人工操作来避免。网络管理员必须定期对操作系统进行升级更新,合理化安全配置以及病毒扫描,这样能及时发现操作系统的漏洞并且能及时制定修补计划。
(三)数据库管理系统安全机制
数据库管理系统它都是采用多个不同的安全设置方法与用户设置做为不同的访问权限,而且可以定期进行数据备份,以防系统出问题造成数据丢失。数据安全可以分为:数据加密、数据备份与恢复、数据存储的安全性、数据传输的安全性、数据存取权限等等。数据库管理系统又分为两部分:一个是数据库,存储数据信息的仓库;另一个是数据库管理系统,它不但陆猜皮可以给用户与应用程序提供数据访问,而且兆销也具有管理数据库、数据库维护等工作的能力。数据库与它的管理系统在整个网络环境中,做为信息数据早差储存和处理访问的重要工作地必须具有以下能力:数据库的保密性、数据库的完整性、数据库的一致性、数据库的可用性、数据库的跟踪性。
三、数据库的安全威胁
网络数据库的安全意义是保护网络中数据库信息的保密性、完整性、一致性、可用性。保护网络数据库的安全我们需要保护其系统中的数据信息不被恶意破坏、修改、泄漏。一般保护数据库安全的技术有:授权控制、身份辨别、数据库安全审计等等。我们只要做好防范有很多威胁是可以避免的,数据库在网络环境中面临的威胁有以下几点:
1.软件环境出现意外,如系统崩溃软件不能运行;硬件环境受损,如电缆接口断裂、硬盘不能启动、磁盘损坏等。
2.病毒入侵严重的可以导致系统崩溃,进一步破坏数据。
3.数据库被不正确访问,引发数据库中数据的错误。
4.未授权访问数据库,盗取数据库中数据信息。
5.未授权修改数据库中数据,使数据真实性丢失。
6.通过非正常路径对数据库进行攻击。
7.人为的破坏,管理员操作不当使数据丢失。
四、数据库常用安全技术
网络由于其开放性,它绝对没有安全存在,我们可以通过安全管理减少很多不必要的损失。从保护数据库的安全出发,可从数据库管理系统去考虑问题。保证数据库安全的技术主要有:用户身份认证、权限访问控制、信息流控制、数据库加密、数据库安全审计、防火墙等。
(一)数据库的物理安全
物理安全是保证数据库安全的基本。它重点指保护数据库服务器、存放数据库的环境与网络等物理安全。一般指连接服务器的网络电线与放置交换机的环境是否安全,避免自然灾害的侵袭如:雷击、火灾、洪水、电压是否稳定等等物理问题。
(二)用户身份认证
用户身份认证是系统提供的第一道安全保护闸门。每一次用户进入数据库时系统都会提示身份验证,用户只能输入正确的命令才能进入,身份信息如不正确会发出警告。这样可以防止非授权用户进入数据库对数据信息造成破坏、盗取等行为。目前使用最多的身份验证手段是设置用户名与密码。但是也有更高级别的验证方法正在迅速发展起来如:智能IC卡、指纹、人脸等强度高的认证技术。用户身份的识别只能通过数据库授权与验证才能知道是否为合法的用户。
(三)访问控制技术
所谓的访问控制是指已经进入系统的用户,数据库管理系统内部这些用户进行访问权限的控制,是防止系统安全漏洞的一种保护方法,也是其核心技术。访问控制就是控制数据库可以被哪些用户访问,不被哪些用户访问。只有被授权的用户才能对数据库的数据进行读、写、删、查。一般授权有:按功能模块来授权用户、赋予用户数据库系统权限等两种。用户访问控制是数据库安全技术中最有效的方法,也是目前人们用的最多的一种技术。
(四)数据加密处理
数据库系统提供的一系列安全措施是可以满足数据库的日常应用,但如果数据比较敏感、重要,像公司的财务数据、军事数据、国家机密、以及个人隐私等这些数据,采用以上所述的几种安全措施是不够的,为了数据的保密性一般都会使用数据加密技术,增加数据储存的安全性。根据网络数据的共享性这一特点,我们可以采用公开密钥的加密办法,这种加密办法可以经受住来自操作系统和DBMS的攻击,但是它的缺点是只能加密数据库中的部分数据,但这也足够机密数据进行数据加密保护。
(五)数据备份与恢复
软硬件的故障我们不能百分百的保证,因此数据库备份是很有必要的。如果数据库被入侵、被病毒破坏、以及发生自燃灾害、盗窃等情况数据就会丢失造成损失,但是如果我们做好了数据备份并且在短时间内恢复好数据库,那么造成的影响应该会很小。因此定期做好数据备份、对数据库进行安全管理是保护数据库的手段之一。备份数据库的方法有:静态、动态、逻辑备份三种,还可以采用磁盘镜像、数据备份文件、数据库在线日志来恢复数据库。保证网络环境下数据库安全的前提是要做好防范工作,防御能力提高了才能抵制外来的侵袭
五、结束语
计算机和网络已经成为人类工作和生活的一部分,在计算机操作系统、网络协议、数据库中安全问题是一直备受关注的问题之一。随着网络技术的发展,在网络环境中数据库需求越来越大,然而数据库的安全问题也备受人们关注。在信息技术高速发展的当今社会各个行业都把数据信息储存在数据库系统中,这使得数据库安全显得尤为重要。通过上述文章的详解,有一点大家应该知道,那就是做好防御工作是有备无患的明智之举。在做预防工作之前最好是先了解一下数据库安全性方面的知识,以免进入操作误区。
㈣ 服务器安全策略有哪些
一、修改windows默认的远程端口
也许有高手认为自己做的挺安全的,就算是默认端口也不用被入侵以及被破密。其实修改默认的远程端口一方面是防止入侵,另外一方面也是防止被扫描影响系统的稳定。
有了解过扫描3389软件的人都知道,一般的攻击者都是扫描3389端口的,所以改成空此其它的端口可以防止被扫描到您的主机。为什么说州亏此另外一方面也是防止被扫描3389端口影响到系统的稳定呢?如果您的服务器默认是使用3389端口,扫描软件就会强力尝试密码字典里的密码,与您的主机建议很多的连接,占用系统里的资源导致服务器出现卡的现象。所以修改默认的远程端口是有几个好处的,希望大家重视。
二、修改windows默认的用户名
我们做安全也是针对攻击的行为而制作相对的策略,攻击的人尝试密码破解的时候,都是使用默认的用户名administrator,当你修改了用户名之后,它猜不出您的用户名,即使密码尝试上千万次都不会成功的,如果要使用用户名字典再加下密码字典,我估计攻击者就没有那个心思了,而且也不会一时间破密到您的用户名。所以修改用户名就会减低被入侵的可能。
那么修改成什么样的用户名才是比较安全呢?个人建议使用中文册迅再加上数字再上字母这样的用户名就非常强大了。例如: 非诚勿扰ADsp0973
三、使用复杂的密码
从扫描以及破解的软件看,都是使用简单的常用的密码进行破解的,例如1q2w3e4r5t或者123456或者12345qwert等简单的组合密码,所以使用这些密码是非常不安全的。我个人就建议避免使用简单的密码防止被破解。
建议使用的密码里包含 大字字母+小字字母+数字+特殊字符。 长度至少要12以上这样会好一些。
㈤ 数据库的安全策略有哪些
计算机安全是当前信息社会非常关注的问题,而数据库系统更是担负着存储和管理数据信息的任务,因而如何保证和加强其安全性,更是迫切需要解决的热门课题。下面将讨论数据库的安全策略,并简单介绍各种策略的实现方案。x0dx0a一、数据库的安全策略x0dx0a数据库安全策略是涉及信息安全的高级指导方针,这些策略根据用户需要、安装环境、建立规则和法律等方面的限制来制定。x0dx0a数据库系统的基本安全性策略主要是一些基本性安全的问题,如访问控制、伪装数据的排除、用户的认证、可靠性,这些问题是整个安全性问题的基本问题。数据库的安全策略主要包含以下几个方面:x0dx0a1.保证数据库存在安全x0dx0a数据库是建立在主机硬件、操作系统和网络上的系统,因此要保证数据库安全,首先应该确保数据库存在安全。预防因主机掉电或其他原因引起死机、操作系统内存泄漏和网络遭受攻击等不安全因素是保证数据库安全不受威胁的基础。x0dx0a2.保证数据库使用安全x0dx0a数据库使用安全是指数据库的完整性、保密性和可用性。其中,完整性既适用于数据库的个别元素也适用于整个数据库,所以在数据库管理系统的设计中完整性是主要的关心对象。保密性由于攻击的存在而变成数据库的一大问题,用户可以间接访问敏感数据库。最后,因为共享访问的需要是开发数据库的基础,所以可用性是重要的,但是可用性与保密性是相互冲突的。x0dx0a二、数据库的安全实现x0dx0a1.数据库存在安全的实现x0dx0a正确理解系统的硬件配置、操作系统和网络配置及功能对于数据库存在安全十分重要。比如对于硬件配置情况,就必须熟悉系统的可用硬盘数量,每个硬盘的可用空间数量,可用的CPU数量,每个CPU的Cache有多大,可用的内存数量,以及是否有冗余电源等问题;对于操作系统,则应该周期性的检查内存是否有泄漏,根文件系统是否需要清理,重要的日志是否已经察看;对于网络就应该随时确保网络没有过载,网络畅通、网络安全是否得到保证等等。因为这一部分不是本文的重点,所以不再一一细述,总之,这三方面的安全运行是和维护数据库存在安全不可分割的。x0dx0a2.数据库完整性的实现x0dx0a数据库的完整性包括库的完整性和元素的完整性。x0dx0a数据库的完整性是DBMS(数据库管理系统)、操作系统和系统管理者的责任。数据库管理系统必须确保只有经批准的个人才能进行更新,还意味着数据须有访问控制,另外数据库系统还必须防范非人为的外力灾难。从操作系统和计算系统管理者的观点来看,数据库和DBMS分别是文件和程序。因此整个数据库的一种形式的保护是对系统中所有文件做周期性备份。数据库的周期性备份可以控制由灾祸造成的损失。数据库元素的完整性是指它们的正确性和准确性。由于用户在搜集数据、计算结果、输入数值时可能会出现错误,所以DBMS必须帮助用户在输入时能发现错误,并在插入错误数据后能纠正它们。DBMS用三种方式维护数据库中每个元素的完整性:通过字段检查在一个位置上的适当的值,防止输入数据时可能出现的简单错误;通过访问控制来维护数据库的完整性和一致性;通过维护数据库的更改日志,记录数据库每次改变的情况,包括原来的值和修改后的值,数据库管理员可以根据日志撤消任何错误的修改。x0dx0a3.数据库保密性的实现x0dx0a数据库的保密性可以通过用户身份鉴定和访问控制来实现。x0dx0aDBMS要求严格的用户身份鉴定。一个DBMS可能要求用户传递指定的通行字和时间日期检查,这一认证是在操作系统完成的认证之外另加的。DBMS在操作系统之外作为一个应用程序被运行,这意味着它没有到操作系统的可信赖路径,因此必须怀疑它所收的任何数据,包括用户认证。因此DBMS最好有自己的认证机制。x0dx0a访问控制是指根据用户访问特权逻辑地控制访问范围和操作权限。如一般用户只能访问一般数据、市场部可以得到销售数据、以及人事部可以得到工资数据等。DBMS必须实施访问控制政策,批准对所有指定的数据的访问或者禁止访问。DBMS批准一个用户或者程序可能有权读、改变、删除或附加一个值,可能增加或删除整个字段或记录,或者重新组织完全的数据库。x0dx0a4.数据库可用性的实现x0dx0a数据库的可用性包括数据库的可获性、访问的可接受性和用户认证的时间性三个因素。下面解释这三个因素。x0dx0a(1)数据的可获性x0dx0a首先,要访问的元素可能是不可访问的。例如,一个用户在更新几个字段,其他用户对这些字段的访问便必须被暂时阻止。这样可以保证用户不会收到不准确的信息。当进行更新时,用户可能不得不阻止对几个字段或几个记录的访问通道,以便保证数据与其他部分的一致性。不过有一点要注意,如果正在更新的用户在更新进行期间退出,其他用户有可能会被永远阻止访问该记录。这种后遗症也是一个安全性问题,会出现拒绝服务。x0dx0a(2)访问的可接受性x0dx0a记录的一个或多个值可能是敏感的而不能被用户访问。DBMS不应该将敏感数据泄露给未经批准的个人。但是判断什么是敏感的并不是那么简单,因为可能是间接请求该字段。一个用户也许请求某些包含敏感数据的记录,这可能只是由非敏感的特殊字段推出需要的值。即使没有明确地给出敏感的值,数据库管理程序也可能拒绝访问这样的背景信息,因为它会揭示用户无权知道的信息。x0dx0a(3)用户认证的时间性x0dx0a为了加强安全性,数据库管理员可能允许用户只在某些时间访问数据库,比如在工作时间。
㈥ sqlserver有哪些安全策略
Microsoft建立了一种既灵活又强大的安全管理机制,它能够对用户访问SQL Server服务器系统和数据库的安全进行全面地管理。按照本文介绍的步骤,你可以为SQL Server 7.0(或2000)构造出一个灵活的、可管理的安全策略,而且它的安全性经得起考验。
一、验证方法选择
本文对验证(authentication)和授权(authorization)这两个概念作不同的解释。验证是指检验用户的身份标识;授权是指 允许用户做些什么。在本文的讨论中,验证过程在用户登录SQL Server的时候出现,授权过程在用户试图访问数据或执行命令的时候出现。
构造安全策略的第一个步骤是确定SQL Server用哪种方式验证用户。SQL Server的验证是把一组帐户、密码与Master数据库Sysxlogins表中的一个清单进行匹配。Windows NT/2000的验证是请求域控制器检查用户身份的合法性。一般地,如果服务器可以访问域控制器,我们应该使用Windows NT/2000验证。域控制器可以是Win2K服务器,也可以是NT服务器。无论在哪种情况下,SQL Server都接收到一个访问标记(Access Token)。访问标记是在验证过程中构造出来的一个特殊列表,其中包含了用户的SID(安全标识号)以及一系列用户所在组的SID。正如本文后面所介绍 的,SQL Server以这些SID为基础授予访问权限。注意,操作系统如何构造访问标记并不重要,SQL Server只使用访问标记中的SID。也就是说,不论你使用SQL Server 2000、SQL Server 7.0、Win2K还是NT进行验证都无关紧要,结果都一样。
如果使用SQL Server验证的登录,它最大的好处是很容易通过Enterprise Manager实现,最大的缺点在于SQL Server验证的登录只对特定的服务器有效,也就是说,在一个多服务器的环境中管理比较困难。使用SQL Server进行验证的第二个重要的缺点是,对于每一个数据库,我们必须分别地为它管理权限。如果某个用户对两个数据库有相同的权限要求,我们必须手工设 置两个数据库的权限,或者编写脚本设置权限。如果用户数量较少,比如25个以下,而且这些用户的权限变化不是很频繁,SQL Server验证的登录或许适用。但是,在几乎所有的其他情况下(有一些例外情况,例如直接管理安全问题的应用),这种登录方式的管理负担将超过它的优 点。
二、Web环境中的验证
即使最好的安全策略也常常在一种情形前屈服,这种情形就是在Web应用中使用SQL Server的数据。在这种情形下,进行验证的典型方法是把一组SQL Server登录名称和密码嵌入到Web服务器上运行的程序,比如ASP页面或者CGI脚本;然后,由Web服务器负责验证用户,应用程序则使用它自己的 登录帐户(或者是系统管理员sa帐户,或者为了方便起见,使用Sysadmin服务器角色中的登录帐户)为用户访问数据。
这种安排有几个缺点,其中最重要的包括:它不具备对用户在服务器上的活动进行审核的能力,完全依赖于Web应用程序实现用户验证,当SQL Server需要限定用户权限时不同的用户之间不易区别。如果你使用的是IIS 5.0或者IIS 4.0,你可以用四种方法验证用户。第一种方法是为每一个网站和每一个虚拟目录创建一个匿名用户的NT帐户。此后,所有应用程序登录SQL Server时都使用该安全环境。我们可以通过授予NT匿名帐户合适的权限,改进审核和验证功能。
第二种方法是让所有网站使用Basic验证。此时,只有当用户在对话框中输入了合法的帐户和密码,IIS才会允许他们访问页面。IIS依靠一个NT 安全数据库实现登录身份验证,NT安全数据库既可以在本地服务器上,也可以在域控制器上。当用户运行一个访问SQL Server数据库的程序或者脚本时,IIS把用户为了浏览页面而提供的身份信息发送给服务器。如果你使用这种方法,应该记住:在通常情况下,浏览器与服 务器之间的密码传送一般是不加密的,对于那些使用Basic验证而安全又很重要的网站,你必须实现SSL(Secure Sockets Layer,安全套接字层)。
在客户端只使用IE 5.0、IE 4.0、IE 3.0浏览器的情况下,你可以使用第三种验证方法。你可以在Web网站上和虚拟目录上都启用NT验证。IE会把用户登录计算机的身份信息发送给IIS,当 该用户试图登录SQL Server时IIS就使用这些登录信息。使用这种简化的方法时,我们可以在一个远程网站的域上对用户身份进行验证(该远程网站登录到一个与运行着Web 服务器的域有着信任关系的域)。
最后,如果用户都有个人数字证书,你可以把那些证书映射到本地域的NT帐户上。个人数字证书与服务器数字证书以同样的技术为基础,它证明用户身份标 识的合法性,所以可以取代NT的Challenge/Response(质询/回应)验证算法。Netscape和IE都自动在每一个页面请求中把证书信 息发送给IIS。IIS提供了一个让管理员把证书映射到NT帐户的工具。因此,我们可以用数字证书取代通常的提供帐户名字和密码的登录过程。
由此可见,通过NT帐户验证用户时我们可以使用多种实现方法。即使当用户通过IIS跨越Internet连接SQL Server时,选择仍旧存在。因此,你应该把NT验证作为首选的用户身份验证办法。
三、设置全局组
构造安全策略的下一个步骤是确定用户应该属于什么组。通常,每一个组织或应用程序的用户都可以按照他们对数据的特定访问要求分成许多类别。例如,会 计应用软件的用户一般包括:数据输入操作员,数据输入管理员,报表编写员,会计师,审计员,财务经理等。每一组用户都有不同的数据库访问要求。
㈦ 保证数据库安全的一般方法包括哪四种
1.数据库用户的管理,按照数据库系统的大小和数据库用户所需的工作量,具体分配数据库用户的数据操作权限,控制系统管理员用户账号的使用。
2.建立行之有效的数据库用户身份确认策略,数据库用户可以通过操作系统、网络服务以及数据库系统进行身份确认,通过主机操作系统进行用户身份认证。
3.加强操作系统安全性管理,数据服务器操作系统必须使用正版软件,同时要有防火墙的保护。
4.网络端口按需开放,根据实际需要只开放涉及业务工作的具体网络端口,屏蔽其它端口,这样可以在较大程度上防止操作系统受入侵。
㈧ 数据库安全的安全策略
数据库的安全配置在进行安全配置之前,首先必须对操作系统进行安全配置,保证操作系统处于安全状态。然后对要使用的操作数据库软件(程序)进行必要的安全审核,比如对ASP、PHP等脚本,这是很多基于数据库的Web应用常出现的安全隐患,对于脚本主要是一个过滤问题,需要过滤一些类似“,; @ /”等字符,防止破坏者构造恶意的SQL语句。接着,安装SQL Server2000后请打上最新SQL补丁SP4 。
SQL Server的安全配置
1.使用安全的密码策略
我们把密码策略摆在所有安全配置的第一步,请注意,很多数据库账号的密码过于简单,这跟系统密码过于简单是一个道理。对于sa更应该注意,同时不要让sa账号的密码写于应用程序或者脚本中。健壮的密码是安全的第一步,建议密码含有多种数字字母组合并9位以上。SQL Server2000安装的时候,如果是使用混合模式,那么就需要输入sa的密码,除非您确认必须使用空密码,这比以前的版本有所改进。同时养成定期修改密码的好习惯,数据库管理员应该定期查看是否有不符合密码要求的账号。
2.使用安全的账号策略
由于SQL Server不能更改sa用户名称,也不能删除这个超级用户,所以,我们必须对这个账号进行最强的保护,当然,包括使用一个非常强壮的密码,最好不要在数据库应用中使用sa账号,只有当没有其他方法登录到 SQL Server 实例(例如,当其他系统管理员不可用或忘记了密码)时才使用 sa。建议数据库管理员新建立个拥有与sa一样权限的超级用户来管理数据库。安全的账号策略还包括不要让管理员权限的账号泛滥。
SQL Server的认证模式有Windows身份认证和混合身份认证两种。如果数据库管理员不希望操作系统管理员来通过操作系统登录来接触数据库的话,可以在账号管理中把系统账号“BUILTINAdministrators”删除。不过这样做的结果是一旦sa账号忘记密码的话,就没有办法来恢复了。很多主机使用数据库应用只是用来做查询、修改等简单功能的,请根据实际需要分配账号,并赋予仅仅能够满足应用要求和需要的权限。比如,只要查询功能的,那么就使用一个简单的public账号能够select就可以了。
3.加强数据库日志的记录
审核数据库登录事件的“失败和成功”,在实例属性中选择“安全性”,将其中的审核级别选定为全部,这样在数据库系统和操作系统日志里面,就详细记录了所有账号的登录事件。请定期查看SQL Server日志检查是否有可疑的登录事件发生,或者使用DOS命令。
4.管理扩展存储过程
对存储过程进行大手术,并且对账号调用扩展存储过程的权限要慎重。其实在多数应用中根本用不到多少系统的存储过程,而SQL Server的这么多系统存储过程只是用来适应广大用户需求的,所以请删除不必要的存储过程,因为有些系统的存储过程能很容易地被人利用起来提升权限或进行破坏。如果您不需要扩展存储过程Xp_cmdshell请把它去掉。使用这个SQL语句:
use master
sp_dropextendedproc 'Xp_cmdshell'
Xp_cmdshell是进入操作系统的最佳捷径,是数据库留给操作系统的一个大后门。如果您需要这个存储过程,请用这个语句也可以恢复过来。
sp_addextendedproc 'xp_cmdshell', 'xpSQL70.dll'
如果您不需要请丢弃OLE自动存储过程(会造成管理器中的某些特征不能使用)。
这些过程如下: Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty
Sp_OAMethod Sp_OASetProperty Sp_OAStop
去掉不需要的注册表访问的存储过程,注册表存储过程甚至能够读出操作系统管理员的密码来,命令如下:
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue
Xp_regenumvalues Xp_regread Xp_regremovemultistring
Xp_regwrite
还有一些其他的扩展存储过程,也最好检查检查。在处理存储过程的时候,请确认一下,避免造成对数据库或应用程序的伤害。
5.使用协议加密
SQL Server 2000使用的Tabular Data Stream协议来进行网络数据交换,如果不加密的话,所有的网络传输都是明文的,包括密码、数据库内容等,这是一个很大的安全威胁。能被人在网络中截获到他们需要的东西,包括数据库账号和密码。所以,在条件容许情况下,最好使用SSL来加密协议,当然,您需要一个证书来支持。
6.不要让人随便探测到您的TCP/IP端口
默认情况下,SQL Server使用1433端口监听,很多人都说SQL Server配置的时候要把这个端口改变,这样别人就不会轻易地知道使用的什么端口了。可惜,通过微软未公开的1434端口的UDP探测可以很容易知道SQL Server使用的什么TCP/IP端口。不过微软还是考虑到了这个问题,毕竟公开而且开放的端口会引起不必要的麻烦。在实例属性中选择TCP/IP协议的属性。选择隐藏 SQL Server实例。如果隐藏了SQL Server实例,则将禁止对试图枚举网络上现有的 SQL Server实例的客户端所发出的广播作出响应。这样,别人就不能用1434来探测您的TCP/IP端口了(除非用Port Scan)。
7.修改TCP/IP使用的端口
请在上一步配置的基础上,更改原默认的1433端口。在实例属性中选择网络配置中的TCP/IP协议的属性,将TCP/IP使用的默认端口变为其他端口。
8.拒绝来自1434端口的探测
由于1434端口探测没有限制,能够被别人探测到一些数据库信息,而且还可能遭到DoS攻击让数据库服务器的CPU负荷增大,所以对Windows 2000操作系统来说,在IPSec过滤拒绝掉1434端口的UDP通信,可以尽可能地隐藏您的SQL Server。
9.对网络连接进行IP限制
SQL Server 2000数据库系统本身没有提供网络连接的安全解决办法,但是Windows 2000提供了这样的安全机制。使用操作系统自己的IPSec可以实现IP数据包的安全性。请对IP连接进行限制,只保证自己的IP能够访问,也拒绝其他IP进行的端口连接,对来自网络上的安全威胁进行有效的控制。
上面主要介绍的一些SQL Server的安全配置,经过以上的配置,可以让SQL Server本身具备足够的安全防范能力。当然,更主要的还是要加强内部的安全控制和管理员的安全培训,而且安全性问题是一个长期的解决过程,还需要以后进行更多的安全维护。
㈨ 数据库系统防黑客入侵技术综述
1. 前言
随着计算机技术的飞速发展,数据库的应用十分广泛,深入到各个领域,但随之而来产生了数据的安全问题。各种应用系统的数据库中大量数据的安全问题、敏感数据的防窃取和防篡改问题,越来越引起人们的高度重视。数据库系统作为信息的聚集体,是计算机信息系统的核心部件,其安全性至关重要,关系到企业兴衰、国家安全。因此,如何有效地保证数据库系统的安全,实现数据的保密性、完整性和有效性,已经成为业界人士探索研究的重要课题之一,本文就安全防入侵技术做简要的讨论。
数据库系统的安全除依赖自身内部的安全机制外,还与外部网络环境、应用环境、从业人员素质等因素息息相关,因此,从广义上讲,数据库系统的安全框架可以划分为三个层次:
⑴ 网络系统层次;
⑵ 宿主操作系统层次;
⑶ 数据库管理系统层次。
这三个层次构筑成数据库系统的安全体系,与数据安全的关系是逐步紧密的,防范的重要性也逐层加强,从外到内、由表及里保证数据的安全。下面就安全框架的三个层次展开论述。
2. 网络系统层次安全技术
从广义上讲,数据库的安全首先倚赖于网络系统。随着Internet的发展普及,越来越多的公司将其核心业务向互联网转移,各种基于网络的数据库应用系统如雨后春笋般涌现出来,面向网络用户提供各种信息服务。可以说网络系统是数据库应用的外部环境和基础,数据库系统要发挥其强大作用离不开网络系统的支持,数据库系统的用户(如异地用户、分布式用户)也要通过网络才能访问数据库的数据。网络系统的安全是数据库安全的第一道屏障,外部入侵首先就是从入侵网络系统开始的。网络入侵试图破坏信息系统的完整性、机密性或可信任的任何网络活动的集合,具有以下特点[1]:
a)没有地域和时间的限制,跨越国界的攻击就如同在现场一样方便;
b)通过网络的攻击往往混杂在大量正常的网络活动之中,隐蔽性强;
c)入侵手段更加隐蔽和复杂。
计算机网络系统开放式环境面临的威胁主要有以下几种类型[2]: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的种类包括基于网络和基于主机的入侵监测系统、基于特征的和基于非正常的入侵监测系统、实时和非实时的入侵监测系统等[1]。
⑶协作派行世式入侵监测技术
独立的入侵监测系统不能够对广泛发生的各种入侵活动都做出有效的监测和反应,为了弥补独立运作的不足,人们提出了协作式入侵监测系统的想法。在协作式入侵监测系统中,IDS基于一种统一的规范,入侵监测组件之间自动地交换信息,并且通过信息的交换得到了对入侵的有效监测,可以应用于不同的网络环境[3]。
3. 宿主操作系统层次安全技术
操作系统是大型数据库系统的运行平台,为数据库系统提供一定程度的安全保护。目前操作系统平台大多数集中在Windows NT 和Unix,安全级别通常为C1、C2级。主要安全技术有操作系统安全策略、安全管理策略、数据安全等方面。
操作系统安全策略用于配置本地计算机的安全设置,包括密码策略、账户锁定策略、审核策略、IP安全策略、用户权利指派、加密数据的恢复代理以及其它安全选项[7]。具体可以体现在用户账户、口令、访问权限、审计等方面。
用户账户:用户访问系统的"身份证",只有合法用户才有账户。
口令:用户的口令为用户访问系统提供一道验证。
访问权限:规定用户的权限。
审计:对用户的行为进行跟踪和记录,便于系统管理员分析系统的访问情况以及事后的追查使用。
安全管理策略是指网络管理员对系统实施安全管理所采取的方法及策略。针对不同的操作系统、网络环境需要采取的安全管理策略一般也不尽相同,其核心是保证服务器的安全和分配好各类用户的权限。
数据安全主要体现在以下几个方面:数据加密技术、数据备份、数据存储的安全性、数据传输的安全性等。可以采用的技术很多,主要有Kerberos认证、IPSec、SSL、TLS、VPN(PPTP、L2TP)等技术。
4. 数据库管理系统层次安全技术
数据库系统的安全性很大程度上依赖于数据库管理系统。如果数据库管理系统安全机制非常强大,则数据库系统的安全性能就较好。目前市场上流行的是关系式数据库管理系统,其安全性功能很弱,这就导致数据库系统的安全性存在一定的威胁。
由于数据库系统在操作系统下都是以文件形式进行管理的,因此入侵者可以直接利用操作系统的漏洞窃取数据库文件,或者直接利用OS工具来非法伪造、篡改数据库文件内容。这种隐患一般数据库用户难以察觉,分析和堵塞这种漏洞被认为是B2级的安全技术措施[4]。
数据库管理系统层次安全技术主要是用来解决这一问题,即当前面两个层次已经被突破的情况下仍能保障数据库数据的安全,这就要求数据库管理系统必须有一套强有力的安全机制。解决这一问题的有效方法之一是数据库管理系统对数据库文件进行加密处理,使得即使数据不幸泄露或者丢失,也难以被人破译和阅读。
我们可以考虑在三个不同层次实现对数据库数据的加密,这三个层次分别是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外层实现加密功能的原理。
5. 结束语
本文对数据库系统安全防入侵技术进行综述,提出了数据库系统的安全体系三个层次框架,并对三个层次的技术手段展开描述。文中还以在DBMS外层实现加密功能的原理为例,详细说明了如何应用数据库管理系统层次的安全技术。
数据库系统安全框架的三个层次是相辅相承的,各层次的防范重点和所采取的技术手段也不尽相同,一个好的安全系统必须综合考虑核运用这些技术,以保证数据的安全。
㈩ Oracle数据库安全
导读:随着计算机的普及以及网络的发展,数据库已经不再仅仅是那些程序员所专有的话题,更是被很多人所熟悉的,数据安全已经不再是以前的“老生长谈”,也更不是以前书本上那些“可望不可及”的条条框框。同时,安全问题也是现今最为热门的话题,也是企业比较关心的问题,可见安全问题的重要性,那就大家一起来探讨一下Oracle数据库安全问题。
以下就数据库唤悉闷系统不被非法用户侵入这个问题作进一步的阐述。
一、组和安全性:
在操作系统下建立用户组也是保证数据库安全性的一种有效方法。Oracle程序为了安全性目的一般分为两类:一类所有的用户都可执行,另一类只DBA可执行。在Unix环境下组设置的配置文件是/etc/group,关于这个文件如何配置,请参阅Unix的有关手册,以下是保证安全性的几种方法:
(1)在安装Oracle Server前,创建数据库管理员组(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下键入:
alter user sys indentified by password;
alter user system indentified by password;
其中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 (可选)表示和弯这个角色带有WITH ADMIN选项,您只可以把这个角色授予其他角色,不能是其他用户。
以下是在/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带有WITH ADMIN选项。为了使这些数据库角色起作用,您必须shutdown您的数据库系统,设置Oracle数据库参数文件initORACLE_SID.ora中os_roles参数为True,然后重新启动您的数据库。如果您想让这些角色有connect internal权限,运行orapwd为这些角色设置密码。当您尝试connect internal时,您键入的密码表示了角色所对应的权限。
SQL*DBA命令的安全性:
如果您没有SQL*PLUS应用程序,您也可以使用SQL*DBA作SQL查权限相关的命令只能分配给Oracle软件拥有者和DBA组的用户,因为这些命令被授予了特殊的系统权限。
(1) startup
(2) shutdown
(3) connect internal
数据库文件的安全性:
Oracle软件的拥有者应该这些数据库文件($ORACLE_HOME/dbs/*.dbf)设置这些文件的使用权限为0600:文件的拥有者可读可写,同组的和其他组的用户没有写的权限。
Oracle软件的拥有者应该拥有包含数据库文件的目录,为了增加安全性,建议收回同组和其他组用户对这些文件的可读权限。
网络安全性:
当处理网络安全性时,以下是额外要考虑的几个问题。
(1) 在网络上使用密码在网上的远端用户可以通过加密或不加密方式键入密码,当您用不加密方式键入密码时,您的密码很有可能被非法用户截获,导致破坏了系统的安全性。
(2) 网络上的DBA权限控制您可以通过下列两种方式对网络上的DBA权限进行控制:
A 设置成拒绝远程DBA访问;
B 通过orapwd给DBA设置特殊的密码。[nextpage]
三、建立安全性策略:
系统安全性策略
(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) 应用程序开发者和他们的权限数据库应用程序开发者是唯一一类需要特殊权限组完成自己工作的数据库用户。开发者需要诸如create table,create,procere等系统权限,然而,为了限制开发者对数据库的操作,只应该把一些特定的系统权限授予开发者。
(2) 应用程序开发者的环境:
A 程序开发者不应与终端用户竞争数据库资源;
B 用程序开发者不能损害数据库其他应用产品。
(3) free和controlled应用程序开发应用程序开发者有一下两种权限:
A free development
应用程序开发者允许创建新的模式对象,包括table,index,procere,package等,它允许应用程序开发者开发独立于其他对象的应用程序。
B controlled development
应用程序开发者不允许创建新的模式对象。所有需要table,indes procere等都由数据库管理者创建,它保证了数据库管理者能完全控制数据空间的使用以及访问数据库信息的途径。但有时应用程序开发者也需这两种权限的混和。
(4) 应用程序开发者的角色和权限数据库安全性管理者能创建角色来管理典型的应用程序开发者的权限要求。
A create系统权限常常授予给应用程序开发者,以至于他们能创建他的数据对象。
B 数据对象角色几乎不会授予给应用程序开发者使用的角色。
(5) 加强应用程序开发者的空间限制作为数据库安全性管理者,您应该特别地为每个应用程序开发者设置以下的一些限制:
A 开发者可以创建table或index的表空间;
B 在每一个表空间中,开发者所拥有的空间份额。应用程序管理者的安全在有许多数据库应用程序的数据库系统中,您可能需要一应用程序管理者,应用程序管理者应负责起以下的任务:
a)为每一个应用程序创建角色以及管理每一个应用程序的角色;
b)创建和管理数据库应用程序使用的数据对象;
c)需要的话,维护和更新应用程序代码和Oracle的存储过程和程序包。
我相信有了以上的这些建议,作为一个Oracle的管理者绝对可以做好他本职的工作了。可是,我们再怎么努力,都始终得面对这样一个现实,那就是Oracle毕竟是其他人开发的,而我们却在使用。所以,Oracle到底有多少漏洞--我想这个不是你和我所能解决的。不过既然作为一篇讨论Oracle数据安全的文章,我认为有必要把漏洞这一块也写进去,毕竟这也是“安全”必不可少的一部分。呵呵!
所以
Oracle漏洞举例:
1.Oracle9iAS Web Cache远程拒绝服务攻击漏洞(2002-10-28)
2.Oracle 8.1.6的oidldapd中的漏洞
3.Oracle 9iAS OracleJSP 泄漏JSP文件信息漏洞
4.Linux ORACLE 8.1.5漏洞
总而言之一句话--“Oracle数据安全是一个博大而又精深的话题;如果你没有耐心,就永远不会得到它的精髓之所在。”希望大家能深入的去学习这篇文章,学好了也是百一而无一害。