#审计

YashanDB数据库支持统一审计,能够记录用户的每一次操作,方便后期问题审查。

统一审计主要利用策略和条件在数据库内部有选择地执行有效的审计。将现有审计跟踪统一为单一审计跟踪,从而简化了管理,提高了数据库生成的审计数据的安全性。

统一审计操作流程如下:

YashanDB语法上支持权限审计、行为审计和角色审计,逻辑上包括了系统级、语句级、对象级进行审计,支持对指定用户或所有用户进行审计,并支持对系统特权进行审计。审计记录保存在物理表中,拥有AUDIT_ADMIN或AUDIT_VIEWER角色权限的用户可以通过审计视图UNIFIED_AUDIT_TRAIL查看审计日志信息。

# 审计开关

YashanDB通过配置参数UNIFIED_AUDITING控制审计开关。

UNIFIED_AUDITING参数的默认值为false,此状态下系统不会进行任何审计。

通过如下语句将UNIFIED_AUDITING设为true:

ALTER SYSTEM SET UNIFIED_AUDITING = true;

分布式部署中需指定type参数,该参数用于指定节点类型,参数值为CN|DN|MN|ALL,可选择所需节点控制审计开关。

ALTER SYSTEM SET UNIFIED_AUDITING = true TYPE=ALL;

成功执行后,审计开关被打开,此时系统将执行已创建并已使能的各项审计策略。

Note

备数据库不会执行审计,即使打开了审计开关。

最大支持创建512个审计策略。

# 创建审计策略

拥有AUDIT SYSTEM权限的用户可以创建审计策略对指定审计项执行审计,包括权限审计项、行为审计项和角色审计项。关于创建审计策略的具体操作请查阅开发手册CREATE AUDIT POLICY语句介绍。

审计策略被成功创建后,可通过AUDIT_UNIFIED_POLICIES视图查看其定义信息。

对于不再使用的审计策略,可以在取消使能后,通过DROP AUDIT POLICY语句对其进行删除。

# 审计策略使能

审计策略被创建后并不生效,还需通过AUDIT POLICY语句对其进行使能。创建与使能的分层处理可以让用户更清晰方便地进行审计策略在线管理,创建阶段只需单纯考虑策略,使能阶段则可以加入策略针对用户、策略附加条件(例如数据库操作成功才审计,减少无效记录)等一些处理。

使能后,用户执行的语句若在审计项内则触发审计。

可通过AUDIT_UNIFIED_ENABLED_POLICIES视图查看已使能的审计策略信息。

审计策略对应的审计项不再需要审计时,可以通过NOAUDIT POLICY语句取消使能,取消使能后会立即停止对这些审计项的审计。

# 修改审计策略

审计策略的修改包括对其审计项目、审计条件、执行频率等各项的增删操作,具体操作请查阅开发手册ALTER AUDIT POLICY语句介绍。

YashanDB支持对审计策略在线动态修改,立即生效,系统对数据库操作的审计项目相应发生改变。

# 查看审计日志

用户可以通过审计视图UNIFIED_AUDIT_TRAIL查看审计日志,按照日期、审计项类型、对象名称、操作用户等检索到详细的安全访问、权限操作记录等信息。

# 审计日志清理

对于已备份,或已满足保留时效的审计数据,可以执行清理,避免过多占用磁盘空间。

YashanDB通过DBMS_AUDIT_MGMT高级包提供如下清理策略供用户选择:

  • 设置清理时间点:设置清理时间点可以更灵活地指定审计数据清理范围。
  • 手动清理:在必要时对审计日志执行手动删除,释放空间。
  • 自动清理:通过建立自动清理任务,由系统定期执行审计数据删除。

# 异步审计

为减少审计对数据库性能的影响,YashanDB默认采用异步审计的方式写审计记录(由AUDIT_QUEUE_WRITE参数控制开关)。

异步审计将审计数据信息先写入审计数据队列,当审计数据队列达到阈值(数据刷新时间间隔、数据队列满)时,再将数据批量插入审计记录表中。阈值可通过AUDIT_FLUSH_INTERVAL和AUDIT_QUEUE_SIZE进行调整。

异步审计可以减少对数据库性能的影响,但在一些异常情况下(例如数据库异常宕机)可能导致丢失部分审计数据。