Oracle数据库审计功能使用简介

Oracle审计功能

查看审计功能是否开启

1、登陆Oracle数据库

[kalami@kylin ~]$ sqlplus sys/root123 as sysdba;

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Sep 8 09:52:33 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> 

或者

su - oracle
sqlplus "/as sysdba"
[kalami@kylin ~]$ su oracle
Password: 
[oracle@kylin kalami]$ sqlplus "/as sysdba"

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Sep 8 11:44:52 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> 

2、查询审计参数

SQL> show parameter audit;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest 		 string	 /u01/app/oracle/admin/oradb/adump
audit_sys_operations     boolean	 TRUE
audit_syslog_level		 string
audit_trail			     string	 DB
unified_audit_common_systemlog	 string
unified_audit_sga_queue_size	 integer	 1048576
unified_audit_systemlog 	     string
SQL>

3、审计参数说明

  • audit_sys_operations :audit_sys_operations设置成true后,那么做为sysdbasysoper连接数据库的用户所发布的每条语句都会被写入操作系统的审计中,从而能够给出DBA所进行操作的完整记录。

  • 如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。audit_file_dest参数指定的审计信息的目录中。

  • audit_trail : None是Oracle10g默认值,不做审计;Oracle11g默认值DB,将审计结果记录到aud$表中;audit_trail 参数含义如下:

    【db】:启用审计,并且把审计结果放到数据库的sys.aud$表中,审计结果只有连接信息;
    【true】:表示开启;
    【os】:启用审计,并且把审计结果存放在操作系统的数据信息中(若是windows 平台,audit trail会记录在windows的事件管理器中,若是linux/unix平台则会记录在audit_file_dest参数指定文件中;
    【db_extended】:启用审计,把审计结果存放在数据库的sys.aud$表中,并且在clob列的sqlbind和sqltext字段记录额外的信息(与db大致相同,但审核结果包含了具有绑定变量的SQL语句);
    【xml】:启用审计,以xml格式写所有的审计记录;
    【extended】:启用审计,在审计跟踪中记录所有列,包括sqltext和sqlbing值;
    【none/false】:表示不开启,禁用审计。
    

开启审计功能

sysdba/sysoper 角色登陆数据库。

[kalami@kylin ~]$ sqlplus sys/root123 as sysdba;

或者
[kalami@kylin ~]$ su - oracle
[oracle@kylin oracle]$ sqlplus "/as sysdba"
SQL> alter system set audit_sys_operations=TRUE scope=spfile;
SQL> alter system set audit_trail=db,extended scope=spfile;

重启实例:

SQL> shutdown immediate;
SQL> startup;

关闭审计功能

sysdba/sysoper 角色登陆数据库。

[kalami@kylin ~]$ sqlplus sys/root123 as sysdba;

或者
[kalami@kylin ~]$ su - oracle
[oracle@kylin oracle]$ sqlplus "/as sysdba"
SQL> conn /as sysdba;
SQL> alter system set audit_trail=none scope=spfile;
SQL> alter system set audit_sys_operations=FALSE scope=spfile;

重启实例:

SQL> shutdown immediate;
SQL> startup;

Oracle审计日志

查看审计参数

[oracle@kylin ~]$ whoami
oracle
[oracle@kylin ~]$ 
[oracle@kylin ~]$ sqlplus "/as sysdba"

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Sep 8 14:05:20 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> show parameter audit;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest 		 string	 /u01/app/oracle/admin/oradb/adump
audit_sys_operations     boolean	 TRUE
audit_syslog_level		 string
audit_trail			     string	 DB, EXTENDED
unified_audit_common_systemlog	     string
unified_audit_sga_queue_size	     integer	 1048576
unified_audit_systemlog 	     string
SQL> 

audit_sys_operations审计SYSDBA的活动。默认值是false。相关的审计信息不会记录在aud$中,因为有可能此时数据库还未启动,只能记录在操作系统层面的文件中。默认为false,不意味着没有审计信息,像conn / as sysdba这样的操作仍然会被记录。audit_file_dest参数指定的审计信息的文件夹。

audit_sys_operations设置成true后,那么做为sysdbasysoper连接数据库的用户所发布的每条语句都会被写入操作系统的审计中,从而能够给出DBA所进行操作的完整记录。

查看对DBA的审计记录

进入到 audit_file_dest 指定的目录,然后查看相关审计记录文件。

root@kylin adump]# pwd
/u01/app/oracle/admin/oradb/adump
[root@kylin adump]# 
[root@kylin adump]# ls
oradb_m002_30990_20220908140539016073458143.aud  
oradb_ora_29196_20220908134033692428347545.aud  
oradb_ora_30750_20220908135529174856587112.aud
oradb_ora_29081_20220908134004444235989131.aud   
oradb_ora_30644_20220908135507944215277692.aud 
[root@kylin adump]# 
[root@kylin adump]# cat oradb_ora_30750_20220908135529174856587112.aud | grep -i action
ACTION :[7] 'CONNECT'
ACTION NUMBER:[3] '100'
ACTION :[19] 'ALTER DATABASE OPEN'
ACTION NUMBER:[2] '35'
ACTION :[22] 'select * from sys.aud$'
ACTION NUMBER:[1] '3'
[root@kylin adump]# 

这个文件中记录着Oracle管理员的操作记录。

Oracle对特定用户的审计追踪

比如,对 testuser 进行审计追踪,详细记录 testuser 用户他登录的细节是什么,他改变了哪些对象,它们的原始值是什么,执行的SQL语句,执行了哪些过程/函数等。

1、首先,需要通过设置audit_trail参数在数据库中启用审计

SQL> alter system set audit_trail='OS|DB|DB,EXTENDED|XML|XML, EXTENDED';

2、然后,添加审核内容

SQL> AUDIT ALL BY testuser BY ACCESS;
SQL> AUDIT SELECT TABLE, UPDATE TABLE, INSERT TABLE, DELETE TABLE BY username BY ACCESS;
SQL> AUDIT EXECUTE PROCEDURE BY testuser BY ACCESS;

3、重启Oracle实例

SQL> shutdown immediate;
SQL> startup;

查看审计日志

前提是 audit_trail=DB 类型。

查询目前的日志信息:select * FROM SYS.AUD$;

删除已有的审计信息:DELETE FROM SYS.AUD$;

或者快速删除表信息:truncate table  SYS.AUD$;

查询特定字段:

select * from sys.aud$;
select USERID, USERHOST, TERMINAL, OBJ$CREATOR, NTIMESTAMP#, PROCESS#, SQLTEXT from sys.aud$;
 select USERID, USERHOST, TERMINAL, OBJ$CREATOR, NTIMESTAMP#, PROCESS#, SQLTEXT from sys.aud$ where OBJ$CREATOR='DBUSER';

在这里插入图片描述

在这里插入图片描述

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值