审计原则
审计原则
通过首先确定审计要求,然后设置可以满足这些要求的最少审计选项来限定审计。要尽可能使用对象审计来减少生成的条目。如果必须使用语句或权限审计,则下列设置可以让审计生成的内容减至最少:
指定要审计的用户
按会话审计,而不是按访问审计
审计成功或失败,但不要既成功又失败
注:审计记录可以写入 SYS.AUD$ 或操作系统的审计线索。能否使用操作系统的审计线索要取决于操作系统。
监视审计线索的增长:
如果审计线索已满,则不能再插入任何审计记录,并且审计过的语句不能成功执行。发布已审计语句的所有用户都将收到错误消息。您必须先释放审计线索中的一些空间,而后才能执行这些语句。
要确保审计线索不会增长太快,应注意以下要求:
只有需要时才启用审计。
选择特定的审计选项。
严格控制方案对象审计。用户可以对自己拥有的对象打开审计。
尽量避免授予 AUDIT ANY 权限,因为它还能让用户打开审计。
定期使用 DELETE 或 TRUNCATE 命令删除审计线索中的审计记录。审计文件位于 $ORACLE_HOME/rdbms/audit 目录中。
保护审计线索:
应保护审计线索,以防添加、修改或删除审计信息。发出以下命令:
SQL> AUDIT delete ON sys.aud$ BY ACCESS;
可防止审计线索未经授权即被删除;只有 DBA 才拥有 DELETE_CATALOG_ROLE 角色。
将审计线索移到系统表空间外:
随着新记录插入数据库审计线索,表 AUD$ 将无限增长。尽管不应丢弃 AUD$ 表,但是可以从中删除或截断信息,因为其中的行只是为了提供信息,对于运行 Oracle 例程并不是必需的。由于 AUD$ 表在增长后又会收缩,所以应将其存储在系统表空间之外。
若要将 AUD$ 移至 AUDIT_TAB 表空间,则:
确保审计当前是禁用的。
输入以下命令:
SQL> ALTER TABLE aud$ MOVE TABLESPACE AUDIT_TAB;
输入以下命令:
SQL> CREATE INDEX i_aud1 ON aud$(sessionid, ses$tid)
2 TABLESPACE AUDIT_IDX;
对例程启用审计。
语句审计: audit table;
权限审计: audit create any trigger;
方案对象(实体)审计: audit select on scott.emp;
能用方案对象审计的就不要用权限审计,能用权限审计的就不要用语句审计。
审计条件可以指定是那种:by session / by access (只审计整个会话中最后一条语句/对整个会话的所有语句审计)
audit select on scott.emp by access;
获取审计信息:
select * from aud$;
show parameter from audit_trail
实验:
----------------------------------------------------------
C:\>sqlplus
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 12月 17 20:05:46 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
请输入用户名: sys/oracle as sysdba
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select * from aud$;
未选定行
SQL> show parameter from audit_trail
(找到 C:\oracle\product\10.2.0\db_1\database\initorcl.ora 打开添加: *.audit_trail=true)
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 293601280 bytes
Fixed Size 1248624 bytes
Variable Size 109052560 bytes
Database Buffers 180355072 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
数据库已经打开。
SQL> audit select on scott.emp by access;
审计已成功。
SQL> conn scott/tiger
已连接。
SQL> select empno,ename from emp where empno=7369;
EMPNO ENAME
---------- ----------
7369 SMITH
SQL> /
EMPNO ENAME
---------- ----------
7369 SMITH
SQL> conn sys/oracle as sysdba
已连接。
SQL> desc aud$;
SQL> select count(*) from aud$;
COUNT(*)
----------
2
SQL> select count(*) from aud$;
COUNT(*)
----------
2
SQL> noaudit select on scott.emp;
审计未成功。
SQL> conn scott/tiger
已连接。
SQL> select empno,ename from emp where empno=7369;
EMPNO ENAME
---------- ----------
7369 SMITH
SQL> /
EMPNO ENAME
---------- ----------
7369 SMITH
SQL> conn sys/oracle as sysdba
已连接。
SQL> select SESSIONID,OBJ$NAME,USERHOST from aud$;
未选定行
SQL> select count(*) from aud$;
COUNT(*)
----------
0
(关闭审计成功)
-------------------------
《完》
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21021875/viewspace-622739/ ,如需转载,请注明出处,否则将追究法律责任。