深入浅出数据库安全知识.ppt_第1页
深入浅出数据库安全知识.ppt_第2页
深入浅出数据库安全知识.ppt_第3页
深入浅出数据库安全知识.ppt_第4页
深入浅出数据库安全知识.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

刘相兵 MacleanLiu liu maclean 深入浅出Oracle数据库安全知识 V1 0 介绍 允许或禁止OracleDB中的用户行为 包括其中的对象通过以下实现 登录身份验证 Authentication 连接到数据库访问控制 访问模式对象和数据 accesscontrol 审计 记录用户行为 audit 基础身份验证 数据库管理员 以SYSDBA SYSOPER 身份在DB之外被身份验证操作系统身份验证密码文件身份验证举例来说sqlplus assysdba 登录 OS用户在Unix上为DBA组用户 在Windows上是ORADBA组用户普通数据库用户只能在数据库启动 alterdatabaseopen 后身份验证并等登录也可以采用OS身份验证例如 createusermacleanidentifiedexternally 基础身份验证 数据库身份认证例如 createusermacleanidentifiedbyoracle 可以通过数据字典视图来查看用户信息DBA USERSdescribesallusersofthedatabase ALL USERSListsusersvisibletothecurrentuser butdoesnotdescribethemUSER TS QUOTASDescribestablespacequotasforusersV SESSIONListssessioninformationforeachcurrentsession includesusernamePROXY USERSDescribesuserswhocanassumetheidentityofotherusersV PWFILE USERSlistsusersgrantedSYSDBAandSYSOPERprivilegesasderivedfromthepasswordfile 访问控制 对象级别的安全 最小权限原则 通过对象权限通过角色数据级别的安全 细粒度访问控制 通过RLS RowLevelSecurity 对象级别的安全控制 将自身拥有对象的权限显示地授权给其他用户 包括查询和修改数据举例来说 CONNMACLEAN ORACLEGRANTSELECTONwallettohanna 角色 roles 是一组已被命名的权限 可以直接授权给用户或者其他角色 举例来说 CREATEROLEdeveloper GRANTSELECTONwallet1todeveloper GRANTINSERTONwallet1todeveloper GRANTrole1tohanna 对象级别的安全控制 内核函数Kzpchkbu 负责完成为给定用户检查某个对象上权限的任务 该函数可能被多种路径调用 以检查对象上的必要权限 大致的算法如下 If检查需要被授权的用户是否对象的拥有者则返回授权验证成功 表示不需要做权限检查 Else该对象权限是否被授予了PUBLIC若是 则返回授权验证成功Else检查该用户是否被显示地授予了该对象权限或角色若是 则返回授权验证成功Else检查该用户是否被显示地授予了对应的系统权限若是 则返回授权验证成功否则报错 ORA 01031 ORA 00942 对象级别的安全控制 普通用户访问SYSschema下的对象 越来越困难 从9i开始 ANY 权限无法访问SYS用户对象默认O7 DICTIONARY ACCESSIBILITY false 设置为TRUE可以让 ANY 权限访问SYS对象否则普通用户必须显示地拥有SYS对象的权限 对象级别的安全控制 常用数据字典视图 帮助了解对象和系统权限的信息 DBA SYS PRIVSdescribessystemprivilegesgrantedtousersandroles USER SYS PRIVSforconnecteduser SESSION PRIVSliststheprivilegesthatarecurrentlyavailabletotheuser SESSION ROLESliststherolesthatarecurrentlyenabledtotheuser DBA TAB PRIVSdescribesallobjectgrantsinthedatabase USER TAB PRIVSforconnecteduser 数据级别的安全 RLS VPD VirtualPrivateDatabase VPD 有时候也叫做FineGrainedAccessControl FGAC 亦即RowLevelSecurity RLS 在Oracle8i中被引入 由于该特性是基于实际的数据内容而非数据库对象 因此被叫做RLS 仅在discretionaryaccesscontrol DAC 满足的情况下RLS生效 例如user1尝试访问user2所拥有的存在RLSpolicy的表 前提是在user2的表上有SELECT权限其内部工作原理是透明地将SQL语句修改成基于预定义准则的临时视图 在运行时 谓词会被附加到原查询上以便过滤查询所能看到的数据 数据级别的安全 RLS VPD 通过Oracle提供的标准DBMS RLSPackage的过程来将表 视图 同义词等对象和策略关联起来RLS策略包含一个PL SQL函数以返回谓词串 这个谓词串会被在语句被执行前被加入到查询条件中例如 CONNECTscott tigercreatetablet1 c1int insertintot1values 10 insertintot1values 10 insertintot1values 20 insertintot1values 30 commit 数据级别的安全 RLS VPD CREATEORREPLACEFUNCTIONfunc1 schema nameVARCHAR2 table nameVARCHAR2 RETURNVARCHAR2ISBEGINRETURN c1 10 END SQL EXECDBMS RLS ADD POLICY scott t1 pol1 scott func1 PL SQLproceduresuccessfullycompleted SQL select fromt1 C1 1010 数据级别的安全 RLS VPD 内核函数kzrtevw 完成为存在RLSpolicy的表 视图 同义词创建临时视图的工作在语义解析阶段 从数据字典层kkmfcblo 调用kzrtevw 一个查询语句 select frommaclean 在语义解析阶段被装换为Select from select frommacleanwheret1 10 临时视图kzrtevw 生成的临时视图会再次被硬解析hardparse 数据级别的安全 RLS VPD 若存在参考完整性约束例如一张启用了RLSPolicy的子表上有外键约束 RLS机制会检查相关的父表上是否有RLSPolicy以判断是否真的可以从父表上读取数据以验证约束 这通过内核函数kzrtppg 完成 若无法从父表读取到数据 则报错ORA 28117 oracle vrh8 oerrora2811728117 00000 integrityconstraintviolated parentrecordnotfound Cause trytoupdate insertachildrecordwithnewforeignkey values butthecorrespondingparentrowisnotvisible becauseoffine grainedsecurityintheparent Action makesurethattheupdatedforeignkeyvaluesmustalsovisibleintheparent 数据级别的安全 RLS VPD SYS对任何行级安全策略 RLS 均享有豁免权可以通过系统权限 EXEMPTACCESSPOLICY 让普通用户也对RLSPolicy豁免RLSpolicies相关的一些有用字典视图 ALL POLICIESdescribesthesecuritypoliciesonthesynonyms tables andviewsaccessibletothecurrentuser DBA POLICIESdescribesallsecuritypoliciesinthedatabase USER POLICIESdescribesthesecuritypoliciesonthesynonyms tables andviewsownedbythecurrentuser Audit审计记录用户行为 在部署安全措施后仍有发生恶意数据库行为的可能性审计和记录用户行为可以发现各种可疑的或伪装的恶意行为有助于进一步加强安全措施 Audit审计记录用户行为 Audit审计的种类强制审计 为每一次实例启动写出审计记录到OS文件 shutdown以及权限登录的记录存放在 ORACLE HOME rdbms audit目录下 注意定期清理哦 亲 SYS审计 记录SYSDBA SYSOPER等权限用户的操作 审计记录存放在OS文件 SYSLOG中 标准审计 记录用户针对数据库对象 语句 权限级别的行为 审计记录可以存放在OS文件 XML文件或数据库中 AUD 基表 对象级别审计权限级别审计语句级别审计细粒度控制 基于用户访问的数据记录用户行为 审计记录存放在数据库内 FGA LOG 或者XML文件中 Audit审计记录用户行为 示例审计文件 Auditfile s01 admin G10R25 adump g10r25 ora 3724 1 audOracleDatabase10gEnterpriseEditionRelease10 2 0 5 0 64bitProductionWiththePartitioning OLAP DataMiningandRealApplicationTestingoptionsORACLE HOME s01 oracle product 10 2 0 5 db 1Systemname LinuxNodename Release 2 6 32 200 13 1 el5uekVersion 1SMPWedJul2721 02 33EDT2011Machine x86 64Instancename G10R25Redothreadmountedbythisinstance 1Oracleprocessnumber 15Unixprocesspid 3724 image oracle TNSV1 V3 SatJul702 29 412012LENGTH 160 ACTION 7 CONNECT DATABASEUSER 1 PRIVILEGE 6 SYSDBA CLIENTUSER 6 oracle CLIENTTERMINAL 5 pts 0 STATUS 1 0 DBID 10 2652277393 SatJul702 29 422012LENGTH 173 ACTION 19 ALTERDATABASEOPEN DATABASEUSER 1 PRIVILEGE 6 SYSDBA CLIENTUSER 6 oracle CLIENTTERMINAL 5 pts 0 STATUS 1 0 DBID 10 2652277393 SatJul702 29 462012LENGTH 172 ACTION 18 select fromdual DATABASEUSER 1 PRIVILEGE 6 SYSDBA CLIENTUSER 6 oracle CLIENTTERMINAL 5 pts 0 STATUS 1 0 DBID 10 2652277393 Audit审计记录用户行为 内核函数Kzasydmp 为强制的SYSDBA SYSOPER审计写出审计记录到OS文件 SYSLOG或者XML文件在windows系统上 打印审计记录到EventLog DB User OS Privilege Client User Client Termninal Status SQL Text 在Unix平台上若设置了AUDIT SYSLOG LEVEL 审计记录发送给syslog这个后台服务否则生成一个审计文件 aud Audit审计记录用户行为 对象级别的审计例如 AUDITSELECTONMACLEAN TEST 语句级别的审计例如 AUDITCREATETABLEBYMACLEAN 权限级别的审计例如 AUDITSELECTANYTABLEBYMACLEAN Audit审计记录用户行为 部分标准审计选项 AUDITBYSESSION 针对用户和会话例如 AUDITSELECTONMACLEAN TABBYSESSION AUDITBYACCESS 针对每一个可审计的操作例如 AUDITSELECTONMACLEAN TABBYACCESS AUDITWHENEVERSUCCESSFUL 仅审计执行成功的操作例如 AUDITCONNECTWHENEVERSUCCESSFUL AuditWHENEVERNOTSUCCESSFUL 仅审计执行失败的操作例如 AUDITCONNECTWHENEVERNOTSUCCESSFUL Audit审计记录用户行为 细粒度审计FineGrainedAuditing FGA FGA策略通过DBMS FGA包与表 视图 同义词关联起来例如 beginDBMS FGA ADD POLICY object schema scott object name emp policy name mypolicy1 audit condition sal comm sal handler schema NULL handler module NULL enable TRUE statement types INSERT UPDATE audit trail DBMS FGA XML DBMS FGA EXTENDED audit column opts DBMS FGA ANY COLUMNS end Audit审计记录用户行为 标准审计 audsucc audfail 是审计的主要入口 针对成功 不成功的审计操作会进一步调用auddft 例如maclean用户下的test表为成功操作审计 opiexe audsucc auddft audsel audfro auddft 判断行为代码决定合适的审计路径audsel 调用audfro 记录审计链上的信息audfro 首先设置

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论