首批通过分布式安全可靠测评,为关键业务系统打造
开始审计
更新时间:2023-07-19 13:03:07
本章节向您介绍如何开启 OceanBase 数据库的审计功能。OceanBase 数据库的审计相关操作是由内置的 ORAAUDITOR 用户进行设置和操作,该用户的密码固定为 ORAAUDITOR。
开启审计功能并设置审计记录存储位置
使用
sys用户登录到Oracle租户解锁ORAAUDITOR用户。obclient> ALTER USER ORAAUDITOR ACCOUNT UNLOCK;说明
OceanBase 数据库默认创建了
ORAAUDITOR用户。该用户默认处于锁定状态,在使用审计前需要启用该用户。为了便于 ORAAUDITOR 用户直接修改相关配置项的值,可通过 GRANT 语句给 ORAAUDITOR 用户授予 ALTER SYSTEM 权限。
obclient> GRANT ALTER SYSTEM TO ORAAUDITOR;使用
ORAAUDITOR用户登录到Oracle租户。启用审计功能并设置审计记录的存储位置。
通过配置项
audit_trail开启审计功能,执行成功后立即生效。该配置项的取值如下:NONE:关闭审计,为默认值。OS:审计记录写入本地磁盘文件。DB:审计记录写入内部表。DB,EXTENDED / DB_EXTENDED:审计记录写入内部表且记录包含执行的 SQL 语句。
示例如下:
obclient> ALTER SYSTEM SET audit_trail = 'DB,EXTENDED';有关
audit_trail配置项的详细信息,请参见 audit_trail。说明
审计记录支持写入内部表和写入本地磁盘文件两种方式:
- 写入磁盘文件:通过异步写的方式记录在
<安装目录>/audit/下,默认在/home/admin/oceanbase/audit/observer_xx_xxxxxx.aud。 - 写入内部表:审计信息直接写入系统表。内部表
__all_tenant_security_audit_record,存放审计记录;内部表__all_virtual_audit_operation或__all_virtual_audit_action,存放审计相关ID和Name的映射。
设置审计规则
使用 AUDIT 语句设置审计规则。可以设置语句审计操作类型和对象审计操作类型的审计规则。有关设置审计规则的详细信息,请参见 AUDIT。
对用户 user1 的表 tbl1 的所有 INSERT、UPDATE 和 DELETE 操作进行审计。
obclient> AUDIT INSERT,UPDATE,DELETE ON user1.tbl1;
查看审计规则
设置审计规则后,您可以通过一系列 Oracle 兼容的数据字典视图查看审计规则的信息。
| 字典视图 | 功能说明 |
|---|---|
| ALL_DEF_AUDIT_OPTS | 记录任何新创建对象的默认审计规则。每列的取值如下: -/-:默认不审计A/-: 只在语句执行成功时审计-/A: 只在语句执行失败时审计A/A: 语句执行无论成功还是失败时都审计 |
| DBA_STMT_AUDIT_OPTS | 记录语句级别审计的详细配置。 |
| DBA_OBJ_AUDIT_OPTS | 记录对象级别审计的详细配置。 |
查看 ALL_DEF_AUDIT_OPTS 中的审计规则。示例如下:
obclient> SELECT * FROM SYS.ALL_DEF_AUDIT_OPTS;
查看审计记录
查看磁盘文件中的审计记录。
示例如下:
$ pwd /home/admin/oceanbase/audit $ cat observer_47454_20200924144931.aud 2020-10-04 13:48:10.635533 LENGTH : '408' ACTION :[23] 'create table t1(c0 int)' ACTION_NUMBER:[1] '0' STATUS:[1] '0' ENTRYID:[1] '5' STATEMENTID:[1] '3' DBID:[16] '1100611139404836' SESSIONID:[10] '3221505515' PROXY SESSIONID:[4] '2816' TENANTID:[4] '1001' USERID:[16] '1100611139404786' DATABASE USER:[9] 'AUDITTEST' CLIENT TENANT:[3] 'ora' CLIENT USER:[9] 'AUDITTEST' CLIENT ADDRESS:[13] 'xx.xx.xx.xx' PROXY CLIENT ADDRESS:[13] 'xx.xx.xx.xx'说明
文件过长时,会自动截断。
查看视图中的审计记录。
可以通过 Oracle 兼容的字典视图,查看记录在内部表的审计记录。
字典视图 功能说明 DBA_AUDIT_EXISTS 显示 AUDIT EXISTS和AUDIT NOT EXISTS产生的审计跟踪条目。DBA_AUDIT_OBJECT 显示数据库中所有对象的审计跟踪条目。 DBA_AUDIT_SESSION 显示所有关于 CONNECT和DISCONNECT的审计跟踪条目。DBA_AUDIT_STATEMENT 显示整个数据库中关于 GRANT、REVOKE、AUDIT、NOAUDIT和ALTER SYSTEM语句的审计跟踪条目。DBA_AUDIT_TRAIL 显示所有的审计跟踪条目。 USER_AUDIT_OBJECT 显示当前用户可访问的对象的审计跟踪条目。 USER_AUDIT_SESSION 显示关于当前用户的连接和断开的审计跟踪条目。 USER_AUDIT_STATEMENT 显示当前用户发出的 GRANT、REVOKE、AUDIT、NOAUDIT和ALTER SYSTEM语句的审计跟踪条目。USER_AUDIT_TRAIL 显示与当前用户相关的所有审计跟踪条目。 查看
DBA_AUDIT_TRAIL中的审计记录。示例如下:obclient> SELECT USERNAME,USERHOST,TIMESTAMP,SQL_TEXT FROM SYS.DBA_AUDIT_TRAIL; +----------+-------------+-----------+-----------------------------------------------------------------+ | USERNAME | USERHOST | TIMESTAMP | SQL_TEXT | +----------+-------------+-----------+-----------------------------------------------------------------+ | AUD | xx.xx.xx.xx | 29-OCT-20 | DISCONNECT | | AUD | xx.xx.xx.xx | 29-OCT-20 | CONNECT | +----------+-------------+-----------+-----------------------------------------------------------------+