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

下载本文档

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

文档简介

,刘相兵(Maclean Liu) ,深入浅出Oracle数据库安全知识(V1.0),,,,,,,,,,,,,介绍,允许或禁止Oracle DB中的用户行为,包括其中的对象 通过以下实现: 登录身份验证(Authentication),连接到数据库 访问控制,访问模式对象和数据(access control) 审计,记录用户行为(audit),,,,,,,,,,,,,基础身份验证,数据库管理员(以SYSDBA/SYSOPER)身份在DB之外被身份验证 操作系统身份验证 密码文件身份验证 举例来说 sqlplus “/ as sysdba” 登录,OS用户在Unix上为DBA组用户,在Windows上是ORADBA组用户 普通数据库用户只能在数据库启动(alter database open)后身份验证并等登录 也可以采用OS 身份验证 例如: create user maclean identified externally .,,,,,,,,,,,,,基础身份验证,数据库身份认证 例如: create user maclean identified by oracle; 可以通过数据字典视图来查看用户信息 DBA_USERS describes all users of the database. ALL_USERS Lists users visible to the current user, but does not describe them USER_TS_QUOTAS Describes tablespace quotas for users V$SESSION Lists session information for each current session, includes user name PROXY_USERS Describes users who can assume the identity of other users V$PWFILE_USERS lists users granted SYSDBA and SYSOPER privileges as derived from the password file,,,,,,,,,,,,,访问控制,对象级别的安全(最小权限原则) 通过对象权限 通过角色 数据级别的安全(细粒度访问控制) -通过RLS(Row Level Security),,,,,,,,,,,,,对象级别的安全控制,将自身拥有对象的权限显示地授权给其他用户,包括查询和修改数据 举例来说: CONN MACLEAN/ORACLE GRANT SELECT ON wallet to hanna; 角色(roles)是一组已被命名的权限,可以直接授权给用户或者其他角色: 举例来说: CREATE ROLE developer; GRANT SELECT ON wallet1 to developer; GRANT INSERT ON wallet1 to developer; GRANT role1 to hanna;,,,,,,,,,,,,,对象级别的安全控制,内核函数Kzpchkbu()负责完成为给定用户检查某个对象上权限的任务。 该函数可能被多种路径调用,以检查对象上的必要权限。 大致的算法如下: If 检查需要被授权的用户是否对象的拥有者 则 返回授权验证成功(表示不需要做权限检查) Else 该对象权限是否被授予了 PUBLIC 若是,则返回 授权验证成功 Else 检查该用户是否被显示地授予了该对象权限或角色 若是,则返回 授权验证成功 Else 检查该用户是否被显示地授予了对应的系统权限 若是,则返回 授权验证成功 否则 报错 ,ORA_01031,ORA-00942,,,,,,,,,,,,,对象级别的安全控制,普通用户访问 SYS schema下的对象? (越来越困难!) 从9i开始,ANY权限无法访问SYS用户对象 默认O7_DICTIONARY_ACCESSIBILITY=false ,设置为TRUE可以让ANY权限访问SYS对象 否则普通用户必须显示地拥有SYS对象的权限。,,,,,,,,,,,,,对象级别的安全控制,常用数据字典视图,帮助了解对象和系统权限的信息: - DBA_SYS_PRIVS describes system privileges granted to users and roles (USER_SYS_PRIVS for connected user). - SESSION_PRIVS lists the privileges that are currently available to the user. - SESSION_ROLES lists the roles that are currently enabled to the user. - DBA_TAB_PRIVS describes all object grants in the database. (USER_TAB_PRIVS for connected user).,,,,,,,,,,,,,数据级别的安全(RLS/VPD),Virtual Private Database(VPD)有时候也叫做Fine Grained Access Control (FGAC),亦即Row Level Security (RLS),在 Oracle 8i中被引入; 由于该特性是基于实际的数据内容而非数据库对象,因此被叫做RLS。 仅在discretionary access control (DAC) 满足的情况下RLS生效,例如user1尝试访问user2所拥有的存在RLS policy的表,前提是在user2的表上有SELECT权限 其内部工作原理是 透明地将SQL语句修改成基于预定义准则的临时视图。在运行时,谓词会被附加到原查询上以便过滤查询所能看到的数据,,,,,,,,,,,,,数据级别的安全(RLS/VPD),通过Oracle提供的标准 DBMS_RLS Package的过程来将表/视图/同义词等对象和策略关联起来 RLS策略包含一个PL/SQL函数以返回谓词串,这个谓词串会被在语句被执行前被加入到查询条件中 例如: : CONNECT scott/tiger create table t1 (c1 int); insert into t1 values (10); insert into t1 values (10); insert into t1 values (20); insert into t1 values (30); commit;,,,,,,,,,,,,,数据级别的安全(RLS/VPD),CREATE OR REPLACE FUNCTION func1 (schema_name VARCHAR2, table_name VARCHAR2) RETURN VARCHAR2 IS BEGIN RETURN c1 = 10; END; / SQL EXEC DBMS_RLS.ADD_POLICY (scott,t1,pol1,scott,func1); PL/SQL procedure successfully completed. SQL select * from t1; C1 - 10 10,,,,,,,,,,,,,数据级别的安全(RLS/VPD),内核函数kzrtevw()完成为存在RLS policy的表/视图/同义词创建临时视图的工作 在语义解析阶段,从数据字典层kkmfcblo()调用kzrtevw() 一个查询语句” select * from maclean” 在语义解析阶段被装换为 Select * from (select * from maclean where t1=10); 临时视图 kzrtevw()生成的临时视图会再次被硬解析hard parse,,,,,,,,,,,,,数据级别的安全(RLS/VPD),若存在参考完整性约束 例如一张启用了RLS Policy的子表上有外键约束,RLS机制会检查相关的父表上是否有RLS Policy以判断是否真的可以从父表上读取数据以验证约束。这通过内核函数kzrtppg() 完成,若无法从父表读取到数据,则报错ORA-28117。 oraclevrh8 $ oerr ora 28117 28117, 00000, “integrity constraint violated - parent record not found“ / *Cause: try to update/insert a child record with new foreign key / values, but the corresponding parent row is not visible / because of fine-grained security in the parent. / *Action: make sure that the updated foreign key values must also visible in the parent,,,,,,,,,,,,,数据级别的安全(RLS/VPD),SYS对任何行级安全策略(RLS)均享有豁免权 可以通过系统权限 “EXEMPT ACCESS POLICY”让普通用户也对RLS Policy豁免 RLS policies相关的一些有用字典视图: ALL_POLICIES describes the security policies on the synonyms, tables, and views accessible to the current user. DBA_POLICIES describes all security policies in the database. USER_POLICIES describes the security policies on the synonyms, tables, and views owned by the current user.,,,,,,,,,,,,,Audit审计记录用户行为,在部署安全措施后仍有发生恶意数据库行为的可能性 审计和记录用户行为可以发现各种可疑的或伪装的恶意行为 有助于进一步加强安全措施,,,,,,,,,,,,,Audit审计记录用户行为,Audit审计的种类 强制审计:为每一次实例启动写出审计记录到OS文件,shutdown以及权限登录的记录存放在$ORACLE_HOME/rdbms/audit 目录下(注意定期清理哦,亲!) SYS审计:记录SYSDBA/SYSOPER等权限用户的操作,审计记录存放在OS 文件,SYSLOG中。 标准审计:记录用户针对数据库对象、语句、权限级别的行为。审计记录可以存放在OS文件、XML文件或数据库中(AUD$基表) 对象级别审计 权限级别审计 语句级别审计 细粒度控制:基于用户访问的数据记录用户行为。 审计记录存放在数据库内(FGA_LOG$)或者XML文件中。,,,,,,,,,,,,,Audit审计记录用户行为,示例审计文件: Audit file /s01/admin/G10R25/adump/g10r25_ora_3724_1.aud Oracle Database 10g Enterprise Edition Release .0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options ORACLE_HOME = /s01/oracle/product//db_1 System name: Linux Node name: Release: 2.6.32-200.13.1.el5uek Version: #1 SMP Wed Jul 27 21:02:33 EDT 2011 Machine: x86_64 Instance name: G10R25 Redo thread mounted by this instance: 1 Oracle process number: 15 Unix process pid: 3724, image: (TNS V1-V3) Sat Jul 7 02:29:41 2012 LENGTH : 160 ACTION :7 CONNECT DATABASE USER:1 / PRIVILEGE :6 SYSDBA CLIENT USER:6 oracle CLIENT TERMINAL:5 pts/0 STATUS:1 0 DBID:10 2652277393 Sat Jul 7 02:29:42 2012 LENGTH : 173 ACTION :19 ALTER DATABASE OPEN DATABASE USER:1 / PRIVILEGE :6 SYSDBA CLIENT USER:6 oracle CLIENT TERMINAL:5 pts/0 STATUS:1 0 DBID:10 2652277393 Sat Jul 7 02:29:46 2012 LENGTH : 172 ACTION :18 select * from dual DATABASE USER:1 / PRIVILEGE :6 SYSDBA CLIENT USER:6 oracle CLIENT TERMINAL: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审计记录用户行为,对象级别的审计 例如: AUDIT SELECT ON MACLEAN.TEST; 语句级别的审计 例如:AUDIT CREATE TABLE BY MACLEAN; 权限级别的审计 例如:AUDIT SELECT ANY TABLE BY MACLEAN;,,,,,,,,,,,,,Audit审计记录用户行为,部分标准审计选项: AUDIT BY SESSION针对用户和会话 例如:AUDIT SELECT ON MACLEAN.TAB BY SESSION; AUDIT BY ACCESS针对每一个可审计的操作 例如: AUDIT SELECT ON MACLEAN.TAB BY ACCESS; AUDIT WHENEVER SUCCESSFUL仅审计执行成功的操作 例如: AUDIT CONNECT WHENEVER SUCCESSFUL; Audit WHENEVER NOT SUCCESSFUL仅审计执行失败的操作 例如: AUDIT CONNECT WHENEVER NOT SUCCESSFUL,,,,,,,,,,,,,Audit审计记录用户行为,细粒度审计Fine Grained Auditing (FGA) FGA 策略通过DBMS_FGA包与表/视图/同义词关联起来 例如:begin DBMS_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;,,,,,

温馨提示

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

评论

0/150

提交评论