千家信息网

【读书笔记】数据库审计

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,数据库版本: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0一、审计类型ORACLE的审计技术,除了SYSDBA审计之外,还有数据库
千家信息网最后更新 2025年01月19日【读书笔记】数据库审计

数据库版本: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

一、审计类型

ORACLE的审计技术,除了SYSDBA审计之外,还有数据库审计、基于值的审计、细粒度审计。

SQL> show parameter audit;

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

audit_file_dest string /u01/app/oracle/admin/orcl/adump

audit_sys_operations boolean FALSE

audit_syslog_level string

audit_trail string DB

1.1 SYSDBA审计

audit_sys_operations(默认为false)设置为TRUE,那么作为SYSDBA或SYSOPER连接数据库的用户所发布的每条语句都会被写入操作系统审核跟踪,从而能够给出DBA所进行操作的完整记录。

alter system set audit_sys_operations=TRUE scope=spfile;

之后重启数据库。

之后DBA的操作都会被记录在审计文件中。

1.2 数据库审计

设置数据库审计之前,必须设置audit_trail的值,这个参数可以具有以下值:

NONE(或者FALSE):禁用数据库审计

OS:审计记录会被写至操作系统的文件中;

DB:审计记录写到SYS.AUD$中。

DB_EXTENDED:与DB作用大体相同,不过包含生成审计记录的、具有绑定变量的SQL语句。

XML:与OS作用大体相同,但使用XML标记设置格式。

XML_EXTENDED:与XML作用大体相同,但使用SQL语句和绑定变量。

例如对scott上的emp表做审核

如果audit_trail的值是"DB",那么就看不到执行的语句,因此修改成:

alter system set audit_trail=DB_EXTENDED scope=spfile;

重启数据库。

audit select,delete,update on scott.emp by access;

--关闭审计:noaudit

select * from emp;

update emp

set comm=1500

where empno=7900;

insert into emp

select 7935,ename,job,mgr,hiredate,sal,comm,deptno

from emp

where empno=7934;

delete from emp

where empno=7935;

--查看审计信息

select OS_USERNAME,username,USERHOST,TERMINAL,TIMESTAMP,OWNER,obj_name,ACTION_NAME,

sessionid,os_process,sql_text

from dba_audit_trail

where obj_name='EMP'

order by timestamp desc;

如果audit_trail的值是DB,则看不到sql_text的信息,因此将audit_trail修改成db_extended,重新运行一次。

1.3 基于触发器执行基于值的审计

使用触发器配合审计,将变更的值记录到某个表中。即使不配置审计策略,也可以执行。

例如,我们对scott.emp表上comm列的变更值比较感兴趣,就可以建立一个触发器,将操作的值写入到表中。

create table AUDIT_VALUE_TRAIL

(

terminal VARCHAR2(256),

sessionid VARCHAR2(256),

isdba VARCHAR2(256),

current_user VARCHAR2(256),

os_user VARCHAR2(256),

ip_address VARCHAR2(256),

obj_user VARCHAR2(10),

obj_name VARCHAR2(22),

act_value VARCHAR2(255)

);

create or replace trigger tri_emp_audit

after update of comm on scott.emp

referencing new as new old as old

for each row

begin

if :old.comm !=:new.comm then

insert into sys.audit_value_trail

values(SYS_CONTEXT('USERENV','TERMINAL'),

SYS_CONTEXT('USERENV','sessionid'),

SYS_CONTEXT('USERENV','ISDBA'),

SYS_CONTEXT('USERENV','CURRENT_USER'),

SYS_CONTEXT('USERENV','OS_USER'),

SYS_CONTEXT('USERENV','IP_ADDRESS'),

'scott','emp',:new.empno||' comm is changed from '||:old.comm ||'to '||:new.comm );

end if;

end;

/

执行:

update emp

set comm=2000

where empno=7900;

commit;

对比dba_audit_trail、audit_value_trail的结果是否一样。


1.4 细粒度审计(FGA)

细粒度审计可以配置为只在访问特定行或特定行的特定列时生成审计记录,此外还可以配置为在违反审计条件时运行一个PL/SQL代码块。

配置FGA将会涉及包DBMS_FGA,为了创建一个FGA审计策略,需要使用add_policy过程,这个过程接受下表所示的参数:


参考资料:《OCP/OCA 认证考试指南全册》 第六章:ORACLE安全性 第6节使用标准数据库审核

审计 数据 数据库 语句 配置 相同 作用 粒度 触发器 操作系统 信息 参数 变量 文件 策略 系统 过程 生成 运行 安全 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 代理服务器可以查到上网记录吗 阿里云服务器到期没续费多久作废 荒野乱斗是什么服务器 方舟在专用服务器作弊 查询数据库为啥加上反单引号 sql数据库表格无法删除列 安徽web前端软件开发定制费用 平谷hp服务器回收估价 新乡市置顶网络技术网络有限公司 天津网络安全工程师培训机构 周大福赞助网络安全 tplink软件开发待遇 软件开发工成本计算 搜索有没有网络安全手抄报该写字 下列语句中可以创建数据库的是 网络安全课程有哪些方法 大数据库中央空调 先例数据库 网络安全专业知识结构 服务器配置过程 分布式内存数据库的做用 wos数据库核心合集优点 互联网高科技办公室装修图片 pb的软件开发移动端 国家网络安全产业西集 中英文全文数据库是什么 连云区网络安全 涿鹿网络安全宣传周 网络安全攻防大赛解析 莆田戴尔服务器质量材质上乘
0