首页 > 数据库 >oracle 审计

oracle 审计

时间:2023-02-16 15:47:46浏览次数:40  
标签:审计 audit trail tablespace SQL oracle table

1.为什么要开启数据库审计

        

   无论安全策略多么完善,总是有不足之处,我们可以监视用户的权限使用以及跟踪通过这些权限进行的实际操作,可以操作的最终端就是数据库管理员。
具有sysdba权限的任何人都可以在数据库内进行操作,为了使数据库管理员不滥用权限,有必要审核所有的sysdba活动,对于普通用户,数据库管理员也要跟踪他们的操作。

除了SYSADBA审核之外,oracle还提供了

数据库审计:能够耿总特定权限的使用、特定命令的执行、对特定表的访问以及登录尝试。

基于值的审计:在插入、更新或删除记录时候,就会运行毅哥包括记录事务全部细节的PL/SQL代码块

细颗粒度审计:允许根据所访问的记录(或者记录的列)来跟踪对表的访问。与数据库审核或基于值的审核相比,细粒度更为精确,并且可以将生成的审核记录范围限制为感兴趣的审核记录。

提示:任何一种审核都会增加数据库必须完成的工作量,为了限制必须工作量,应当进行重点审核,同时不跟踪不重要的事情。

2.审计是否安装

SQLPLUS> connect / AS SYSDBA
SQLPLUS> select * from sys.aud$; --没有记录返回
SQLPLUS> select * from dba_audit_trail; - 没有记录返回

如果做上述查询的时候发现表不存在,说明审计相关的表还没有安装,需要安装, 安装后要重启数据库

SQLPLUS> connect / as sysdba
SQLPLUS> @$ORACLE_HOME/rdbms/admin/cataudit.sql

 

3.审计表空间迁移

SQL>connect / as sysdba;
SQL> alter table aud$ move tablespace new_tablespace;
SQL> alter index I_aud1 rebuild online tablespace new_tablespace;
SQL> alter table audit$ move tablespace new_tablespace;
SQL> alter index i_audit rebuild online tablespace new_tablespace;
SQL> alter table audit_actions move tablespace new_tablespace;
SQL> alter index i_audit_actions rebuild online tablespace new_tablespace;

 

4.审计参数

audit_sys_operations

这个参数控制是否对sysdba进行审计,sysdba审计结果linux放在audit_file_dest目录,windows 存放在app

lications log中

audit_trail

Values
none
禁用审计、如果什么都不填写默认缺省为 db
os
直接写入操作系统中,也就是上边提到的windown app 和linux 中dest_files
db
默认写入表SYS.AUD$中,但总是写入os中
db, extended
Performs all actions of AUDIT_TRAIL=db, and also populates the SQL bind and SQL text CLOB-type columns of the SYS.AUD$ table, when available. These two columns are populated only when this parameter is specified. When standard auditing is used with DB, EXTENDED, then virtual private database (VPD) predicates and policy names are also populated in the SYS.AUD$ table.
If the database was started in read-only mode with AUDIT_TRAIL set to db, extended, then Oracle Database internally sets AUDIT_TRAIL to os. Check the alert log for details.
xml
以XML格式写入os
xml, extended
执行 AUDIT_TRAIL=xml 的所有操作,并在审核跟踪中包含 SQL 文本和 SQL 绑定信息。

注:这两个参数是static参数,需要重新启动数据库才能生效

11g和19c参数设定值可能略有不同

5.审计级别

当开启审计功能后,可在三个级别对数据库进行审计:Statement(语句)、Privilege(权限)、object(对象)。

Statement:


按语句来审计,比如audit table 会审计数据库中所有的create table,drop table,truncate table语句,alter session by cmy会审计cmy用户所有的数据库连接。

Privilege:


按权限来审计,当用户使用了该权限则被审计,如执行grant select any table to a,当执行了audit select any table语句后,当用户a 访问了用户b的表时(如select * from b.t)会用到select any table权限,故会被审计。注意用户是自己表的所有者,所以用户访问自己的表不会被审计。

Object:


按对象审计,只审计on关键字指定对象的相关操作,如aduit alter,delete,drop,insert on cmy.t by scott; 这里会对cmy用户的t表进行审计,但同时使用了by子句,所以只会对scott用户发起的操作进行审计。

注意Oracle没有提供对schema中所有对象的审计功能,只能一个一个对象审计,对于后面创建的对象,Oracle则提供on default子句来实现自动审计,比如执行audit drop on default by access;后, 对于随后创建的对象的drop操作都会审计。但这个default会对之后创建的所有数据库对象有效,似乎没办法指定只对某个用户创建的对象有效,想比trigger可以对schema的DDL进行“审计”,这个功能稍显不足。

6.制定审计选项

by access 每一个被审计的操作都会生成一条audit trail。

by session 一个会话里面同类型的操作只会生成一条audit trail,默认为by session。

whenever successful 操作成功(dba_audit_trail中returncode字段为0) 才审计,

whenever not successful 反之。省略该子句的话,不管操作成功与否都会审计。

7.审计相关视图

dba_audit_trail:保存所有的audit trail,实际上它只是一个基于aud$的视图。其它的视图dba_audit_session,dba_audit_object, dba_audit_statement都只是dba_audit_trail的一个子集。

dba_stmt_audit_opts:可以用来查看statement审计级别的audit options,即数据库设置过哪些statement级别的审计。dba_obj_audit_opts,dba_priv_audit_opts视图功能与之类似

all_def_audit_opts:用来查看数据库用on default子句设置了哪些默认对象审计。

8.日常使用的审计

开启审计

audit_sys_operations boolean TRUE
audit_trail string DB

关闭审计

audit_trail  none

表操作审计

设置审计内容
audit all by lyj by access;
audit select table, update table, insert table, delete table by lyj by access;
audit execute procedure by lyj by access;

AUDIT DELETE ANY TABLE; --审计删除表的操作

AUDIT DELETE ANY TABLE WHENEVER NOT SUCCESSFUL; --只审计删除失败的情况

AUDIT DELETE ANY TABLE WHENEVER SUCCESSFUL; --只审计删除成功的情况

AUDIT DELETE,UPDATE,INSERT ON user.table by SYSTEM; --审计SYSTEM用户对表user.table的delete,update,insert操作

如果在命令后面添加by user则只对user的操作进行审计,如果省去by用户,则对系统中所有的用户进行审计(不包含sys用户).

noaudit all on t_test; 撤销审计

truncate table aud$; 清空审计表内容

对用户的审计

audit create session by access whenever not successful;

audit connect by access whenever not susuccessful;

 

标签:审计,audit,trail,tablespace,SQL,oracle,table
From: https://www.cnblogs.com/dbahrz/p/17126988.html

相关文章