数据加密和访问控制可以大幅降低安全风险,但对于具备权限的用户,仍然需要记录其操作,以防止用户登录信息泄露,或者访问权限被滥用。审计功能可以加强企业对数据安全、合规等方面的要求,是跟踪用户行为最主要的工具。

目前仅OceanBase 数据库的 Oracle 模式支持安全审计功能。

官网地址:开始审计 -V3.2.4-OceanBase 数据库文档-分布式数据库使用文档

本博客根据官网文档进行的手动实践

开启审计功能并设置审计记录存储位置

1.使用 sys 用户登录到 Oracle 租户解锁 ORAAUDITOR 用户。
ALTER USER ORAAUDITOR ACCOUNT UNLOCK;
为了便于 ORAAUDITOR 用户直接修改相关配置项的值,可通过 GRANT 语句给 ORAAUDITOR 用户授予 ALTER SYSTEM 权限。
GRANT ALTER SYSTEM TO ORAAUDITOR;

修改ORAAUDITOR用户密码,这里很奇怪,官网上说企业版V3的初始密码是ORAAUDITOR但登录不上去,需要手动修改密码

ALTER USER ORAAUDITOR IDENTIFIED BY 123456;
2.使用ORAAUDITOR 用户登录到 Oracle 租户。

3.启用审计功能并设置审计记录的存储位置。
ALTER SYSTEM SET audit_trail = 'DB,EXTENDED';

设置审计规则

使用  AUDIT 语句设置审计规则。可以设置语句审计操作类型和对象审计操作类型的审计规则。
对用户  user1 的表  tbl1 的所有  INSERTUPDATE 和  DELETE 操作进行审计。
注意前提是有这个用户和用户下的这张表。
AUDIT INSERT,UPDATE,DELETE ON user1.tbl1;

查看  ALL_DEF_AUDIT_OPTS 中的审计规则。
SELECT * FROM SYS.ALL_DEF_AUDIT_OPTS;

在tbl1表中插入数据。

查看 DBA_AUDIT_TRAIL 中的审计记录。

SELECT USERNAME,USERHOST,TIMESTAMP,SQL_TEXT FROM SYS.DBA_AUDIT_TRAIL;

可以看到sql语句已经写入到了内部表并且记录了sql语句,但在磁盘中并没有发现日志,这是因为我们之前设置了

ALTER SYSTEM SET audit_trail = 'DB,EXTENDED';

如果该参数设置为OS,则审计会记录到磁盘日志。

审计用户登录

审计指定用户的登录

以  ORAAUDITOR 用户登录,设置审计用户  aud 登录。
AUDIT SESSION BY user1;

审计所有用户登录

以  ORAAUDITOR 用户登录,设置审计所有用户登录。
AUDIT SESSION;

查看审计记录

SELECT USERNAME,USERHOST,TIMESTAMP,SQL_TEXT FROM SYS.DBA_AUDIT_TRAIL;

审计用户操作

审计指定用户在所有表上成功的 DDL 操作

以 ORAAUDITOR 用户登录,设置审计用户 user1 在所有表上成功的 DDL 操作。

AUDIT TABLE BY user1 WHENEVER SUCCESSFUL;

查看 DBA_AUDIT_TRAIL 表中用户 user1 执行成功的审计记录。

SELECT USERNAME,USERHOST,TIMESTAMP,SQL_TEXT FROM SYS.DBA_AUDIT_TRAIL WHERE USERNAME = 'USER1';

审计指定用户的所有操作,包括登录退出

以  ORAAUDITOR 用户登录,审计用户  user1 的所有操作。
AUDIT ALL STATEMENTS BY user1;

SELECT USERNAME,USERHOST,TIMESTAMP,SQL_TEXT FROM SYS.DBA_AUDIT_TRAIL WHERE USERNAME = 'USER1';
Logo

了解最新的技术洞察和前沿趋势,参与 OceanBase 定期举办的线下活动,与行业开发者互动交流

更多推荐