简单审计

简介: 一、开启审计 1、设置AUDIT_TRAIL参数 一般常见的审计方式是OS,如果设置 AUDIT_TRAIL = OS,还需要修改参数AUDIT_FILE_DEST。 2、关闭并重启数据库 二、设置所需要的审计信息 所有类型的审计都使用audit命令来打开审计,使用noaudit命令来关闭审计。

一、开启审计

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;
1、sql_statement_clause|schema_object_clause包含很多条不同的信息,例如希望审计的SQL语句类型以及审计什么人、什么操作。

2、希望在每次动作发生时都对其进行审计(by access)或者只审计一次(by session)。默认是by session。

3、有时希望审计成功的动作:没有生成错误消息的语句。对于这些语句,添加whenever successful。而有时只关心使用审计语句的命令是否失败,失败原因是权限违犯、用完表空间中的空间还是语法错误。对于这些情况,使用 whenever not successful。

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

1、包括在ALL类别中的可审计语句

  a) ALTER SYSTEM:所有ALTER SYSTEM选项,例如,动态改变实例参数,切换到下一个日志文件组,以及终止用户会
  b) CLUSTER:CREATE、ALTER、DROP或TRUNCATE集群
  c) CONTEXT:CREATE CONTEXT或DROP CONTEXT
  d) DATABASE LINK:CREATE或DROP数据库链接
  e) DIMENSION:CREATE、ALTER或DROP维数
  f) DIRECTORY:CREATE或DROP目录
  g) INDEX:CREATE、ALTER或DROP索引
  h) MATERIALIZED VIEW:CREATE、ALTER或DROP物化视图
  i) NOT EXISTS:由于不存在的引用对象而造成的SQL语句的失败
  j) PROCEDURE:CREATE或DROP FUNCTION、LIBRARY、PACKAGE、PACKAGE BODY或PROCEDURE
  k) PROFILE:CREATE、ALTER或DROP配置文件
  l) PUBLIC DATABASE LINK:CREATE或DROP公有数据库链接
  m) PUBLIC SYNONYM:CREATE或DROP公有同义词
  n) ROLE:CREATE、ALTER、DROP或SET角色
  o) ROLLBACK SEGMENT:CREATE、ALTER或DROP回滚段
  p) SEQUENCE:CREATE或DROP序列
  q) SESSION:登录和退出
  r) SYNONYM:CREATE或DROP同义词
  s) SYSTEM AUDIT:系统权限的AUDIT或NOAUDIT
  t) SYSTEM GRANT:GRANT或REVOKE系统权限和角色
  u) TABLE:CREATE、DROP或TRUNCATE表
  v) TABLESPACE:CREATE、ALTER或DROP表空间
  w) TRIGGER:CREATE、ALTER(启用/禁用)、DROP触发器;具有ENABLE ALL TRIGGERS或DISABLE ALL TRIGGERS的ALTER TABLE
  x) TYPE:CREATE、ALTER和DROP类型以及类型主体
  y) USER:CREATE、ALTER或DROP用户
  z) VIEW:CREATE或DROP视图

2、非ALL类别,显式指定的语句类型

  a) ALTER SEQUENCE:任何ALTER SEQUENCE命令
  b) ALTER TABLE:任何ALTER TABLE命令
  c) COMMENT TABLE:添加注释到表、视图、物化视图或它们中的任何列
  d) DELETE TABLE:删除表或视图中的行
  e) EXECUTE PROCEDURE:执行程序包中的过程、函数或任何变量或游标
  f) GRANT DIRECTORY:GRANT或REVOKE DIRECTORY对象上的权限
  g) GRANT PROCEDURE:GRANT或REVOKE过程、函数或程序包上的权限
  h) GRANT SEQUENCE:GRANT或REVOKE序列上的权限
  i) GRANT TABLE:GRANT或REVOKE表、视图或物化视图上的权限
  j) GRANT TYPE:GRANT或REVOKE TYPE上的权限
  k) INSERT TABLE:INSERT INTO表或视图
  l) LOCK TABLE:表或视图上的LOCK TABLE命令
  m) SELECT SEQUENCE:引用序列的CURRVAL或NEXTVAL的任何命令
  n) SELECT TABLE:SELECT FROM表、视图或物化视图
  o) UPDATE TABLE:在表或视图上执行UPDATE

3、权限类别

  a) ALTER:改变表、序列或物化视图
  b) AUDIT:审计任何对象上的命令
  c) COMMENT:添加注释到表、视图或物化视图
  d) DELETE:从表、视图或物化视图中删除行
  e) EXECUTE:执行过程、函数或程序包
  f) FLASHBACK:执行表或视图上的闪回操作
  g) GRANT:授予任何类型对象上的权限
  h) INDEX:创建表或物化视图上的索引
  i) INSERT:将行插入表、视图或物化视图中
  j) LOCK:锁定表、视图或物化视图
  k) READ:对DIRECTORY对象的内容执行读操作
  l) RENAME:重命名表、视图或过程
  m) SELECT:从表、视图、序列或物化视图中选择行
  n) 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);

目录
相关文章
|
小程序 JavaScript 前端开发
小程序云开发全套实战教程(最全)
小程序云开发全套实战教程(最全)
318 0
|
前端开发 Java Maven
使用itext7在PDF中实现多种文字水印效果
现在网络上能搜到的itext pdf水印效果,绝大部分都是itext5的,很少有itext7的,本文就将介绍一下新版本的效果
1241 1
使用itext7在PDF中实现多种文字水印效果
|
Java
【Java项目】Mapstruct的使用以及使用过程中遇到的各种问题的解决
【Java项目】Mapstruct的使用以及使用过程中遇到的各种问题的解决
942 0
|
Prometheus 监控 Oracle
oracledb_exporter监控Oracle,一个入侵性极低的监控方案。
oracledb_exporter监控Oracle,一个入侵性极低的监控方案。
1117 0
|
JSON Java 数据格式
[Spring cloud 一步步实现广告系统] 4. 通用代码模块设计
一个大的系统,在代码的复用肯定是必不可少的,它能解决: 统一的响应处理(可以对外提供统一的响应对象包装) graph LR HTTP-->|HttpRequest|RestController RestController-->|HttpResponse -> JSON|HTTP 统一...
1230 0
|
15天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
6天前
|
云安全 人工智能 安全
Dify平台集成阿里云AI安全护栏,构建AI Runtime安全防线
阿里云 AI 安全护栏加入Dify平台,打造可信赖的 AI
|
9天前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
877 32