一、audit是什么?
oracle的审计功能允许数据库管理员跟踪和记录对数据库的操作,以确保数据库的安全性、合规性和完整性。
oracle提供了多种审计功能和方法,可以针对不同的需求和场景进行配置和使用,主要包括:
- 标准审计(standard auditing):用于审计特定的sql语句、特权、对象和操作。
- 细粒度审计(fine-grained auditing, fga):允许对表级别的数据访问进行细粒度控制和审计。
- 统一审计(unified auditing):oracle 12c引入的新特性,整合了标准审计、fga等多种审计方式。
二、启用audit
要启用数据库审计,需要初始化参数 audit_trail :
参数值 | 含义 |
---|---|
none | 默认值,不做审计 |
db | 启用数据库审计并将所有审计记录指向数据库审计跟踪 (sys.aud$) 中 |
db_extended | 完成 audit_trail=db 的全部操作并填充 sys.aud$ 表的 sql 绑定和 sql 文本列 |
xml | 启用数据库审计并将所有审计记录以 xml 格式指向一个操作系统文件 |
os | 启用数据库审计并将所有审计记录指向一个操作系统文件 |
此外,还应设置以下数据库参数:
- audit_file_dest :指定操作系统审计跟踪位置的动态参数,默认位置为 $oracle_base/admin/$oracle_sid/adump。
- audit_sys_operations :启用对用户 sys 以及使用 sysdba、sysoper、sysasm、sysbackup、syskm 和 sysdg 权限进行连接的用户发出的操作的审计,该参数应当设为 true。
可以通过以下命令修改参数
alter system set audit_sys_operations=true scope=spfile; alter system set audit_trail=db_extended scope=spfile;
重启数据库才能生效
shutdown immediate; startup;
查看是否启动了审计功能
show parameter audit;
三、配置标准审计
标准审计是 oracle 数据库的基本审计级别,可对数据库对象(如表、视图、过程等)的操作进行审计。
审计记录包括对 ddl 和 dml 操作的记录,例如对表的 select、update、insert 或 delete 操作进行记录。
标准审计可以通过 audit 和 noaudit 命令进行配置。
audit语法
audit action [, action, ...] on object_name [by user] [whenever condition];
- action: 指定要审计的操作,可以是单个操作(如 select、insert、update、delete)或多个操作的组合。
- object_name: 指定要审计的对象,可以是表、视图、过程等数据库对象。
- by user: 可选项,指定要审计的用户。如果不指定,默认为当前用户。
- whenever condition: 可选项,指定触发审计的条件,例如成功或失败。
audit 参数说明 - action:
单个操作:select、insert、update、delete、alter、drop、create、system audit、session audit等。
多个操作组合:用逗号分隔,例如 select, insert, update 表示同时审计这三种操作。 - object_name:
表示要审计的对象,可以是表名、视图名、过程名等数据库对象。
也可以使用 all 来审计所有对象,或者使用通配符 % 来匹配多个对象。 - by user:
指定要审计的用户,可以是具体用户名或者 public(对所有用户生效)。
如果不指定 by user,默认为当前用户。 - whenever condition:
可以用来指定触发审计的条件,常见的条件包括 successful(成功操作)和 not successful(失败操作)。
例如,whenever successful 表示只审计成功的操作,而 whenever not successful 表示只审计失败的操作。
示例:
审计对特定表的select操作:
audit select on employees;
审计特定用户对特定表的select操作:
audit select on employees by hr_user;
审计对特定表的失败的select操作:
audit select on employees whenever not successful;
可以通过以下查询显示已启用的审计选项和配置,以及审计的状态信息。
select * from dba_priv_audit_opts; -- 查看特权操作的审计配置 select * from dba_stmt_audit_opts; -- 查看语句级操作的审计配置 select * from dba_obj_audit_opts; -- 查看对象级操作的审计配置
通过使用 audit 语句,管理员可以灵活地配置审计策略,跟踪和记录数据库中特定操作的执行情况,以确保数据库的安全性和合规性。
四、审计记录管理
审计记录管理包括查看、存档和清理审计记录。
1.查看审计记录
可以通过以下视图查看审计记录:
dba_audit_trail:查看标准审计记录。 dba_fga_audit_trail:查看细粒度审计记录。 unified_audit_trail:查看统一审计记录。
2.清理审计记录
可以定期清理过期的审计记录,以避免占用过多的存储空间。
例如:
- 删除30天前的标准审计记录:
delete from sys.aud$ where timestamp# < sysdate - 30;
- 删除30天前的细粒度审计记录:
delete from dba_fga_audit_trail where timestamp < sysdate - 30;
请注意,开启审计功能可能会对数据库性能产生一定影响,因此应根据实际需求和安全政策来配置审计选项,并定期维护审计记录以保证数据库的安全性和合规性。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论