1.Audit的概念
Audit是监视和记录用户对数据库进行的操作,以供DBA进行问题分析。利用Audit功能,可以完成以下任务:
- 监视和收集特定数据库活动的数据。例如管理员能够审计哪些表被更新,在某个时间点上有多少个并行用户统计数据;
- 保证用户对自己的活动负责。这些活动包括在特定模式、特定表、特定行等对象上进行的操作;
- 审计数据库中的可疑活动。如一个未经授权的用户正从表中删除数据,那么数据库管理员必须审计所有数据库连接,以及在数据库中所有成功和失败的删除操作。
根据审计类型不同,审计记录中的信息也有所不同。通常,一条审计记录中包含用户名、会话标识、终端标识、所操作的模式对象名称、执行的操作、执行的完整语句代码、日期和时间戳、所使用的系统权限。
2.Audit的分类
在Oracle 11g中,一共有4种审计类型:
- 语句审计(Statement Auditing):对特定的SQL语句进行审计,不指定具体对象;
- 权限审计(Privilege Auditing):对特定的系统权限使用情况进行审计;
- 对象审计(Object Auditing):对特定的模式对象上执行的特定语句进行审计;
- 网络审计(Network Auditing):对网络协议错误与网络层内部错误进行审计。
此外,根据用户是否成功执行,可以分为对执行成功的语句进行审计、对不成功的语句进行审计、无论成功与否都进行审计。
根据对同一个语句审计次数不同,可以分为会话审计和存取审计。会话审计是指对某个用户或所有用户的同一语句只审计一次,形成一条审计记录;存取审计是指对某个用户或所有用户的同一语句每执行一次审计一次,形成多条审计记录。
3.审计环境设置
使用审计功能,需要对数据库初始化参数AUDIT_TRAIL进行设置,其参数值可以为:
- none:不启用审计功能;
- db:启用审计功能,审计信息写入sys.aud$数据字典中,审计的结果只有连接信息(sys用户的记录以及强制性要求的记录都写入操作系统文件中);
- db_extended:审计结果除了有连接信息,还有执行的具体语句。
- os:启用审计功能,审计信息写入操作系统文件;
- xml:启用审计功能,审计信息写入xml格式的操作系统文件中;
查看是否启用了审计功能:
SQL> show parameter audit_trail NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ audit_trail string DB
修改审计环境参数:
SQL> alter system set audit_trail = 'DB_EXTENDED' scope = spfile; System altered. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 3741306880 bytes Fixed Size 2258800 bytes Variable Size 1241516176 bytes Database Buffers 2483027968 bytes Redo Buffers 14503936 bytes Database mounted.
参考:https://www.linuxidc.com/Linux/2017-10/147360.htm