数据库审计#

本章节描述了 OushuDB 的审计功能。

概述#

数据库安全对数据库系统来说至关重要。数据库审计是数据库安全中必不可少的部分。

数据库的审计是指追踪和记录数据库系统或者数据库当中发生的事件。

数据库审计的方式目前一般有两种:将审计条目插入数据库表和记录日志文件。OushuDB 的审计功能采取记录日志文件的方式。

OushuDB 审计功能目前支持:

  • 打开和关闭审计功能

  • 配置审计策略

  • 查看审计日志

  • 维护审计日志

OushuDB 审计日志的格式:

名称

描述

类型

timestamp

时间

timestamp with timezone

username

用户

string

database name

数据库

string

process id

进程号

int32

remote host

ip地址

string

remote port

端口号

string

sessionid

session号

int32

cmdid

command号

int32

vci

虚拟集群实例

string

audit type

审计类型

enum {”AUDIT_LOGIN”, “AUDIT_LOGOUT”, ”AUDIT_DCL”, “AUDIT_DDL”, “AUDIT_DML”, “AUDIT_DQL”, “AUDIT_SET”, “AUDIT_UDF”}

audit result

审计结果

enum {”SUCCESS”, “FAILED”}

statement

语句

string

affected rows

影响行数

int64

object name

审计对象

json string

object info

对象信息

json string

detail info

详细信息

string

打开和关闭审计功能#

审计功能的总开关通过参数 audit_enabled 控制,目前不支持动态加载,设置之后需要重启数据库主节点。

oushudb config -c audit_enabled -v on
oushudb restart allmains

配置审计策略#

OushuDB 支持的审计策略#

策略名称

描述

默认值

audit_connection

用户连接(登录、注销)审计

LOGIN, LOGOUT

LOGIN, LOGOUT

audit_type

操作审计类型

DML, DDL, DQL, DCL, EXEC_FUNC, COPY_IN, COPY_OUT, SET

DDL, DCL, SET

audit_user

用户审计

username 字符串

none (none 表示审计所有用户)

使用 OushuDB 命令行配置审计策略#

OushuDB 支持审计策略的动态加载。

以配置 audit_typeDDL DML DQL 为例:

oushudb config -c audit_type -v "DDL, DML, DQL"
oushudb reload cluster -a

查看审计日志#

审计日志的目录为 ${OUSHUDB_LOG_PATH}/audit, OUSHUDB_LOG_PATH 环境变量可以通过如下命令获取:

source /usr/local/oushu/oushudb/oushudb_path.sh
env ${OUSHUDB_LOG_PATH}

审计日志的文件名称为 oushudb-audit-${worker_number}-${timestamp}.csv

其中 ${worker_number} 是指当前工作的审计线程,${time_stamp} 是指审计线程创建审计日志文件时获取的系统时间戳。

审计日志的查看可以通过 Skylab 中 Lava 产品的数据库审计界面查看。

维护审计日志#

审计日志原生支持文件的翻转 (log rotaion) 和清理 (purge) 功能。

审计日志的默认翻转策略是:

  • 1 GB 进行一次日志翻转

  • 24 小时进行一次日志翻转

  • 审计目录维护 10 GB 的日志容量