zoukankan      html  css  js  c++  java
  • 记录一则FGA审计“A用户对B用户某张表的更新操作”需求

    环境:Oracle 11.2.0.4
    我这里测试A用户为JINGYU,要审计的表为B用户SCOTT下的EMP表。通过FGA来实现。

    1.添加审计策略

    官方文档语法:

    DBMS_FGA.ADD_POLICY(
    object_schema VARCHAR2,
    object_name VARCHAR2,
    policy_name VARCHAR2,
    audit_condition VARCHAR2,
    audit_column VARCHAR2,
    handler_schema VARCHAR2,
    handler_module VARCHAR2,
    enable BOOLEAN,
    statement_types VARCHAR2,
    audit_trail BINARY_INTEGER IN DEFAULT,
    audit_column_opts BINARY_INTEGER IN DEFAULT);

    添加审计策略,目标是审计JINGYU用户有更新SCOTT用户下EMP表的操作。

    --审计JINGYU用户有更新SCOTT用户下EMP表的操作
    BEGIN
    dbms_fga.add_policy(
    object_schema => 'SCOTT',
    object_name => 'EMP',
    policy_name => 'FGA_TEST_01',
    audit_condition => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''JINGYU'' ',
    statement_types    =>  'UPDATE');
    END;
    /
    

    这里主要是audit_condition的写法,有一个SYS_CONTEXT('USERENV','SESSION_USER')写法:

    select * from dual where SYS_CONTEXT('USERENV','SESSION_USER') = 'JINGYU';
    

    测试一下,证明这样写where条件是有效的:

    SQL> show user
    USER is "JINGYU"
    SQL> select * from dual where SYS_CONTEXT('USERENV','SESSION_USER') = 'JINGYU';
    
    D
    -
    X
    
    SQL> conn ludan
    Enter password: 
    Connected.
    SQL> show user
    USER is "LUDAN"
    SQL>  select * from dual where SYS_CONTEXT('USERENV','SESSION_USER') = 'JINGYU';
    
    no rows selected
    
    SQL> 
    

    2.测试审计效果

    查询FGA_LOG$,确认审计效果:
    select * from FGA_LOG$ where OBJ$NAME = 'EMP';
    

    测试审计效果:

    • 使用JINGYU用户更新SCOTT.EMP下的一条记录;预期结果是有审计信息生成。
    • 使用LUDAN用户更新SCOTT.EMP下的一条记录;预期结果是无审计信息生成。

    3.控制审计策略

    **3.1 禁用/启用审计策略** 官方文档语法:

    --禁用审计策略
    DBMS_FGA.DISABLE_POLICY(
    object_schema VARCHAR2,
    object_name VARCHAR2,
    policy_name VARCHAR2 );
    --启用审计策略
    DBMS_FGA.ENABLE_POLICY(
    object_schema VARCHAR2,
    object_name VARCHAR2,
    policy_name VARCHAR2,
    enable BOOLEAN);

    --禁用审计策略
    BEGIN
    DBMS_FGA.DISABLE_POLICY (
    object_schema   =>  'scott',
    object_name     =>  'emp',
    policy_name     =>  'FGA_TEST_01');
    END;
    /
    
    --启用审计策略
    BEGIN
    DBMS_FGA.ENABLE_POLICY (
    object_schema    =>  'SCOTT',
    object_name      =>  'EMP',
    policy_name      =>  'FGA_TEST_01',
    enable           =>   TRUE);
    END;
    /
    

    3.2 删除审计策略
    官方文档语法:

    DBMS_FGA.DROP_POLICY(
    object_schema VARCHAR2,
    object_name VARCHAR2,
    policy_name VARCHAR2 );

    --删除policy
    BEGIN
    DBMS_FGA.DROP_POLICY(
       object_schema  => 'SCOTT',
       object_name => 'EMP',
       policy_name => 'FGA_TEST_01');
    END;
    /
    
  • 相关阅读:
    377 TODOMVC:准备工作,配置 vue,列表渲染,添加任务,删除任务,编辑任务 ,Footer 的显示与隐藏
    376 vue指令:v-model (常用),v-text 和 v-html,v-bind (常用),操作样式,v-on,v-for,v-pre,v-once,v-cloak
    375 vue数据双向绑定演示:一个 input + v-model,Object.defineProperty,数据双向绑定的原理简单实现
    374 vue起步
    373 Vue 介绍,框架和库的区别 ,MVC + MVVM
    实现一个vue-router插件
    浅谈react context
    Flutter网络请求与JSON解析
    Vue中组件
    vue数据监听
  • 原文地址:https://www.cnblogs.com/jyzhao/p/9169205.html
Copyright © 2011-2022 走看看