19c的审计增强

19c的审计增强

1. 审计top语句

当使用PL/SQL时,对程序的单个调用可能会导致大量的审计操作。为了减少审计日志中记录的数量,我们可以支队顶级语句进行审计。这种情况下使用PL/SQL API,我们只会对该程序的调用进行审计,而不是对程序中执行的所有操作进行审计。

使用授权的用户进行连接,并清空审计记录。如果想要保留当前审计的内容,建议跳过该步骤。

conn sys/SysPassowrd1@localhost:1521/pdb1 as sysdba 
exec dbms_audit_mgmt.clean_audit_trail(dbms_audit_mgmt.audit_trail_unified, false); 

创建测试用户

-- drop user testuser1 cascade; 
create user testuser1 identified by testuser1 quota unlimited on users; 
grant connect, resource to testuser1; 
grant select_catalog_role to testuser1; 

创建测试表T1,并创建PL/SQL程序INSERT_T1,来向T1表进行插入操作。这两个对象都是由TESTUSER1所建。

create table testusers1.t1(id number);

create or replace procedure testuser1.insert_t1(p_id in number)
as 
begin
    insert into t1 values(p_id);
end;
/

创建两个标准审计策略,用于审计testuser1用户的所有操作,但是第二个策略使用了ONLY TOPLEVEL子句。

create audit policy testuser1_pol
    actions all
    when q'~ sys_context('userenv', 'session_user') = 'TESTUSER1' ~'
    evaluate per session;

create audit policy testuser1_toplevel_pol
    action all
    when q'~ sys_context('userenv', 'session_user') = 'TESTUSER1' ~'
    evaluate per session
    only toplevel;

当启用第一个策略testuser1_pol时。

audit policy testuser1_pol; 

使用testuser1用户连接数据库,并执行insert_t1程序

conn testuser1/testuser1@localhost:1521/pdb1 
exec isnert_t1(1); 
commit 

然后检查标准审计中关于testuser1的信息。我们可以看到里面包含10条审计内容,包含对insert_t1的顶层调用,还有对t1表的插入操作。

conn sys/SysPassword1@//localhost:1521/pdb1 as sysdba

set linesize 200
column event_timestamp format a30
column action_name format a13
column object_schema format a15
column object_name format a25

select event_timestamp,
       action_name,
       object_schema,
       object_name
from   unified_audit_trail
where  dbusername = 'TESTUSER1'
order by event_timestamp;

EVENT_TIMESTAMP                ACTION_NAME   OBJECT_SCHEMA   OBJECT_NAME
------------------------------ ------------- --------------- -------------------------
09-JAN-22 02.52.41.856739 PM   LOGON
09-JAN-22 02.52.41.864478 PM   ALTER SESSION
09-JAN-22 02.52.41.870481 PM   SELECT        SYS             DUAL
09-JAN-22 02.52.41.876372 PM   EXECUTE       SYS             DBMS_APPLICATION_INFO
09-JAN-22 02.52.41.881929 PM   COMMIT
09-JAN-22 02.52.41.886135 PM   COMMIT
09-JAN-22 02.52.41.889243 PM   INSERT        TESTUSER1       T1
09-JAN-22 02.52.41.890034 PM   EXECUTE       TESTUSER1       INSERT_T1
09-JAN-22 02.52.41.890959 PM   COMMIT
09-JAN-22 02.52.53.693288 PM   LOGOFF

10 rows selected.

SQL>

现在我们暂停策略testuser1_pol,然后启用testuser1_toplevel_pol。当然还要清空审计记录。

noaudit policy testuser1_pol;
audit policy testuser1_toplevel_pol;
exec dbms_audit_mgmt.clean_audit_trail(dbms_audit_mgmt.audit_trail_unified,false);

以testuser1连接到数据库,并执行insert_t1程序。

conn testuser1/testuser1@//localhost:1521/pdb1 
exec insert_t1(1); 
commit; 

检查审计记录,发现里面只有8行与testuser1相关的数据,里面有对顶级程序的调用,而没有具体到对t1表的插入。

conn sys/SysPassword1@//localhost:1521/pdb1 as sysdba

set linesize 200
column event_timestamp format a30
column action_name format a13
column object_schema format a15
column object_name format a25

select event_timestamp,
       action_name,
       object_schema,
       object_name
from   unified_audit_trail
where  dbusername = 'TESTUSER1'
order by event_timestamp;

EVENT_TIMESTAMP                ACTION_NAME   OBJECT_SCHEMA   OBJECT_NAME
------------------------------ ------------- --------------- -------------------------
09-JAN-22 02.56.18.545875 PM   LOGON
09-JAN-22 02.56.18.556143 PM   SELECT        SYS             DUAL
09-JAN-22 02.56.18.561399 PM   EXECUTE       SYS             DBMS_APPLICATION_INFO
09-JAN-22 02.56.18.566822 PM   COMMIT
09-JAN-22 02.56.18.572013 PM   COMMIT
09-JAN-22 02.56.18.575647 PM   EXECUTE       TESTUSER1       INSERT_T1
09-JAN-22 02.56.18.576603 PM   COMMIT
09-JAN-22 02.56.23.354887 PM   LOGOFF

8 rows selected.

SQL>

测试完成,禁用并删除审计策略

2. unified_audit_trail视图中新增event_timestamp_utc列

unified_audit_trail视图中新增了event_timestamp_utc列。如果可以的话,应该在对unified_audit_trail的查询的where子句中使用该列,这样能够进行分区裁剪,查询性能更好。

3. TFA和审计

在19c中,TFA(trace file analyzer)支持很多新的SRDC(service request data collections),当然也包括对dbaudit信息的收集,例如

cd $ORACLE_HOME/ahf/oracle.ahf.bin ./tfactl diagcollect -srdc dbaudit 

4. 为所有审计文件启用syslog和windows事件查看器

在19c中,部分审计记录可以写入到操作系统日志系统中。两个初始化参数支持该操作:

  • unified_audit_systemlog: 可以应用于单个的容器(CDB或PDB)

  • unified_audit_common_systemlog: 仅限于unix,只能作用于root容器,允许所有容器的通用审计日志

该参数可用的值在不同的os上存在差异

Windows 

UNIFIED_AUDIT_SYSTEMLOG = { TRUE | FALSE } 

UNIX 

UNIFIED_AUDIT_SYSTEMLOG = 'facility_clause.priority_clause' 
UNIFIED_AUDIT_COMMON_SYSTEMLOG = 'facility_clause.priority_clause' 

facility_clause ::= { USER | LOCAL[ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 ] } 

priority_clause::= { NOTICE | INFO | DEBUG | WARNING | ERR | CRIT | ALERT | EMERG } 

该功能的文档尚不明确,一些文档的一些章节和其他章节在允许的值和需要使其生效需要完成的配置方面有冲突。我只在以下的设置下使审计功能正常。

为计划记录的内容创建/etc/syslog.conf文件,然后重启syslog

cat >> /etc/rsyslog.conf <<EOF 
local0.notice /var/log/local0.notice.audit.log 
EOF 
systemctl restart syslog 

在CDB中设置unified_audit_common_systemlog,并在任意容器中设置unified_audit_systemlog参数

conn / as sysdba 
alter system set unified_audit_common_systemlog='local0.notice' scope=spfile; 
shutdown immediate; 
startup; conn / as sysdba 
alter session set container=pdb1; 
alter system set unified_audit_systemlog='local0.notice' scope=spfile; 
shutdown immediate; 
startup; 

这样以后,一些审计信息会出现在/var/log/messages和/var/log/local0.notice.audit.log文件中。在写入的时候,似乎不能避免审计日志写到/var/log/message中。这种对上使用,并且包括oracle 19.13和21.4

在windows系统上,可以在任意容器中简单设置unified_audit_systemlog初始化参数,然后重启数据库。

5. syslog和windows事件查看器中添加PDB_GUID列

syslog和windows事件查看器中已经加入了PDB_GUID键。这可以显示具体哪个容器做了审计操作。

syslog和windows事件查看器中可以记录的操作,见这里

6. 针对统一审计策略的Vault命令规则

19c允许为统一审计策略创建Oracle valut命令规则,特别是audit policy和noaudit policy语句

译者碎碎念:unified audit这个特性在12c就已经出现了。oracle已经提供了3三种审计组件了,我个人的理解是audit审计动作,fga审计对象,unified audit类似定制化的审计动作,而且使用更轻量化。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle 19c是一种数据库管理系统。如果您想卸载Oracle 19c,可以按照以下步骤进行操作: 1. 首先,您可以参考中的卸载教程,根据步骤进行操作。这个教程可以帮助您详细了解卸载Oracle 19c的过程。 2. 如果您无法在开始菜单中找到Oracle 19c的选项,您可以尝试前往"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Oracle - OraDB19Home1\应用程序开发"目录下查找。 3. 在卸载之前,建议您创建一个还原点,以便在需要时可以还原到安装Oracle之前的状态。您可以参考中的步骤来创建还原点。 4. 完成上述步骤后,您可以按照卸载教程中的指导,逐步执行卸载操作,以完成Oracle 19c的卸载过程。 请注意,具体的卸载步骤可能因您的操作系统版本和Oracle 19c安装配置而有所不同。因此,在卸载之前,请确保参考正确的卸载教程,并在执行操作之前备份重要的数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Oracle19c安装,基本配置教程(超详细)](https://blog.csdn.net/m0_51545690/article/details/126748727)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值