1. 首页
  2. IT资讯

DBMS_RLS.SHARED_STATIC以及DBMS_RLS.SHARED_CONTEXT_SENSTIVE

http://blog.csdn.net/firefoxboy/archive/2008/10/02/3009891.aspx[@more@]

5.VPD策略类型 运行策略函数需要大量的系统资源,因此,将策略函数运行次数降低可以提高性能。Oracle8i和9i都是动态的。Oracle 10g中又引入了静态和上下文敏感等策略。10g中可用的类型有: 1)动态(默认) 2)静态 3)共享-静态 4)上下文敏感 5)共享-上下文敏感

6.静态策略类型 对于静态策略类型,我们可以将参数POLICY_TYPE的值指定为DBMS_RLS.STATIC。在静态的策略类型中,谓词在不同运行环境下都是相同的。静态策略函数运行一次,并且被缓存到SGA,这样静态策略函数就非常快。访问相同对象的语句不需要重复运行策略函数,当然根据SYS_CONTEXT和SYSDATE这样的属性不同,每次运行也可以产生不同的结果。 7.共享-静态策略类型 当一个函数用于多个策略中的时候,我们称之为共享策略。共享策略可以在多个对象的业务处理策略相同的时候,不必为每个对象都创建一个策略函数。我们应该将POLICY_TYPE设置为DBMS_RLS.SHARED_STATIC。它的处理方式与STATIC相同。 8.上下文敏感策略 我们需要将参数POLICY_TYPE的值指定为DBMS_RLS.CONTEXT_SENSITIVE。如果数据库发现自上次使用以后,运行的上下文环境发生了变化,那么就会对上下文敏感策略函数重新求值。 9.共享-上下文敏感策略类型 与上下文敏感策略类似,只不过函数是可以共享的。我们需要将POLICY_TYPE指定为DBMS_RLS.SHARED_CONTEXT_SENSTIVE。 10.其他VPD增强功能 在Oracle 10g中,DBMS_RLS.ADD_POLICY的过程中STATEMENT_TYPES参数可接收一种新的类型:INDEX。在Oracle 9i中,有效值是SELECT、INSERT、UPDATE、DELETE。Oracle 10g默认是应用除了INDEX的所有类型。引入INDEX类型是为了增强索引维护操作方面的安全策略,也就是用户需要有全部表的访问权才能创建表的索引。 Oracle 10g在ADD_POLICY过程中所作的另一个方面的增强在于参数LONG_PREDICATE。这个新的参数默认是FALSE,表示策略函数最多返回4000字节的谓词。当这个参数被设置为TRUE时,策略函数返回的文本串可以达到32K。 11.审计功能的增强 Oralce 数据库的审计(auditing)操作就是对用户在数据库中指定的操作进行监视和记录。10g具有下列类型的审核功能: 1)强制审计 强制审计可以对sysoper和sysdba进行审核 2)标准审计 设置初始化参数AUDIT_TRAIL即可启用数据库的审计功能。审计功能启用后,我们可以指定要审计的对象以及操作类型。例如,AUDIT UPDATE ON HR.EMPLOYEES语句启用的是对HR.EMPLOYEES表上的所有更新操作的审计。审计信息写入SYS.AUD$表,可以通过DBA_AUDIT_OBJECT来查询。 3)详细审计 详细审计,也叫精细审计(fine-graind auditing,FGA)是根据内容进行审计。FGA使用的是人们为对象添加的策略。策略可以具有复杂的含义,以便于确定数据是否对特定的查询、条件和访问的数据创建审计记录。 12.精细审核(FGA)的DML支持 FGA是Oracle 9i中引入的,当时它只支持SELECT语句。在Oracle 10g中,FGA支持SELECT、UPDATE和DELETE。过程DBMS_FGA的ADD_POLICY现在有了一个新的STATEMENT_TYPES函数,用于指定要审计的操作类型。下面我们对employee表进行精细审计,审计在这个表上进行了一些SELECT和UPDATE语句,并且语句操作的对象是薪金超过10000美元的行中的薪金列。我们可以这样定义这个FGA策略: SQL> BEGIN DBMS_FGA.ADD_POLICY( policy_name => ’AUD_EMPLOYEE_SAL’, object_schema => ’HR’, object_name => ’EMPLOYEE’, audit_column => ’SALARY’, audit_condition => ’SALARY >= 10000’, statement_types => ’SELECT, UPDATE’); END; SQL> / PL/SQL procedure successfully completed. 现在,用户DAVID正在对员工表进行更新和选择操作,并且负荷审计条件: SQL> show user USER is “DAVID” SQL> UPDATE hr.employee SET salary = 20000 WHERE first_name = ’NEENA’; 1 row updated. SQL> SELECT first_name FROM hr.employee WHERE salary > 15000; FIRST_NAME ——————– NEENA LEX 现在我们来查询FGA审计日志,察看审计信息: SQL> SELECT dbuid, lsqltext FROM sys.fga_log$; DAVID UPDATE hr.employee SET salary = 20000 WHERE first_name = ’NEENA’ DAVID SELECT first_name FROM hr.employee WHERE salary > 15000 13.10g的FGA可以做到只有同时访问组合列的时候才进行审计。例如使用了员工姓名和薪金的查询。为了实现这个审计,首先将AUDIT_COLUMN设为’SALARY,FIRST_NAME’,然后将AUDIT_COLUMN_OPTS设置为DBMS_FGA.ALL_COLUMNS,例如: SQL> BEGIN DBMS_FGA.ADD_POLICY( policy_name => ’AUD_EMPLOYEE_SAL_FN’, object_schema => ’HR’, object_name => ’EMPLOYEE’, audit_column => ’SALARY, FIRST_NAME’, statement_types => ’SELECT, UPDATE’, audit_column_opts => DBMS_FGA.ALL_COLUMNS, audit_trail => DBMS_FGA.DB); END; SQL> / PL/SQL procedure successfully completed. 14.统一的审计线索(审计跟踪,Audit Trail) Oracle 10g在标准审计和详细审计中跟踪记录的列是相同的。数据库审计线索(audit trail)AUD$是SYS方案的一个专门的表。FGA的审计线索名叫FGA_LOG$。当初始化参数AUDIT_TRAIL设置为DB_EXTENDED时,用户运行SQL语句的具体形式以及SQL中附带的变量会被收集到审计线索中。 15.带审计信息的DBA字典 1)DBA_AUDIT_TRAIL:显示标准审计的全部审计跟踪记录 2)DBA_AUDIT_EXISTS:显示由AUDIT EXISTS和AUDIT NOT EXISTS生成的审计跟踪记录 3)DBA_AUDIT_OBJECT:显示数据库中所有对象的审计跟踪(DML和DDL) 4)DBA_AUDIT_SESSION:显示会话连接和断开连接的审计跟踪(AUDIT SESSION) 5)DBA_AUDIT_STATEMNET:显示语句GRANT、REVOKE、AUDIT、NOAUDIT和ALTER SYSTEM的审计跟踪记录 6)DBA_OBJ_AUDIT_OPTIONS:指出数据库中所审计的对象的审计选项 7)DBA_FGA_AUDIT_TRAIL:显示详细审计的全部审计跟踪记录 8)DBA_AUDIT_POLICY:显示FGA的审计策略 9)DBA_AUDIT_POLICY_COLUMNS:显示数据库中各策略的策略名称和列名 10)DBA_COMMON_AUDIT_TRAIL:显示标准审计与精细审计的审计记录。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/firefoxboy/archive/2008/10/02/3009891.aspx

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/450962/viewspace-1027917/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:布吉卡,转转请注明出处:http://www.cxybcw.com/194788.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code