欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle数据库审计用法实例

程序员文章站 2022-05-05 09:02:15
...

本节是从ORACLE METALINK的DOC:167293.1翻译整理而来的。通过举例的方式来说明ORACLE审计的用法。ORACLE的审计可以从语句级、对象

本节是从Oracle METALINK的DOC:167293.1翻译整理而来的。通过举例的方式来说明ORACLE审计的用法。

ORACLE的审计可以从语句级、对象级和权限级几个方面进行。同样的,SYSDBA和SYSOPER用户的行为也可以被审计(从ORACLE 9i Release 2,,9.2.0.1开始,SYS用户可以通过设置AUDIT_SYS_OPERATIONS参数来进行审计)。

1.对象级审计

可以被审计的对象包括表、视图、序列发生器、包、存储过程等。由于对象的依赖性问题,可能同一件事情可能会产生多条审计信息。比如说某个函数关联到某个视图,某个视图关联到某个表。

对象级审计只能针对整个数据库的用户而不能对于某个用户进行审计。要查看对象级审计具有哪些审计选项,可以查询ALL_DEF_AUDIT_OPTS视图。


SQL> connect system/manager

SQL> select * from all_def_audit_opts;


ALT AUD COM DEL GRAINDINS LOC REN SEL UPD REF EXE

--- --- --- --- --- --- --- --- --- --- --- --- ---

-/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/-


下面的例子是对SCOTT.EMP进行审计:

SQL> connect system/manager

SQL> audit select on SCOTT.emp by session;

查看审计信息是否被记录了:

SQL> col owner format a7

SQL> col object_name format a7

SQL>select * from dba_obj_audit_opts

where wner='SCOTT' and OBJECT_NAME='EMP';


OWNEROBJECT_ OBJECT_TY ALT AUD COM DEL GRAINDINS LOC REN SEL UPD REF EXE

----- ----- --------- --- --- --- --- --- --- --- --- --- --- --- --- ---

SCOTTEMPTABLE-/- -/- -/- -/- -/- -/- -/- -/- -/- S/S -/- -/- -/-

以下的语句可以生成一些审计信息:

SQL> connect scott/tiger

SQL> select * from emp;

SQL> connect TEST/TEST

SQL> select * from scott.emp;

ERROR at line 1:

ORA-00942: table or view does not exist

SQL> connect system/manager

SQL> select * from scott.emp;


审计结果


SQL> connect system/manager

SQL> col username format a8

SQL> col priv_used format 999

SQL> /


SQL>select username, priv_used, ses_actions from

dba_audit_object

where obj_name='EMP' and wner='SCOTT';


结果


USERNAMEPRIV_USEDSES_ACTIONS

------------------------------ ---------- -------------------

SCOTT---------S------

TEST

SYSTEMSELECT ANY ---------S------

2.从权限级进行审计

所有的系统权限都可以进行审计。从SYSTEM_PRIVILEGE_MAP中可查询到所有的系统权限。如果你要对一个不属于该视图中的权限进行审计,会出现错误:

SQL> audit drop snapshot by access;

audit drop snapshot by access

*

ERROR at line 1:

ORA-00956: missing or invalid auditing option


SQL> connect system/manager

SQL> select * from system_privilege_map;

PRIVILEGE NAME

---------- ----------------------------------------

-3 ALTER SYSTEM

-4 AUDIT SYSTEM

-5 CREATE SESSION

-6 ALTER SESSION

-7 RESTRICTED SESSION

-10 CREATE TABLESPACE

-11 ALTER TABLESPACE

-12 MANAGE TABLESPACE

-13 DROP TABLESPACE

.....

-167 GRANT ANY PRIVILEGE

-172 CREATE SNAPSHOT

-173 CREATE ANY SNAPSHOT

-174 ALTER ANY SNAPSHOT

-175 DROP ANY SNAPSHOT

-194 WRITEDOWN DBLOW

-195 READUP DBHIGH

-196 WRITEUP DBHIGH

-197 WRITEDOWN

-198 READUP

-199 WRITEUP

Oracle数据库审计用法实例