博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记录一则FGA审计“A用户对B用户某张表的更新操作”需求
阅读量:6906 次
发布时间:2019-06-27

本文共 2084 字,大约阅读时间需要 6 分钟。

环境: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表的操作BEGINdbms_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 userUSER is "JINGYU"SQL> select * from dual where SYS_CONTEXT('USERENV','SESSION_USER') = 'JINGYU';D-XSQL> conn ludanEnter password: Connected.SQL> show userUSER is "LUDAN"SQL>  select * from dual where SYS_CONTEXT('USERENV','SESSION_USER') = 'JINGYU';no rows selectedSQL>

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);

--禁用审计策略BEGINDBMS_FGA.DISABLE_POLICY (object_schema   =>  'scott',object_name     =>  'emp',policy_name     =>  'FGA_TEST_01');END;/--启用审计策略BEGINDBMS_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 );

--删除policyBEGINDBMS_FGA.DROP_POLICY(   object_schema  => 'SCOTT',   object_name => 'EMP',   policy_name => 'FGA_TEST_01');END;/

转载地址:http://lcgdl.baihongyu.com/

你可能感兴趣的文章
不以规矩不成方圆:Digital Ocean也删除了他们的数据库
查看>>
SharePoint 数据库迁移步骤
查看>>
中国电信开启2017年IP RAN设备集采:共两个标包
查看>>
解放智慧 智能家居对人到底是利还是弊
查看>>
安防物联网:海量分析技术仍是关键
查看>>
黄金法则:MySQL基准测试最佳实践
查看>>
Cisco reveals new initative
查看>>
Selenium2.0功能测试之forward与back
查看>>
微软扩大生态的又一步棋:推出 Visual Studio for Mac 预览版
查看>>
OA对于小微企业意味着什么?
查看>>
如何有效减少测试用例数目
查看>>
警惕!2016最大难题或源于云计算并发症
查看>>
亚信安全预警:一大波勒索软件变种来袭
查看>>
手机网民达7.8亿 移动网络安全不容忽视
查看>>
《算法基础》——3.4 有序链表
查看>>
《UNIX网络编程 卷2:进程间通信(第2版)》——2.3 创建与打开IPC通道
查看>>
商务直播跨海云:商务直播的那点事
查看>>
《MATLAB智能算法超级学习手册》一一第1章 MATLAB基础知识
查看>>
《Docker进阶与实战》——2.4节SparkContext概述
查看>>
《算法基础:打开算法之门》一导读
查看>>