Oracle数据库安全解决方案及技术综述.docx
《Oracle数据库安全解决方案及技术综述.docx》由会员分享,可在线阅读,更多相关《Oracle数据库安全解决方案及技术综述.docx(9页珍藏版)》请在冰豆网上搜索。
Oracle数据库安全解决方案及技术综述
Oracle数据库安全解决方案及技术综述
学 院:
电子与信息工程学院
专 业:
xxxxxxxx
学 号:
xxxxxx
学生姓名:
xxxxx
指导教师:
xxxxxx
日 期:
xxxxxxx
Oracle数据库安全解决方案及技术综述
1.背景介绍
Ø随着网络技术的飞速发展。
网络安全问题日渐突出。
数据库技术自20世纪60年代产生至今,也已得到了快速的发展和广泛应用,数据库中由于数据大量集中存放,且为众多用户直接共享,安全性问题尤为突出。
Ø数据库是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。
经过几十年的发展,数据库技术在理论上得到不断完善的同时,也广泛地投入到财务、教育、电子政务、金融等领域中得到大规模的应用。
目前,市场上不仅有能满足个人用户需要的桌面小型数据库管理系统,也有能提供大规模数据管理功能、应用在网络环境的大中型数据库管理系统。
2.数据库系统安全概述
◆安全威胁
当前对数据库的主要安全威胁有物理威胁和逻辑威胁:
①物理威胁主要是像
各种外力,如:
恐怖事件,火灾等造成的数据库服务器故障或数据库中存储介质的损坏造成的数据丢失。
②逻辑威胁主要是指对信息的未授权存取,如:
恶意用户侵入某银行数据库系统窃取信用卡数据信息。
◆数据库安全技术
目前对数据库安全物理威胁的主要解决方案包括数据备份/恢复、数据导入/导出、数据库的灾难恢复,计算机的集群和磁盘阵列等技术,在此本文不进行讨论。
本文以Oracle数据库为例阐述对逻辑威胁的主要解决方法,包括身份认证、存取控制、网络加密、数据加密、审计等技术。
◆数据库系统的安全需求
数据库的完整性主要包括物理完整性和逻辑完整性。
物理完整性主要包括物理完整性和逻辑完整性。
物理完整性是指保证数据库的数据不受物理故障,如硬件故障、掉电的影响,并有可能在灾难毁坏时重建和恢复数据库。
逻辑完整性是指对数据库逻辑结构的保护,包括数据的语义完整性和操作完整性。
前者主要指数据存取在逻辑上满足完整性约束,后者主要指在并发事务中保证数据的逻辑一致性。
数据库的保密性指不允许XX的用户存取数据;数据库的可用性则是指不应拒绝授权用户对数据库的正常操作,同时保证系统的运行效率并提供用户友好的人机交互。
一般而言,数据库的保密性和可用性是一对矛盾。
对这一矛盾的分析与解决构成了数据库系统的安全模型和一系列安全机制的主要目标。
数据库系统的安全需求
3.Oracle的安全策略
3.1系统安全性策略
系统安全策略的定义[1]为:
系统安全策略是数据库系统为达到安全目标和相应的安全级别所定义的安全技术、方法、机制的总和。
DBMS将系统安全策略体现在其软件之中,最后由DBA 给予实现,主要体现在安全管理。
Oracle9i的系统安全策略主要功能如下:
(1)系统与数据的安全性策略
数据库用户管理(DBU)。
数据库主要是由 DBU访问的。
DBA可授权DBU应用Create、Alter、Drop语句对数据库对象的操作权限,用户身份验证。
数据库用户可以通过操作系统、 网络服务、 数据库或者安全套接字层SSL进行身份确认。
(2)操作系统(IOS安全性
由于Oracle数据库和应用程序是运行在网络操作系统(NOS)之上,然后进行 安全认证的。
所以前两者的安全性需要与操作系统安全一同考虑。
DBA必须具有对NOS 的文件进行Create和Delete的权限而数据库用户却不具有。
如果操作系统为数据库用户分配角色,则DBA必须有修改操作系统账户安全区域的操作系统权限。
3.2用户验证 :
Oracle 采用数据库验证、外部验证和企业验证三种用户验证方式。
✧数据库验证
当创建用户和指定口令时,便使用数据库验证,同时具有了口令管理能力。
Oracle 通过在一个概要文件中设置参数并把该文件分配给一个用户的方式来实现的。
一个概要文件可以限制会话的数量、每个会话使用的CPU时间、调用次数、读的次数、空闲时间以及连接时间。
概要文件可以防止破坏者利用所有的资源以拒绝服务的攻击方式破坏系统。
✧外部验证
外部验证是指在Oracle之外的验证,即网络操作系统(NOS)和网络验证服务。
使用外部验证后在Oracle就无需再验证。
若选此项,则在init.ora文件设置相关参数通知 Oracle。
使用 NOS 进行验证的优点是,用户更快更方便地连接数据库;对用户验证进行集中控制;用户信息只有一份副本并保存在NOS中,Oracle中无需保存,当然两者用户应是相同的,同时审计信息只保存在NOS中。
网络验证服务属于高级安全技术。
主要应用网络安全服务,例如 Kerberos或PKI等。
✧企业验证
企业验证应用于网络环境下的分布式数据库。
分布式环境存在多个数据库服务器,它们组成资源的总和定义为全局资源。
可以使用全局资源(任何一个数据库服务器)的用户定义为全局用户。
企业验证是全局用户使用全局资源的验证,即Oracle 安全服务(OSS)。
由 Oracle 安全服务器完成。
用安全信息和全局资源存储在网络(LAN/Intranet/Internet)的目录中,存储该目录的服务器称为目录服务器。
通常使用轻量目录协议(LDAP)访问该服务器,使用全局口令登录到Oracle 分布式数据库的用户称为全局用户。
可将全局用户的权限定义为不同的角色即全局角色。
全局角色的全体组成企业角色。
Oracle 安全服务器OSS 实现全局用户的登录过程:
(1) 全局用户登录到 Oracle分布式数据库系统中;
(2) OSS动态地将某个全局角色分配给该用户;
(3) 该全局角色所具有的权限即可访问该权限的数据库服务器。
换言之,系统中的多个数据库服务器具有不同的权限,它们与全局角色存在对应(映射)关系。
最简单的是一对一映射,最复杂的是多对多映射。
✧用户许可
用户登录到一个数据库服务器到退出期间称为会话。
Oracle可通过设置来限制会话数量。
会话数量的设置称为并发许可(协议)。
许可是并发使用的,由此许可指定的是并发用户的最大数量,即同时连接到数据库(服务器)的用户会话数量。
通过命名用户的许可, 可以限制可访问一个数据库的命名用户数量。
系统运行期间可以跟踪实际会话数量,也能改变并发会话的最大数量。
当达到上限时, 只有DBA能够连接到数据库。
而对于一般用户,Oracle会给他发送一条消息,显示到达最大数量的限制,同时将该消息写入到警告文件中。
除此之外,还可以设置并发会话的警告限制数量。
在到达该值时,一般用户还可以继续建立新的会话直到达到最大限制值。
然后,Oracle给每个连接的警告文件写一条消息,并且给一般用户发送一条快要达到最大限制的消息。
通过命名用户许可,限制指定的数据库服务器上使用Oracle的命名用户数量。
使用这个许可就是在启动实例以前,设置在数据库可以创建的用户数量。
当实例运行时,也可以改变这个最大值或完全停用这个限制。
4.数据安全性策略
主要包括在对象级控制数据库访问和使用的机制。
主要有决定哪个用户访问特定的模式对象,在对象上允许每个用户的特定类型操作,也可以定义审计每个模式对象的操作。
为数据库建立安全等级,例如,如果允许其他用户建立任何模式对象,或将对象的存取权限授予系统中的其他用户,这样的安全性是很差的。
另外,当希望只有DBA 有权限建立对象, 并向角色和用户授予对象的存取权限时,必须严格控制数据库的安全。
数据的重要性决定了数据和数据库的安全性。
如果数据的重要性差,那么数据的安全性略差一些。
反之,就应该有严格的安全性策略。
用户来维护对数据对象访问的有效控制。
数据安全的实现方法主要有:
用户账号、对象授权、角色、细粒度存取控制和相关应用程序上下文控制。
细粒度存取控制最简单的情况是在SQL语句中加了一个WHERE条件, 用它来限制用户对表和视图里元组数据的存取。
应用程序上下文是一个安全数据缓冲,用来存储存取控制决定的信息。
5.用户安全性策略
在Oracle数据库中, 将用户分为一般用户、最终用户、管理员(DBA)、应用程序员和应用程序管理员。
由于一般用户和管理员具有相对的普遍性,在次只针对一般用户和管理员的安全性策略进行介绍。
5.1DBA的安全性策略
当系统规模较小时,只需一个DBA,则系统安全管理员SSA也是DBA。
当系统规模很大时,系统拥有多个DBA,这时两者是分开的。
安全管理员将相关管理权限分成几个组, 然后将不同的角色授予相应的DBA。
当创建数据库后,立即更改有管理权限的sys和system 用户的口令,防止非法用户访问数据库。
当作为sys和system用户连入数据库后,用户有强大的权限用各种方式对数据库进行改动。
只有DBA能用管理权限连入数据库,并保证只有 DBA 能作SYSDBA角色的成员,因为SYSDBA可以没有任何限制地操作和恢复数据库及数据库对象。
6.Oracle提供的安全机制
数据库的安全性可以分为两类,即数据库系统安全性和数据库数据安全性
6.1系统安全性层面
系统安全性是指在系统级控制数据库的存取和使用的机制。
包括:
①用户名/口令的组合是否有效;②用户是否具有连接数据库的授权;③用户以执行哪些操作;④用户可用的磁盘空间的数量:
⑤用户的资源限制;⑥数据库审计是否有效。
●数据备份
Oracle提供了比较完备的数据备份技术。
具体请参见Oracle9i使用手册。
●身份认证
在网络环境下多用户系统中,身份认证是安全机制中重要环节。
身份认证包括标识和验证,标识是指用户向系统出示自己的身份证明,常用的方法是输入用户名和口令;验证则是系统验证用户的身份证明。
Oracle允许不同类型的验证,以Oracle数据库为基础的验证允许拥有用户账户ID和密码,密码以加密的格式存储在数据字典中。
Oracle也支持基于主机操作系统的用户账号转为Oracle账户的验证。
此外,Oracle高级安全选件还提供更加安全的验证方法[3],如:
NTS、KERBEROSS、RADIUS等验证方式。
●存取控制
数据库的存取控制机制是定义和控制用户对数据库数据的存取访问权限,以确保只授权给有资格的用户访问数据库的权限并防止和杜绝对数据库中数据的非授权访问。
数据库管理系统需要对精细的数据粒度加以控制,数据库中的粒度有记录、表格、属性、字段和值等。
Oracle可利用权限、角色、概要文件、细粒度访问等技术提供存取控制支持。
●权限
默认情况下新的Oracle用户不具备任何权限。
新用户在登录数据库以及运行数据库操作前必须被授予权限。
Oracle数据库包含系统权限和对象权限。
系统权限允许用户建立和使用对象,但不授权访问真正的数据库对象。
系统权限允许用户运行如:
ALTER TABLE,CREATE TABLE等权限。
对象权限被用来允许访问特殊的数据库对象,如表或视图。
Oracle允许对象的拥有者将他们拥有的针对这些对象的权限授予其他用户或角色。
●角色
角色是用来简化用户权限分派的管理任务,用户可以被指派多个角色。
将权限组织到角色中后再利用角色对一个或多个用户授权使授权管理变得更加容易。
Oracle拥有一些特定权限的默认角色。
如:
Connect角色允许用户登录和建立自己的表、索引等;Resource角色允许用户建立触发器和存储过程等对象。
数据库管理员DBA角色被授予所有管理数据库和用户的系统权限。
用户为方便管理可以建立自定义的角色。
●概要文件
Oracle利用概要文件来允许管理员针对一些系统资源,密码的利用。
这些概要文件可以被定义、命名、然后指派给特定的用户或用户组。
概要文件可以用来设置用户在特定的系统资源上的限制,如CPU时间、同时建立的有效会话数、特定用户建立会话的最大时间等。
此外,概要文件也可以用来强制定义密码规则,如密码有效期、密码格式、在若干次登录失败尝试后锁定账户,也可以利用自定义密码格式规则函数来限制密码的设置规则。
●细粒度访问
Oracle提供了细粒度访问控制机制Oracle Label Security[5],可实施对单个表或整个模式上的行级访问控制。
要利用Oracle Label Security,需要创建一个或多个安全策略,其中每一个安全策略都包含一组标签。
标签用来标明哪些用户能够访问什么类型数据。
在创建了一个策略之后,将该策略应用于需要保护的表,并将这些标签授予用户。
当Oracle数据库在解析SQL语句时会检测表是否受到某个安全策略的保护,根据用户的访问权限数据库向该SQL。
语句的WHERE子句中添加安全性谓词。
所有这些都发生在Oracle数据库引擎的内部。
所以不管该SQL。
语句的来源如何,用户都不可能绕过该安全性机制,从而达到行级安全的访问控制。
●审计
任何的数据库系统都不可能是绝对安全的,可以利用Oracle数据库系统的审计功能,监视和记录所选择用户的活动情况,数据库的审计记录存放在SYS方案的AUD$表中。
开启审计功能后会影响一些数据库的性能,在初始状态Oracle对审计功能是关闭的。
要开启审计功能,可在初始化参数中将参数“AUDIT—TRAII。
”值设置为“DB或TRUE”。
Oracle支持三种类型的审计:
语句审计、权限审计和方案对象审计。
语句审计是针对DDL、DML语句的审计,如“AUDIT TABI。
E”的语句审计对所有的CREATE和DROP TABLE语句都进行审计;权限审计是对系统权限的审计,如只针对“CREATETABLE”的权限审计,则只审计CREATE TABLE语句;方案对象审计是针对特定的DMI。
语句和特定方案对象的GRANT、REVOKE语句的审计。
从Oracle9i后支持细粒度审计,可以用于监视基于内容的数据访问。
此外,也可利用数据库提供的触发器功能进行编程自定义审计方案,如可以用触发器编写登录,注销以及其他数据库事件的Oracle审计信息。
6.2数据安全性层面
在多用户数据库系统中,数据安全性包括:
①防止非授权用户对数据进行存取操作:
②防止非授权用户对模式对象的存取操作;⑨控制系统资源的使用;④控制磁盘的使用;⑤审计用户的操作.
数据加密
一般而言数据库系统提供的基本安全技术能够满足大多数的应用,但对于一些重要部门或敏感领域的应用,仅靠上述这些措施是难以完全保证数据的安全性,某些用户尤其是一些内部用户仍可能非法获取用户名、口令字,或利用其他方法越权使用数据库,因此有必要对数据库中存储的重要数据进行加密处理。
数据库密码系统要求将明文数据加密成密文数据,数据库中存储密文数据,查询时将密文数据取出解密得到明文信息。
Oracle9i提供了特殊DBMS-OBFUSCATION—TOOL KIT 包, 在 Oraclel10g中又增加了DBMSCRYPT0包用于数据加密/解密,支持DES、AES等多种加密/解密算法。
7. Oracle的安全管理操作
✧创建概要文件
创建一个概要文件 user_limited, 把它提供给用户 normal_user"使用.如果连续3次与normal_user的连接失败,该账户将自动由oracle锁定,再使用normal_user账户的正确口令,系统会提示出错信息.1天后此账户自动解锁,可继续使用. 创建命令代码如下:
SQL>CREATE PROFILE user_ limited LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME l;
SQL>ALTER USER normal_user PROFILE user_limited;
✧修改概要文件
如果将上述概要文件的允许失败连接次数改为5.账户锁定时间改为10. 修改代码如下:
SQL>ALTER PROFILE user_limited LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TLME 10;
✧启用审计
审计是监视和记录所选用户的数据活动。
审计通常用于调查可疑活动和监视与收集特定数据库活动的数据。
如果数据被非授权用户删除。
管理员可对该数据库的所有连接进行审计,以及对数据库的所有删除进行审计.管理员还可以对某种类型的SQL语句、执行相应动作的系统权限、全部用户或指定用户的活动进行审计。
达到监视数据库对象的数据处理操作的目的.管理员可以启用和禁用审计信息记录。
当在数据库中启用审计时,在语句执行阶段生成审计记录,如审计normal_user用户的所有更新操作代码为:
SQL>AUDITUPDATE TABLE BY normal_user,