阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle的审计(Auditing) 详解

194次阅读
没有评论

共计 4439 个字符,预计需要花费 12 分钟才能阅读完成。

审计(Audit)用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在 system 表空间中的 SYS.AUD$ 表中,可通过视图 dba_audit_trail 查看)或操作系统审计记录中(audit_file_dest 参数决定)。默认情况下审计是没有开启的。

1、审计的类型有四种:

  • Statement Auditing(语句审计):在语句级别进行审计,如审计执行 SELECT TABLE 的语句,而不针对某一单独的对象。

  • Privilege Auditing(权限审计):审计某一系统权限的使用情况,如果审计在创建表时用到的 CREATE ANY TABLE 权限。

  • Schema Object Auditing(对象审计):审计对指定对象上的操作,如审计对表 scott.emp 的 INSERT 操作。

  • Fine-Grained Auditing(细粒度审计):用于指定更细粒度的审计,用 DBMS_FGA 包来实现。

2、相关参数:

AUDIT_TRAIL 参数

这参数决定数据库审计的开启和关闭。可以被赋与如下值

  • DB,启用数据库审计,并把审计记录记录到数据库中的 SYS.AUD$

  • XML,启用数据库审计,并把审计记录在文件系统以 XML 文件的开始存放

  • DB,EXTENDED,具有与 DB 一样的功能,并在必要时在 SYS.AUD$ 中记录 SQL bind and SQL text CLOB-type columns。

  • XML,EXTENDED,具有与 XML 一样的功能,并在可用时在 XML 文件中记录 SQL bind and SQL text CLOB-type columns。

  • OS,启用数据库审计,并把审计记录记录到操作系统的文件中。

  • NONE,不启用数据库审计,默认值。

AUDIT_FILE_DEST 参数

如果 AUDIT_TRAIL=OS,则审计记录的文件,存放在 AUDIT_FILE_DEST 指定的目录中。

AUDIT_SYS_OPERATIONS 参数

指定是否启用对 SYS 用户的审计。默认为 FALSE,启用设置为 TRUE。记录不存放在 AUD$ 中,而是记录在其它地方。如果是 windows 平台,audti trail 会记录在 windows 的事件管理中,如果是 linux/unix 平台则会记录在 audit_file_dest 参数指定的文件中。

3、启用和停用数据库审计

使用 ALTER SYSTEM 语句设置 AUDIT_TRAIL 参数,这个参数不可在线修改,修改后需重库数据库实例生效。例句如下:

ALTER SYSTEM SET AUDIT_TRAIL=DB,EXTENDED SCOPE=SPFILE;

停用数据库审计使用如下语句,重启数据库生效

ALTER SYSTEM SET AUDIT_TRAIL=NONE SCOPE=SPFILE;

4、启用和停止审计功能的语法:

1)启用审计使用 AUDIT 语句

Oracle 的审计 (Auditing) 详解

2)停止审计功能

要停用审计功能把上面的 AUDIT 改为 NOAUDIT。

在启用审计功能前,必须先设置 AUDIT_TRAIL 参数为非 NONE,否则数据库不会进行审计。

5、使用审计功能的示例

启用数据库审计

sys@TEST>alter system set audit_trail=DB scope=spfile;
  
System altered.

1)Statement Auditing(语句审计)

审计由 SCOTT 用户发出的所有 SELECT TABLE

sys@TEST>audit select table by scott;
  
Audit succeeded.
  
sys@TEST>select from dba_stmt_audit_opts;
  
USER_NAME             PROXY_NAME              AUDIT_OPTION             SUCCESS              FAILURE
------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------
SCOTT                                SELECT TABLE           BY SESSION          BY SESSION
  
scott@TEST>select count(*) from emp;
  
  COUNT(*)
----------
    14
      
sys@TEST>select timestamp,sql_text from dba_audit_trail;
  
TIMESTAMP      SQL_TEXT
------------------- --------------------------------------------------------------------------------
2017-04-24 23:07:47 select count(*) from emp

2)Privilege Auditing(权限审计)

审计所有系统权限

sys@TEST>audit all privileges;
  
Audit succeeded.
  
sys@TEST>select from dba_priv_audit_opts;
  
USER_NAME             PROXY_NAME              PRIVILEGE           SUCCESS              FAILURE
------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------
                                  FLASHBACK ARCHIVE ADMINISTER   BY ACCESS              BY ACCESS
                                  CREATE SESSION                 BY ACCESS            BY ACCESS
......
  
[Oracle@rhel6 ~]$ sqlplus scott/tiger
......
sys@TEST>select username,timestamp,priv_used from dba_audit_trail where priv_used is not null;
  
USERNAME               TIMESTAMP    PRIV_USED
------------------------------ ------------------- ------------------------------------------------------------------------------------------------------------------------
SCOTT                 2017-04-24 23:18:02 CREATE SESSION

3)Schema Object Auditing(对象审计)

审计对 SCOTT.EMP 表的 select 操作

sys@TEST>audit select on scott.emp;
  
Audit succeeded.
  
sys@TEST>select from dba_obj_audit_opts;
  
OWNER     OBJECT_NAM OBJECT_TYPE           ALT   AUD   COM   DEL   GRA   IND     INS   LOC   REN   SEL     UPD   REF   EXE   CRE     REA   WRI   FBK
---------- ---------- ------------------------------ ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
SCOTT     EMP        TABLE               -/-   -/-   -/-   -/-   -/-   -/-     -/-   -/-   -/-   S/S     -/-   -/-   -/-   -/-     -/-   -/-   -/-
  
scott@TEST>select ename from emp;
  
ENAME
------------------------------
SMITH
ALLEN
......
  
sys@TEST>select timestamp,sql_text from dba_audit_trail;
  
TIMESTAMP      SQL_TEXT
------------------- --------------------------------------------------------------------------------
2017-04-24 23:24:28 select ename from emp

AUD$ 位于 SYSTEM 表空间,基于 Oracle 的稳定性及性能考虑,可以将审计相关的表移动到其他表空间。

alter table audit$ move tablespace <tablespace_name>;
alter index i_audit rebuild online tablespace <tablespace_name>;
alter table audit_actions move tablespace <tablespace_name>;
alter index i_audit_actions rebuild online tablespace <tablespace_name>;

官方文档:http://docs.oracle.com/cd/B19306_01/network.102/b14266/auditing.htm#CHDJBDHJ

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

http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4007.htm#i2059073

更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-04/143183.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4439字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中