oracle20数据库安全.docx
- 文档编号:23657663
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:22
- 大小:47.68KB
oracle20数据库安全.docx
《oracle20数据库安全.docx》由会员分享,可在线阅读,更多相关《oracle20数据库安全.docx(22页珍藏版)》请在冰豆网上搜索。
oracle20数据库安全
数据库安全简介
数据库安全的作用是控制用户是否能够对数据库及其中的对象执行操作。
Oracle通过方案(schema)及安全域(securitydomain)来控制用户对数据库的访问,并限制对各种数据库资源的使用。
Oracle提供了完善的随需定义的访问控制(discretionaryaccesscontrol)。
随需定义的访问控制指通过权限(privilege)来控制用户对数据库对象的访问。
权限即以规则的形式(prescribedmanner)表示的用户对数据库对象的访问许可(permission),例如查询表的许可。
管理员可以分别为每个用户授予权限,不同用户的权限设定是相互独立的。
·数据库用户与数据库方案
一个Oracle数据库中可以存在多个用户。
在访问数据库时,用户在数据库应用程序中使用有效的用户名连接到数据库。
每个用户都应有一个对应的密码,以防止未授权的访问。
··安全域
每个用户都有一个对应的安全域(securitydomain),所谓安全域实际上是一组属性,这组属性决定了:
∙用户可执行的操作(权限(privilege)或角色(role))
∙用户的表空间限额(tablespacequota)(即可用的磁盘空间)
∙用户的系统资源限制(例如,CPU处理时间)
·权限
权限(privilege)即执行特定类型SQL语句的权利。
以下为一些权限的例子:
∙连接到数据库(创建会话)
∙在用户方案(schema)下创建表
∙查询其他用户表中的数据
∙执行其他用户的存储过程
·角色
在Oracle中,可以通过角色(role)来实现更严格且更简单的权限管理。
角色即一组命名的权限,可以授予用户或其他角色。
·存储设置及限额
管理员可以对每个用户所能使用的数据库磁盘空间进行限制,限制的对象包括默认表空间,临时表空间,及表空间限额。
透明数据加密概述
Oracle数据库通过身份验证(authentication),授权(authorization),及审计(auditing)实现数据库安全。
身份验证用于确保只有合法用户才能访问数据库。
授权用于确保用户只能访问其有权访问的资源。
审计用于确保用户对受保护资源的访问有据可查。
上述安全机制可以有效地保护数据库数据,但无法阻止非授权用户直接访问用于存储数据的操作系统文件。
透明数据加密(transparentdataencryption)组件能够对存储于操作系统文件中的敏感数据进行加密。
此外,此组件还能在数据库外部的安全模块(securitymodule)存储及管理密钥(encryptionkey),以保证密钥的安全。
使用外部安全模块,可以将用于安全管理的程序功能(例如加密)与其他常规数据库功能分开。
因此得以将管理工作划分给DBA及安全管理员(securityadministrator),任何一个管理员都不能完全地访问数据,从而增强了系统的安全性。
外部安全模块可以生成用于执行加密工作的密钥,并在数据库外安全地存储密钥。
在用户对数据列进行加密前,必须生成或手工设置一个主密钥。
如果用户执行的SQL语句中,在数据列上使用了ENCRYPT子句,Oracle将为数据列生成一个密钥,并使用主密钥对此密钥进行加密。
身份验证方法概述
身份验证(authentication)指验证需要使用数据,资源,及应用程序的用户(包括人员,设备,或其他实体)的身份。
经过身份验证后即在用户与系统间建立了可信任的关系,以便于以后的交互操作。
身份验证还能够将资源访问及操作执行与某一用户相联系,从而确保了数据库的可审计性(accountability)。
经过身验认证后,授权系统(authorizationprocess)才能决定用户可以访问的资源,以及可以执行的操作。
在实际应用中为了简化工作,通常所有数据库用户都使用相同的身份验证方法。
但Oracle支持在同一数据库实例内使用多种身份验证方法。
对于数据库管理员,Oracle使用特殊的身份验证过程,因为管理员需要执行特殊的数据库操作。
为了确保网络身份验证的安全性,Oracle能够在传输过程中对密码加密。
为了验证数据库用户身份,阻止非授权的用户访问系统,用户可以组合使用以下各节介绍的身份验证方式:
∙操作系统身份验证
∙网络身份验证
∙Oracle数据库身份验证
∙多层身份验证及授权
∙SSL协议身份验证
∙数据库管理员的身份验证
·操作系统身份验证
在某些操作系统中,Oracle可以利用操作系统维护的信息进行用户身份验证,这有以下好处:
∙经过操作系统的身份验证后,用户可以更便捷地连接到Oracle,而无需提供用户名及密码。
例如,经过操作系统验证的用户,按以下方式调用SQL*Plus,即可跳过输入用户名及密码的步骤:
SQLPLUS/
∙在操作系统中集中地进行用户身份验证,Oracle不必再存储及管理用户密码,但Oracle仍旧需要在数据库中维护用户名。
∙在数据库及操作系统中记录审计跟踪数据(audittrail)时可以使用相同的用户名。
·网络身份验证
Oracle支持以下网络身份验证方式:
∙基于第三方的身份验证技术
∙基于PKI的身份验证
∙远程身份验证
必须使用OracleDatabaseEnterpriseEdition(Oracle数据库企业版)并购买OracleAdvancedSecurity(Oracle高级安全)选件,才能使用上述身份验证方式。
··基于第三方的身份验证技术
如果系统中存在(DCE,Kerberos,或SESAME等)的网络身份验证服务(networkauthenticationservice),Oracle可以使用这些网络服务进行身份验证。
在使用网络身份验证服务时,应注意其对网络角色(networkrole)及数据库链接(databaselink)的影响。
··基于PKI的身份验证
基于公共密钥加密(publickeycryptography)的身份验证系统能够为用户客户端生成数字证书(digitalcertificate),客户端使用此证书在业务服务器上进行身份验证,而不是直接和身份验证服务器交互(authenticationserver)。
Oracle提供了支持公共密钥(publickey)及数字证书的公共密钥基础结构(publickeyinfrastructure,PKI),其中包含以下组件:
∙基于SSL(SecureSocketsLayer(安全套接字层))的身份验证及安全会话密钥(securesessionkey)管理。
∙OracleCallInterface函数及PL/SQL函数,用于使用私有密钥(privatekey)及证书来保护用户指定的数据,或使用可信证书(trustedcertificate)验证数据上的签名(signature)。
∙可信证书,用于验证第三方实体的身份,确认其是否为可信的用户证书签署者。
∙Oraclewallet,用于储存用户私有密钥,用户证书,及用户信任点(trustpoint)(即可信的认证机构)集的数据结构。
∙OracleWalletManager,用于管理及编辑Oraclewallet安全身份证明(securitycredentials)的单机Java应用程序。
∙由Oracle之外的认证机构签署并发布的X.509v3证书。
∙OracleInternetDirectory,用于管理用户的权限及安全属性,包括通过X.509证书进行用户身份验证。
OID能够确保属性级(attribute-level)的访问控制,并使读,写,及更新等权限可以控制到具体的用户,例如管理员。
∙OracleEnterpriseSecurityManager,实现集中化的权限管理,从而简化管理员的工作,并提升系统的安全级别。
用户可以通过此组件在OracleInternetDirectory中存储或提取角色信息。
∙OracleEnterpriseLoginAssistant是一个基于Java的工具,用于打开或关闭用户的wallet,从而控制应用程序是否采用基于SSL的安全通讯。
··远程身份验证
Oracle能够利用远程拨号用户服务(RemoteDial-InUserService,RADIUS)支持远程用户身份验证。
RADIUS是一个标准的轻量级协议,主要用于用户身份验证,授权,及审计(accounting)。
·Oracle数据库身份验证
Oracle能够利用存储在数据库内的信息对尝试连接数据库的用户进行身份验证。
如果采用数据库身份验证(databaseauthentication),在创建用户时必须同时设定一个密码,用户在连接数据库时需要提供此密码。
如果用户提供的密码不正确,连接将被拒绝,从而阻止非授权的用户使用数据库。
Oracle将数据密码以加密的形式存储在数据字典中以防止非授权的修改,而授权用户可以随时修改此密码。
数据库身份验证包括以下功能
∙密码加密
∙账户锁定
∙密码有效期及截至日期
∙密码复杂度验证
··密码加密
为了确保密码的机密性,Oracle在通过网络传输密码时会首先对密码进行加密。
Oracle使用改进的AES(AdvancedEncryptionStandard(高级加密标准))算法来加密密码。
··账户锁定
如果连续的失败登录次数超过了默认值,Oracle将锁定用户帐户。
用户可以设定一个时间间隔,使被锁定帐户自动解锁,也可以请求DBA执行解锁操作。
DBA也可以手工锁定数据库帐户,经过手工锁定数据库帐户必须由DBA显式地解锁。
··密码有效期及截至日期
DBA可以为密码设定有效期,在有效期后用户必须修改密码才能再次登录数据库。
DBA还可以设定密码宽限期(graceperiod),在宽限期内用户每次登录数据库时都将收到需要修改密码的警告信息。
如果在宽限期内仍未修改密码,账户将被锁定。
必须经过DBA处理后被锁定账户才能解锁。
密码历史对比(passwordhistory)选项能够检查新设定的密码,确保其不与之前一定时期内的密码重复,或不与之前一定时期内的密码过分相似。
··密码复杂度验证
Oracle默认的密码复杂度验证程序将检查密码是否满足以下要求:
∙长度超过4个字符
∙不与用户ID相同
∙至少包含一个字母字符,一个数字字符,及一个标点符号(punctuationmark)
∙不能与Oracle内部存储的简单词汇列表相匹配,例如welcome,account,database,user等词汇
∙与之前的密码相比至少有3个字符不相同
·多层身份验证及授权
在多层系统(multitierenvironment)中,Oracle能够限制中间层应用程序(middle-tierapplication)的权限,能够保存用户在系统各层内的身份,还能够审计(audit)用户执行的各种操作,从而控制中间层应用的安全性。
在应用层,采用重量级中间件(heavymiddletier)(例如事务处理监视器(transactionprocessingmonitor))的系统一定会记录连接到中间件的用户的身份。
在中间件层,中间件的一大优势在于使用连接池(connectionpooling),连接池的特点是为多个用户提供一个共享的连接来访问数据库服务器,但这将导致无法记录用户对数据库的访问情况。
为了实现对使用共享连接的用户进行身份验证,数据库必须能够快速地建立(setup)或结束(breakdown)用于身份验证的连接。
为满足上述要求,OracleDBA可以使用OracleCallInterface(OCI)创建轻量级会话(lightweightsession),对每个用户进行数据库身份验证(databasepasswordauthentication)。
此方案既实现了在中间层内记录真实用户的身份,也无需为每个用户创建数据库连接。
创建轻量级会话时不一定需要用户提供密码。
但如果中间层在防火墙外,使用密码创建轻量级会话能够确保更好的安全性。
而对于防火墙内部的应用服务器,创建轻量级会话时可以不提供密码。
·SSL协议身份验证
安全套接字层(SecureSocketLayer,SSL)协议是一种应用层协议。
外部用户(externaluser)或全局用户(globaluser)可以通过SSL进行数据库身份验证。
·数据库管理员的身份验证
可以选择采用操作系统或密码文件为数据库管理员进行身份验证(authentication)。
下图显示了数据库管理员身份验证的可选方式。
数据库管理员可以管理本地的数据库(在运行数据库的计算机上),也可以在一个远程客户端上管理多个数据库,在这两种情况下,身份验证方式有所不同。
数据库管理员的身份验证方式
通过操作系统对数据库管理员进行身份验证时,通常需要将操作系统用户名放入特殊的用户组,或赋予此用户特殊的权限(在UNIX系统上,用户组名为dba)。
Oracle数据库在密码文件(passwordfile)中记录被授予了SYSDBA及SYSOPER权限的数据库用户,这些权限能够执行以下操作:
∙具备SYSOPER权限的数据库管理员能够执行STARTUP,SHUTDOWN,ALTERDATABASEOPEN/MOUNT,ALTERDATABASEBACKUP,ARCHIVELOG,及RECOVER命令,并具备RESTRICTEDSESSION权限。
∙具备SYSDBA权限的数据库管理员拥有所有系统权限(systemprivilege)及权限的ADMINOPTION选项,还拥有SYSOPER所拥有的全部系统权限。
此外,能够执行CREATEDATABASE命令,并能够执行基于时间的恢复操作(time-basedrecovery)。
授权概述
授权(authorization)主要包括两方面内容:
∙只允许特定的用户对数据进行访问,处理,及修改
∙对用户的访问及行为(action)进行各种限制。
对用户的限制可以针对对象,例如方案(schema),表,或数据行;也可以针对资源,例如时间(包括CPU时间,连接时间,空闲时间等)。
·用户资源限制及配置模版
理员能够对用户可用的系统资源进行限制,此功能是用户安全管理的一部分。
进行限制后,可以防止用户对重要系统资源(例如CPU时间)的不可控的消费。
管理员可以使用配置模版(profile)来设置用户的资源限制(resourcelimit)及密码管理参数选项(passwordmanagementpreference)。
在数据库内可以存储任意多个配置模版。
安全管理员(securityadministrator)能够全局地设置系统是否采用配置模版来限制用户对资源的使用。
··系统资源类型及资源限制类型
Oracle能够限制用户对多种系统资源的使用,其中包括CPU时间及逻辑读取(logicalread)。
一般来说,用户可以在会话级(sessionlevel),调用级(calllevel),或同时对这些资源进行限制。
···会话级
如果用户超过了某一会话级资源限制,Oracle将终止(回滚)当前执行的语句,并通知用户此会话超出资源限制。
此时,当前会话内已经执行的语句不受资源限制的影响,而用户则只能执行COMMIT,ROLLBACK,或断开连接(disconnect)(如断开连接,当前事务将被提交)。
用户的其他所有操作都将导致报错。
在事务被提交或回滚后,用户在当前会话内也不能执行其他任何操作。
···调用级
SQL语句每次运行时,Oracle都将执行一系列操作来处理此语句。
在处理过程中,不同的执行阶段需要向数据库发起不同的调用。
为了防止某个调用过度地使用系统资源,Oracle允许管理员在调用级(calllevel)设定多种资源限制(resourcelimit)。
如果用户超过了调用级资源限制,Oracle将停止执行语句,并进行回滚,之后向用户报错。
此时,当前会话内已经执行的语句不受资源限制的影响,用户会话也将保持连接状态。
···CPU时间
当Oracle执行SQL语句或用户的其他各类调用(call)时,系统需要一定的CPU时间来处理此调用。
普通的调用所需的CPU时间较少。
但是需要处理大量数据的语句,或失控的查询(runawayquery)可能占用大量的CPU时间,这减少了其他处理任务可用的CPU时间。
为了防止CPU时间被不受控地占用,管理员可以限制会话内每个调用使用的CPU时间,以及会话中所有Oracle调用的CPU时间之和。
设置及衡量调用或会话可使用的CPU时间的单位为百分之一秒。
···逻辑读取
输入/输出(Input/output,I/O)是数据库系统中开销最大的操作。
I/O操作密集的SQL语句可能会占用大量内存及硬盘,并与其他需要同样资源的数据库操作产生竞争。
为了防止I/O被独占,Oracle可以限制调用及会话的逻辑数据块读取(logicaldatablockread)。
逻辑数据块读取包含从内存及磁盘读取数据。
设置及衡量调用或会话可使用的逻辑读取的单位为数据块数量。
···其他资源
Oracle还在会话级(sessionlevel)支持以下类型的资源限制:
∙管理员可以限制用户并发会话数(concurrentsessionsforeachuser)。
每个用户的并发会话数不能超过预设值。
∙管理员可以限制一个会话的空闲时间(idletime)。
如果会话内两次Oracle调用间的间隔时间达到了限制值,当前事务将被回滚,会话将被终止(aborted),会话所占用的资源将被系统回收。
下次会话将得到报错信息,提示用户已经终止了与实例的连接。
此限制的设置单位为分钟。
当会话由于超出空闲时间限制而被终止之后,进程监视器(processmonitor,PMON)后台进程将对被终止的会话进行清理。
在PMON完成此过程前,统计用户及会话资源使用时仍将包含被终止的会话。
∙管理员可以限制每个会话的连接持续时间。
如果会话持续连接时间超出限制值,当前事务将被回滚,会话将被移除(dropped),会话所占用的资源将被系统回收。
此限制的设置单位为分钟。
∙Oracle不会持续不断地监控会话的空闲时间及连接时间,因为这样做将降低系统性能。
Oracle的做法是每隔数分钟检查一次。
因此,在Oracle依据资源限制终止会话前,会话有可能已经略微超出了限制时间(例如,超出5分钟)。
∙Oracle能够限制一个会话所使用的私有SGA空间(作为私有SQL区(privateSQLarea))。
只有在共享服务模式(sharedserverconfiguration)下此项资源限制才能发挥所用。
而在专用服务模式(dedicatedserverconfiguration)下,私有SQL区位于PGA内。
此限制表示可供会话使用的实例SGA内存的字节数。
在设定时可以使用字符K或M表示千字节(kilobytes)及兆字节(megabytes)。
··配置模版
在数据库中可以创建多个配制模版,之后可以为每个数据库用户设定一个配制模版。
如果没有显式地为用户设定配制模版,用户将使用Oracle默认的配制模版。
配制模版内的资源限制信息将防止用户过度地使用数据库系统资源。
···何时使用配置模版
如果数据库安全策略(databasesecuritypolicy)中需要包含资源限制(resourcelimit),管理员就应创建并管理用户配制模版(profile)。
在使用配制模版前,首先要对数据库内相关的用户进行归类。
配制模版的作用是管理一组用户的资源限制,这就如同使用角色(role)来管理一组用户的权限(privilege)一样。
管理员首先要确定共需要几种配制模版来覆盖数据库内的全部用户,其次再为每个配制模版设定适当的资源限制。
···确定配制模版内各种资源限制值
在创建配制模版(profile)并设定资源限制(resourcelimit)前,首先要确定适当的资源限制值。
管理员可以依据典型用户所执行的各类操作来确定这些值。
通常,为配制模版确定适当的资源限制值的最佳方式是收集用户各类资源使用的历史信息。
·权限简介
只有为数据库用户授权(grant)后,用户才能执行其所需的数据库操作。
管理员只应授予一个用户其工作所必需的权限。
不必要地过度授权可能会导致严重的安全问题。
管理员可以采用两种方式为用户授权:
∙管理员可以显式地为用户授权。
例如,管理员可以显式地将向employees表插入数据的权限授予SCOTT用户。
∙管理员可以将一组权限授予一个角色(role)(即命名的一组权限),再将角色授予一个或多个用户。
例如,管理员可以将employees表的查询,插入,更新,删除权限授予clerk角色,再将此角色授予用户scott及brian。
Oracle中包含两类权限:
∙系统权限
∙方案对象权限
··系统权限
系统权限(systemprivilege)是执行某一特定操作,或对某类方案对象执行操作的权利。
例如,创建表空间的权限,或删除数据库中任意表数据的权限。
Oracle提供了超过100项系统权限。
··方案对象权限
方案对象权限(schemaobjectprivilege)是对某一方案对象执行特定操作的权利。
不同类型的方案对象具有不同的对象权限。
例如,从departments表中删除数据的权限就是一种对象权限。
簇(cluster),索引,触发器(trigger),及数据库链接(databaselink)等方案对象没有相关的对象权限。
对这些对象的使用是由系统权限(systemprivilege)控制的。
例如,用户必须是簇的拥有者或具备ALTERANYCLUSTER系统权限才能修改(alter)一个簇。
·角色简介
角色(role)是一组命名的相关权限(relatedprivilege),管理员可以将角色所代表的一组权限赋予用户或其他角色,从而简化权限的管理与控制。
在一个数据库内,角色名必须唯一。
与方案对象(schemaobject)不同,角色不属于任何方案(schema)。
因此,创建角色的用户可以被移除而不会对角色有所影响。
使用角色有助于简化终端用户系统(end-usersystem)权限及方案对象权限的管理。
但对应用开发者不应使用角色,因为存储程序结构(storedprogrammaticconstruct)访问方案对象的权限必须被直接授予。
通常,为数据库应用创建角色的任务应由DBA完成。
DBA应授予一个安全应用角色(secureapplicationrole)其所需的权限,再将此角色授予其他角色或用户。
一个应用程序可以同时使用多个角色,其中每个角色包含一组相关的权限,从而灵活控制应用程序的数据访问。
··角色的一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle20 数据库 安全
![提示](https://static.bdocx.com/images/bang_tan.gif)