Oracle OCP(51):简单审计

本文详细介绍如何在Oracle数据库中设置审计,包括开启审计、设置所需审计信息的方法,以及具体示例。涵盖AUDIT_TRAIL参数设置、AUDIT命令使用、审计类别及权限说明。

一、开启审计

  1. 设置AUDIT_TRAIL参数
    一般常见的审计方式是OS,如果设置 AUDIT_TRAIL = OS,还需要修改参数AUDIT_FILE_DEST。
  2. 关闭并重启数据库

二、设置所需要的审计信息

所有类型的审计都使用audit命令来打开审计,使用noaudit命令来关闭审计。

语法:

AUDIT sql_statement_clause|schema_object_clause BY {SESSION | ACCESS}
WHENEVER [NOT] SUCCESSFUL;
  • sql_statement_clause|schema_object_clause包含很多条不同的信息,例如希望审计的SQL语句类型以及审计什么人、什么操作。
  • 希望在每次动作发生时都对其进行审计(by access)或者只审计一次(by session)。默认是by session。
  • 有时希望审计成功的动作:没有生成错误消息的语句。对于这些语句,添加whenever successful。而有时只关心使用审计语句的命令是否失败,失败原因是权限违犯、用完表空间中的空间还是语法错误。对于这些情况,使用 whenever not successful。

对于大多数类别的审计方法,如果确实希望审计所有类型的表访问或某个用户的任何权限,则可以指定all而不是单个的语句类型或对象。

  1. 包括在ALL类别中的可审计语句
    • ALTER SYSTEM:所有ALTER SYSTEM选项,例如,动态改变实例参数,切换到下一个日志文件组,以及终止用户会
    • CLUSTER:CREATE、ALTER、DROP或TRUNCATE集群
    • CONTEXT:CREATE CONTEXT或DROP CONTEXT
    • DATABASE LINK:CREATE或DROP数据库链接
    • DIMENSION:CREATE、ALTER或DROP维数
    • DIRECTORY:CREATE或DROP目录
    • INDEX:CREATE、ALTER或DROP索引
    • MATERIALIZED VIEW:CREATE、ALTER或DROP物化视图
    • NOT EXISTS:由于不存在的引用对象而造成的SQL语句的失败
    • PROCEDURE:CREATE或DROP FUNCTION、LIBRARY、PACKAGE、PACKAGE BODY或PROCEDURE
    • PROFILE:CREATE、ALTER或DROP配置文件
    • PUBLIC DATABASE LINK:CREATE或DROP公有数据库链接
    • PUBLIC SYNONYM:CREATE或DROP公有同义词
    • ROLE:CREATE、ALTER、DROP或SET角色
    • ROLLBACK SEGMENT:CREATE、ALTER或DROP回滚段
    • SEQUENCE:CREATE或DROP序列
    • SESSION:登录和退出
    • SYNONYM:CREATE或DROP同义词
    • SYSTEM AUDIT:系统权限的AUDIT或NOAUDIT
    • SYSTEM GRANT:GRANT或REVOKE系统权限和角色
    • TABLE:CREATE、DROP或TRUNCATE表
    • TABLESPACE:CREATE、ALTER或DROP表空间
    • TRIGGER:CREATE、ALTER(启用/禁用)、DROP触发器;具有ENABLE ALL TRIGGERS或DISABLE ALL TRIGGERS的ALTER TABLE
    • TYPE:CREATE、ALTER和DROP类型以及类型主体
    • USER:CREATE、ALTER或DROP用户
    • VIEW:CREATE或DROP视图
  2. 非ALL类别,显式指定的语句类型
    • ALTER SEQUENCE:任何ALTER SEQUENCE命令
    • ALTER TABLE:任何ALTER TABLE命令
    • COMMENT TABLE:添加注释到表、视图、物化视图或它们中的任何列
    • DELETE TABLE:删除表或视图中的行
    • EXECUTE PROCEDURE:执行程序包中的过程、函数或任何变量或游标
    • GRANT DIRECTORY:GRANT或REVOKE DIRECTORY对象上的权限
    • GRANT PROCEDURE:GRANT或REVOKE过程、函数或程序包上的权限
    • GRANT SEQUENCE:GRANT或REVOKE序列上的权限
    • GRANT TABLE:GRANT或REVOKE表、视图或物化视图上的权限
    • GRANT TYPE:GRANT或REVOKE TYPE上的权限
    • INSERT TABLE:INSERT INTO表或视图
    • LOCK TABLE:表或视图上的LOCK TABLE命令
    • SELECT SEQUENCE:引用序列的CURRVAL或NEXTVAL的任何命令
    • SELECT TABLE:SELECT FROM表、视图或物化视图
    • UPDATE TABLE:在表或视图上执行UPDATE
  3. 权限类别
    • ALTER:改变表、序列或物化视图
    • AUDIT:审计任何对象上的命令
    • COMMENT:添加注释到表、视图或物化视图
    • DELETE:从表、视图或物化视图中删除行
    • EXECUTE:执行过程、函数或程序包
    • FLASHBACK:执行表或视图上的闪回操作
    • GRANT:授予任何类型对象上的权限
    • INDEX:创建表或物化视图上的索引
    • INSERT:将行插入表、视图或物化视图中
    • LOCK:锁定表、视图或物化视图
    • READ:对DIRECTORY对象的内容执行读操作
    • RENAME:重命名表、视图或过程
    • SELECT:从表、视图、序列或物化视图中选择行
    • UPDATE:更新表、视图或物化视图

三、例句

如果希望审计HR.JOBS表上的所有insert和update命令,而不管谁正在进行更新,则每次该动作发生时,都可以使用如下所示的audit命令:

audit insert, update on hr.jobs by access whenever successful;

用户 HR 向HR.JOBS表添加两个新行:

insert into hr.jobs (job_id, job_title, min_salary, max_salary)
values ('IN_CFO','Internet Chief Fun Officer', 7500, 50000);

insert into hr.jobs (job_id, job_title, min_salary, max_salary)
values ('OE_VLD','Order Entry CC Validation', 5500, 20000);

查看DBA_AUDIT_TRAIL视图,可以看到KSHELTON会话中的两个insert命令

SELECT USERNAME,
      TO_CHAR(TIMESTAMP, 'MM/DD/YY HH24:MI') TIMESTAMP,
      OBJ_NAME,
      ACTION_NAME,
      SQL_TEXT
  FROM DBA_AUDIT_TRAIL;
USERNAME  TIMESTAMP      OWNER OBJ_NAME ACTION_NAME   SQL_TEXT
--------- -------------- ----- -------- ------------- ---------------------------------------------------------------
KSHELTON  08/12/07 22:54 HR    JOBS      INSERT       insert into hr.jobs (job_id, job_title, min_salary, max_salary)
                                                      values ('IN_CFO','Internet Chief Fun Officer', 7500, 50000);
KSHELTON  08/12/07 22:53 HR    JOBS      INSERT       insert into hr.jobs (job_id, job_title, min_salary, max_salary)
                                                      values ('OE_VLD','Order Entry CC Validation', 5500, 20000);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值