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