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

Oracle的审计是一个事后的工作,即数据库出现安全问题后,为了定位、发现问题的根源,可以通过审计追根溯源。Oracle审计主要包含以下3个部分:

  • Trigger-based Auditing(触发器)
  • Auditing the sys User-(SYS用户审计)
  • Standard Auditing (标准审计)

触发器审计

下面是一个触发器审计的例子,一旦emp表的sal字段的值增大超过1.1倍,就在审计表emp_sal_audit里记录该次操作。
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> alter system set audit_sys_operations = true scope = spfile;

系统已更改。

2)由SYS用户向测试表插入一条数据
SQL> show user
USER 为 "SYS"

SQL> insert into test.t (object_id) values(1);

已创建 1 行。

SQL> commit;

提交完成。

3)在操作系统日志中可以看到如下信息:
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> ALTER SYSTEM SET AUDIT_TRAIL = DB,EXTENDED SCOPE = SPFILE;

系统已更改。
SQL> audit select, insert, update, delete on test.t;


审计已成功。

2)在表上做DML操作
SQL> delete from test.t;

已删除72768行。

SQL> insert into t (object_id) values(1);

已创建 1 行。

SQL> commit;

提交完成。

3)在审计表里查看相应审计信息
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)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库中,可以通过以下步骤开启审计策略: 1. 确认审计参数:使用以下SQL查询语句查看是否启用了审计功能并确定审计参数的设置。 ``` SELECT * FROM dba_audit_mgmt_config_params; ``` 2. 创建审计策略:使用以下SQL语句创建审计策略,其中包括审计级别、审计选项、审计对象等。 ``` BEGIN DBMS_AUDIT_MGMT.create_audit_policy ( audit_policy_name => 'my_audit_policy', audit_trail => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, audit_condition => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''HR''', audit_column => 'SALARY', handler_schema => NULL, enable => TRUE, statement_types => DBMS_AUDIT_MGMT.ALL_STATEMENTS, audit_column_opts => DBMS_AUDIT_MGMT.DB_EXTENDED, audit_object_opts => DBMS_AUDIT_MGMT.AUDIT_OPT_OBJECT_SCHEMA, audit_object => 'HR' ); END; ``` 上述SQL语句创建了一个名为“my_audit_policy”的审计策略,该策略审计HR用户对SALARY列的所有活动,包括SELECT、INSERT、UPDATE和DELETE操作。 3. 启用审计策略:使用以下SQL语句启用审计策略。 ``` BEGIN DBMS_AUDIT_MGMT.enable_audit_policy ( audit_policy_name => 'my_audit_policy', success => TRUE, failure => TRUE ); END; ``` 上述SQL语句启用了名为“my_audit_policy”的审计策略,并记录成功和失败的活动。 需要注意的是,Oracle数据库审计策略应该根据具体的安全需求和风险情况进行制定和调整。同时,审计记录的保护和访问控制也是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值