Oracle Database 审计操作

Posted by     "lxg" on Monday, August 5, 2024

安装oracle

https://hub.docker.com/r/dragonbest520/oracle-xe-10g

查询是否开启审计

show parameter audit;

使用ssh登陆

ssh root@localhost -p 49160
password: admin

开启审计

alter system set audit_sys_operations=TRUE scope=spfile;
alter system set audit_trail=DB scope=spfile;
alter system set audit_trail=db,extended scope=spfile;
 

查看审计结果

select username 用户,action_name 行为,timestamp 时间
from dba_audit_trail
where username='lxg';

关闭审计

alter system set audit_trail=none;

审计策略

监视lxg用户 all 表示所有操作, by 具体用户, by access 是所有的访问操作

audit all by lxg by access;

审计不成功的登陆

AUDIT FAILED LOGIN;

登录失败

select sessionid,timestamp,username,comment_text from dba_audit_trail where comment_text like '%Authenticated%' and RETURNCODE=1017

查看审计结果

SELECT * FROM dba_audit_trail;

语句审计

AUDIT sql_statement_clause BY {SESSION | ACCESS}
WHENEVER [NOT] SUCCESSFUL;

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

表1列出了可以审计的语句类型,并且在每个类别中包含了相关语句的简要描述。如果指定all,则审计该列表中的任何语句。然而,表2中的语句类型在启用审计时不属于all类别;必须在audit命令中显式地指定它们。

表1

语句选项与SQL操作表格

语句选项SQL操作
ALTER SYSTEM所有ALTER SYSTEM选项,例如,动态改变实例参数,切换到下一个日志文件组,以及终止用户会话
CLUSTERCREATE、ALTER、DROP或TRUNCATE集群
CONTEXTCREATE CONTEXT或DROP CONTEXT
DATABASE LINKCREATE或DROP数据库链接
DIMENSIONCREATE、ALTER或DROP维数
DIRECTORYCREATE或DROP目录
INDEXCREATE、ALTER或DROP索引
MATERIALIZED VIEWCREATE、ALTER或DROP物化视图
NOT EXISTS由于不存在的引用对象而造成的SQL语句的失败
PROCEDURECREATE或DROP FUNCTION、LIBRARY、PACKAGE、PACKAGE BODY或PROCEDURE
PROFILECREATE、ALTER或DROP配置文件
PUBLIC DATABASE LINKCREATE或DROP公有数据库链接
PUBLIC SYNONYMCREATE或DROP公有同义词
ROLECREATE、ALTER、DROP或SET角色
ROLLBACK SEGMENTCREATE、ALTER或DROP回滚段
SEQUENCECREATE或DROP序列
SESSION登录和退出
SYNONYMCREATE或DROP同义词
SYSTEM AUDIT系统权限的AUDIT或NOAUDIT
SYSTEM GRANTGRANT或REVOKE系统权限和角色
TABLECREATE、DROP或TRUNCATE表
TABLESPACECREATE、ALTER或DROP表空间
TRIGGERCREATE、ALTER(启用/禁用)、DROP触发器;具有ENABLE ALL TRIGGERS或DISABLE ALL TRIGGERS的ALTER TABLE
TYPECREATE、ALTER和DROP类型以及类型主体
USERCREATE、ALTER或DROP用户
VIEWCREATE或DROP视图

表2

语句选项与SQL操作表格

语句选项SQL操作
ALTER SEQUENCE任何ALTER SEQUENCE命令
ALTER TABLE任何ALTER TABLE命令
COMMENT TABLE添加注释到表、视图、物化视图或它们中的任何列
DELETE TABLE删除表或视图中的行
EXECUTE PROCEDURE执行程序包中的过程、函数或任何变量或游标
GRANT DIRECTORYGRANT或REVOKE DIRECTORY对象上的权限
GRANT PROCEDUREGRANT或REVOKE过程、函数或程序包上的权限
GRANT SEQUENCEGRANT或REVOKE序列上的权限
GRANT TABLEGRANT或REVOKE表、视图或物化视图上的权限
GRANT TYPEGRANT或REVOKE TYPE上的权限
INSERT TABLEINSERT INTO表或视图
LOCK TABLE表或视图上的LOCK TABLE命令
SELECT SEQUENCE引用序列的CURRVAL或NEXTVAL的任何命令
SELECT TABLESELECT FROM表、视图或物化视图
UPDATE TABLE在表或视图上执行UPDATE

权限审计

模式对象审计

AUDIT schema_object_clause BY {SESSION | ACCESS}
WHENEVER [NOT] SUCCESSFUL;

schema_object_clause

对象选项说明
ALTER改变表、序列或物化视图
AUDIT审计任何对象上的命令
COMMENT添加注释到表、视图或物化视图
DELETE从表、视图或物化视图中删除行
EXECUTE执行过程、函数或程序包
FLASHBACK执行表或视图上的闪回操作
GRANT授予任何类型对象上的权限
INDEX创建表或物化视图上的索引
INSERT将行插入表、视图或物化视图中
LOCK锁定表、视图或物化视图
READDIRECTORY 对象的内容执行读操作
RENAME重命名表、视图或过程
SELECT从表、视图、序列或物化视图中选择行
UPDATE更新表、视图或物化视图

任意SCHEME,TABLE若发生了Insert,update,delete 操作将会审计

AUDIT INSERT, UPDATE,DELETE ON DEFAULT BY ACCESS;
AUDIT INSERT, UPDATE,DELETE ON DEFAULT BY ACCESS WHENEVER SUCCESSFUL;

AUDIT ALL BY lxg BY ACCESS;
AUDIT SELECT TABLE, UPDATE TABLE, INSERT TABLE, DELETE TABLE BY lxg BY ACCESS;
AUDIT EXECUTE PROCEDURE BY lxg BY ACCESS;

附录

序号视图名称描述
1STMT_AUDIT_OPTION_MAP审计选项类型代码
2AUDIT_ACTIONSaction代码
3ALL_DEF_AUDIT_OPTS对象创建时默认的对象审计选项
4DBA_STMT_AUDIT_OPTS当前数据库系统审计选项
5DBA_PRIV_AUDIT_OPTS权限审计选项
6DBA_OBJ_AUDIT_OPTS-
7USER_OBJ_AUDIT_OPTS对象审计选项
8DBA_AUDIT_TRAIL-
9USER_AUDIT_TRAIL审计记录
10DBA_AUDIT_OBJECT-
11USER_AUDIT_OBJECT审计对象列表
12DBA_AUDIT_SESSION-
13USER_AUDIT_SESSIONsession审计
14DBA_AUDIT_STATEMENT-
15USER_AUDIT_STATEMENT语句审计
16DBA_AUDIT_EXISTS使用BY AUDIT NOT EXISTS选项的审计
17DBA_AUDIT_POLICIES审计POLICIES
18DBA_COMMON_AUDIT_TRAIL标准审计+精细审计

注意

SYS.AUD$注意监控该表的大小,以避免影响SYS表空间中其他对象的空间需求。 推荐周期性归档SYS.AUD$中的行,并且截取该表。Oracle提供了角色 DELETE_CATALOG_ROLE,和批处理作业中的特殊账户一起使用,用于归档和截取审计表。

参考资料

Auditing Database Activity

「真诚赞赏,手留余香」

Little Star Blog

真诚赞赏,手留余香

使用微信扫描二维码完成支付