当前位置:数据库 > Oracle >>

[Oracle]数据库安全之-审计audit

[Oracle]数据库安全之-审计audit
 
Oracle的审计是一个事后的工作,即数据库出现安全问题后,为了定位、发现问题的根源,可以通过审计追根溯源。Oracle审计主要包含以下3个部分:
Trigger-based Auditing(触发器)
Auditing the sys User-(SYS用户审计)
Standard Auditing (标准审计)
 
触发器审计
下面是一个触发器审计的例子,一旦emp表的sal字段的值增大超过1.1倍,就在审计表emp_sal_audit里记录该次操作。
[sql] 
CREATE TRIGGER trg_a_idu_r_emp_sal  
AFTER INSERT OR DELETE OR UPDATE OF sal ON emp  
FOR EACH ROW  
BEGIN  
IF (:NEW.sal > :OLD.sal * 1.10)  
THEN INSERT INTO emp_sal_audit VALUES (:OLD.empno  
,:OLD.sal  
,:NEW.sal  
,user  
,sysdate);  
END IF;  
END;  
/  
 
SYS用户的审计
对SYS用户的审计比较特殊,因为SYS用户的权限太大,它的审计信息不能存储在数据库里,否则SYS可以随意修改审计信息,因此sys用户审计日志写到操作系统日志中。
下面是一个例子:
1)首先启动对SYS用户的审计
[sql] 
SQL> alter system set audit_sys_operations = true scope = spfile;  
  
系统已更改。  
 
2)由SYS用户向测试表插入一条数据
[sql] 
SQL> show user  
USER 为 "SYS"  
  
SQL> insert into test.t (object_id) values(1);  
  
已创建 1 行。  
  
SQL> commit;  
  
提交完成。  
 
3)在操作系统日志中可以看到如下信息:
[plain] 
Audit trail: LENGTH : '176' ACTION :[7] 'CONNECT' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[12] 'CORP\xianzhu' CLIENT TERMINAL:[14] 'L-SHC-00436132' STATUS:[1] '0' DBID:[10] '1327298419' .  
 
标准审计
标准审计根据对象不同,可以分为以下4个部分:
审计会话
审计对象
审计操作
审计授权
下面以审计对象为例:
 
1)首先,开启标准审计
[sql] 
SQL> ALTER SYSTEM SET AUDIT_TRAIL = DB,EXTENDED SCOPE = SPFILE;  
  
系统已更改。  
SQL> audit select, insert, update, delete on test.t;  
  
  
审计已成功。  
 
2)在表上做DML操作
[sql] 
SQL> delete from test.t;  
  
已删除72768行。  
  
SQL> insert into t (object_id) values(1);  
  
已创建 1 行。  
  
SQL> commit;  
  
提交完成。  
 
3)在审计表里查看相应审计信息
[sql] 
SQL> col userid for a10  
SQL> col obj$name for a10  
SQL> col sqltext for a40  
SQL> select userid,obj$name,sqltext from sys.aud$ where userid='TEST' and obj$name='T';  
  
USERID     OBJ$NAME   SQLTEXT  
---------- ---------- ----------------------------------------  
TEST       T          delete from test.t  
TEST       T          insert into t (object_id) values(1)  
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,