Oracle中开启一张表的审计

简介:

Oracle使用audit_trail参数控制审计是否启用

audit_trail的参数有下面几种:

NONE:不开启审计

OS:说明审计信息放在系统汇总,如果是Linux那么由audit_file_dest决定,如果是Windows 那么由事件查看器决定

DB  TRUE :表示审计信息存放在数据库里,也就是sys 用户的aud$ 表。

 

audit_sys_operations参数的含义:

false:不审计sys用户,默认不审计

true:审计sys用户


审计范围分为session 和 access两种

session:表示用户登录之后执行的相同SQL只记录一次,其他相同SQL不再记录;

access:表示每次执行的SQL都进行审计记录。


详细参考官方文档

http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm#CIHDICID

1、开启审计参数

1
2
3
4
5
6
7
8
9
10
SQL> show parameter audit
  
NAME                                         TYPE       VALUE
----------------------------------------------- ------------------------------
audit_file_dest                      string      /u01/app/oracle/admin/mydb/adump
audit_sys_operations                boolean   FALSE
audit_syslog_level                 string
audit_trail                                string     NONE
  
SQL>  alter  system setaudit_trail=db,extended scope=spfile;

2、重启数据库

静态参数,为了使参数生效,需要重启数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SQL> shutdown immediate;
Database  closed.
Database  dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
  
Total System  Global  Area  599785472 bytes
Fixed  Size               2085776 bytes
Variable  Size                 192941168 bytes
Database  Buffers      398458880 bytes
Redo Buffers                 6299648 bytes
Database  mounted.
Database  opened.
SQL> show parameter audit
  
NAME                                         TYPE       VALUE
----------------------------------------------- ------------------------------
audit_file_dest                      string      /u01/app/oracle/admin/mydb/adump
audit_sys_operations                    boolean   FALSE
audit_syslog_level                 string
audit_trail                                string     DB, EXTENDED

3、设置对表进行审计

这样每次有用户对表进行操作,那么都会有相应的记录被添加到aud$中,而Oracle为了方便读取数据,创建了视图。

虽然会记录每个用户对表的操作,但是不会记录sys用户的操作,其他所有用户都会做记录。

1
2
3
4
5
6
7
8
9
10
11
12
SQL> conn /  as  sysdba
Connected.
SQL> audit  all  on  zx.num_t  by  accesswhenever successful;
  
Audit succeeded.
  
SQL>  set  linesize 200
SQL>  select  from  dba_obj_audit_opts;
  
OWNER                             OBJECT_NAME                 OBJECT_TYPE      ALT  AUD   COM   DEL   GRA   IND  INS   LOC  REN   SEL   UPD  REF EXE   CRE   REA     WRI   FBK
------------------------------------------------------------ ----------------- ----- ----- ----- ----- ---------- ----- ----- ----- ----- ----- --- ----- ----- ----- ----- -----
ZX                              NUM_T                                TABLE             A/-   A/-  A/-   A/-   A/-   A/-  A/-   A/-   A/-   A/-   A/-  -/- -/-   -/-   -/-  -/-   A/-

前面列中

A表示access,每次被审计的操作都会记录,比如开启了scott.empselect审计,那么任何人select这张表都会触发一次审计,并且记录在aud$中。

S表示session,每个会话被审计的操作都记录一次。

使用不同用户对zx.num_t表做不同访问:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SQL> conn zx/zx
Connected.
SQL>  select  count (*)  from  zx.num_t;
  COUNT (*)
----------
           0
SQL>  insert  into  zx.num_t (id1) values (1);
1 row created.
SQL>  commit ;
Commit  complete.
SQL> conn scott/tiger
Connected.
SQL>  select  count (*)  from  zx.num_t;
  COUNT (*)
----------
           1
SQL>  delete  from  zx.num_t;
1 row deleted.
SQL>  commit ;
Commit  complete.
SQL>  insert  into  zx.num_t (id2) values (2);
1 row created.
SQL>  rollback ;
Rollback  complete.

4、查询审计记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
SQL>  alter  session setnls_date_format= 'yyyymmdd hh24:mi:ss' ;
  
Session altered.
  
SQL>  set  lines 200
col OS_USERNAME  for  a10
col USERNAME  for  a11
col USERHOST  for  a10
col TERMINAL  for  a10
col  TIMESTAMP  for  a20
col obj_name  for  a10
col OWNER  for  a10
col ACTION_NAME  for  a11
col TRANSACTIONID  for  a16
col sql_text  for  a50
SELECT  USERNAME,
       USERHOST,
       TIMESTAMP ,
       OWNER,
       OBJ_NAME,
       ACTION_NAME,
       SQL_TEXT
  FROM  DBA_AUDIT_TRAIL
  WHERE  OBJ_NAME= 'NUM_T'
  ORDER  BY  TIMESTAMP ;
  
USERNAME   USERHOST    TIMESTAMP      OWNER      OBJ_NAME   ACTION_NAME SQL_TEXT
----------- ---------- ------------------------------ ---------- -------------------------------------------------------------
ZX         rhel5     20161107 11:57:55    ZX       NUM_T        NOAUDIT OBJ noaudit  all  on  num_t
                                                                              ECT
  
ZX         rhel5     20161107 12:00:07    ZX        NUM_T         SELECT      select  count (*)  from  zx.num_t
ZX         rhel5     20161107 12:00:21    ZX       NUM_T         INSERT      insert  into  zx.num_t (id1)  values (1)
SCOTT          rhel5     20161107 12:00:37    ZX       NUM_T         SELECT      select  count (*)  from  zx.num_t
SCOTT          rhel5     20161107 12:00:45    ZX       NUM_T         DELETE      delete  from  zx.num_t
SCOTT          rhel5     20161107 12:01:27    ZX       NUM_T        INSERT      insert  into  zx.num_t (id2)  values (2)
  
rows  selected.

5、取消审计

1
2
SQL> noaudit  all  on  num_t;
Noaudit succeeded.

6、清空aud$

这张系统表是可以使用TRUNCATE命令截断的。把它删掉之后那么视图中的记录也就相应消失了。

1
2
3
4
SQL>  truncate  table  aud$;
SQL>  SELECT  FROM  DBA_FGA_AUDIT_TRAIL;
  
no  rows  selected

 

更多详细信息参考官方文档

http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm#BABCFIHB

 




      本文转自hbxztc 51CTO博客,原文链接:http://blog.51cto.com/hbxztc/1870181,如需转载请自行联系原作者




相关文章
|
存储 SQL Oracle
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
133 0
|
7月前
|
Oracle 关系型数据库 数据库
Oracle查询优化-复制表的定义及数据
【1月更文挑战第5天】【1月更文挑战第14篇】在Oracle数据库中,复制表定义和复制表数据是两个常见的操作。
112 1
|
7月前
|
消息中间件 关系型数据库 Kafka
实时计算 Flink版产品使用合集之oracle cdc 抽取新增一张表 可以从savepoint恢复吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用问题之oracle无主键的表支持同步吗如何实现
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
运维 DataWorks Oracle
DataWorks产品使用合集之在标准模式下,当同步Oracle的表或视图时,是否需要在源端的测试和生产环境中都存在要同步的表或视图
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
47 3
|
7月前
|
资源调度 Oracle 关系型数据库
实时计算 Flink版产品使用合集之同步Oracle数据时,一张表产生了大量的连接数,如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
7月前
|
SQL 存储 Oracle
Oracle中的Dual表:数据世界的“神奇小盒子”
【4月更文挑战第19天】Oracle的Dual表是一个虚拟表,仅含一行一列,常用于执行SQL函数、数据类型转换、测试语句和动态SQL。它是测试和便捷操作的工具,如获取当前日期(`SELECT SYSDATE FROM DUAL`)、数字转字符串(`SELECT TO_CHAR(12345) FROM DUAL`)。在存储过程、函数和触发器中也发挥重要作用,是数据库管理员的得力助手。
|
7月前
|
存储 Oracle 关系型数据库
Oracle系列之七:表的创建与管理
Oracle系列之七:表的创建与管理
|
Oracle 关系型数据库
Oracle - 表操作语句
Oracle - 表操作语句
45 0
|
Oracle 关系型数据库 数据库
Oracle数据库 查询所有表
Oracle数据库 查询所有表
180 1

推荐镜像

更多