1. Oracle审计信息存储位置
在数据库中(表AUD$);
操作系统文件中;
2. Oracle审计信息包含的内容
当审计信息存储在数据库时,审计信息内容取决于审计事件和审计选项,以下内容一定会存在审计信息中
操作系统登录用户名;
用户名;
会话标识;
终端表示;
对象的schema名;
执行的操作;
操作完成代码;
日期时间;
当审计信息存储在操作系统文件时,审计信息包含以下内容
由操作系统生成的审计记录;
数据库审计信息记录;
数据库审计活动;
管理员用户(SYS)的审计记录
存储在操作系统文件中的审计记录可能包含编码,可以通过查询Oracle数据字典获得详细信息
活动编码包含执行的操作信息,描述信息位于AUDIT_ACTIONS表中
权限信息包含了执行操作中使用的系统权限,描述信息位于SYSTEM_PRIVILEGE_MAP表中
操作完成信息包含了操作结构,成功返回0,否则返回Oracle错误代码,描述信息位于Oracle错误消息文档中
3. 默认的审计内容
无论是否打开审计,Oracle都在操作系统文件中记录以下信息
使用管理员(SYSDBA,SYSOPER)权限连接数据库
启动数据库
停止数据库
4. 审计管理员用户
可以在参数文件中设置参数 AUDIT_SYS_OPERATIONS = TRUE 来打开管理员用户的审计。当在参数文件中设置参数打开管理员审计时,Oracle将不加选择的记录使用SYSDBA或SYSOPER身份登录的所有操作。例如:
打开审计执行以下操作时
CONNECT / AS SYSDBA;
ALTER SYSTEM FLUSH SHARED_POOL;
UPDATE salary SET base=1000 WHERE name='myname';
操作系统文件中将会记录以下内容
Thu Jan 24 12:58:00 2002
ACTION: 'CONNECT'
DATABASE USER: '/'
OSPRIV: SYSDBA
CLIENT USER: scott
CLIENT TERMINAL: pts/2
STATUS: 0
Thu Jan 24 12:58:00 2002
ACTION: 'alter system flush shared_pool'
DATABASE USER: ''
OSPRIV: SYSDBA
CLIENT USER: scott
CLIENT TERMINAL: pts/2
STATUS: 0
Thu Jan 24 12:58:00 2002
ACTION: 'update salary set base=1000 where name='myname''
DATABASE USER: ''
OSPRIV: SYSDBA
CLIENT USER: scott
CLIENT TERMINAL: pts/2
STATUS: 0
5. 管理审计
设置初始化参数使能审计,审计的参数都是静态的
AUDIT_TRAIL = NONE|DB|OS
参数值DB表示审计信息记录到数据库中
参数值OS表示审计信息记录到操作系统文件中
参数值NONE表示关闭审计,为默认值
AUDIT_FILE_DEST = 路径
默认路径:$ORACLE_HOME/rdbms/audit
注:如果操作系统支持审计那么路径由操作系统指定,例如在Windows平台上审计事件记录到应用程序日志中,在Windows平台上不允许指定AUDIT_FILE_DEST 参数。
在某些平台上实例连接和数据启动总是记录到$ORACLE_HOME/rdbms/audit目录下不管是否设置了AUDIT_FILE_DEST参数,因为除非数据库mounted 否则无法获取这个参数。
使用审计语句指定审计选项
审计等级
语句:指定审计语句或特定类型的语句组,象审计表的语句 CREATE TABLE, TRUNCATE TABLE, COMMENT ON TABLE, and DELETE [FROM] TABLE
权限:使用审计语句指定系统权限,象AUDIT CREATE ANY TRIGGER
对象:在指定对象上指定审计语句,象ALTER TABLE on the emp table
6. 举例
AUDIT SELECT ON schema.table_name;
AUDIT CREATE TABLE;
AUDIT CREATE ANY PROCEDURE;
NOAUDIT
注:语句详细说明见SQL Reference
7. 细粒度审计(fga),举例说明
# 建立测试用表
create table audit_test
(audit_number number,
audit_char varchar2(30),
audit_date date)
# 建立索引
alter table audit_test add constraint audit_test_pk primary key(audit_number) using index;
# 建立测试数据
declare
begin
for i in 1..100 loop
insert into audit_test values(i,'audit'||i,sysdate-100+i);
end loop;
commit;
end;
/
# 为表audit_test建立列和条件审计
begin
dbms_fga.add_policy (
object_schema=>'SYS',
object_name=>'AUDIT_TEST',
policy_name=>'AUDIT_TEST_ACCESS',
audit_column => 'AUDIT_DATE',
audit_condition => 'AUDIT_DATE <= SYSDATE-30',
);
end;
/
# 测试审计结果
## 执行select 操作
select audit_number,audit_char from audit_test where audit_date>=TO_DATE('2008-05-10','yyyy-mm-dd');
## 检查审计情况
select timestamp,
db_user,
os_user,
userhost,
object_schema,
object_name,
sql_text
from dba_fga_audit_trail;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4670/viewspace-344539/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/4670/viewspace-344539/