审计日志

SequoiaDB 巨杉数据库审计日志记录了用户对数据库执行的所有操作。通过审计日志,用户可以对数据库进行故障分析、行为分析和安全审计等操作,能有效帮助用户获取数据库的执行情况。

同时,SequoiaDB 提供节点级审计日志,用户可以通过配置决定同一级别不同角色的审计日志。

操作类型掩码

SequoiaDB 开启或关闭审计日志需要配置操作类型掩码。用户开启审计日志后的每次操作,数据库都会根据用户配置的审计日志操作类型掩码输出对应的审计日志,可配置的审计日志操作类型掩码如下:

操作类型掩码操作类型
ACCESS登入登出
CLUSTER集群操作,支持的操作:创建组、删除组
SYSTEM系统操作,支持的操作:重启节点
DCL用户操作,支持的操作:创建用户、修改用户、删除用户
DDL集合空间和集合操作,支持的操作:创建集合空间、修改集合空间、删除集合空间、创建集合、修改集合及删除集合
DML数据操作,支持的操作:插入数据、更新数据和删除数据
DQL查询数据
INSERT插入数据
UPDATE更新数据
DELETE删除数据
OTHER其他,以上类型之外的操作

Note:

  • 支持配置”ALL”和”NONE”,配置”ALL”则支持所有操作类型的审计日志,配置”NONE”则禁止所有类型的审计日志
  • 支持使用”|”连接多个操作类型,如”DDL|DML|DQL”
  • 修改配置生效后执行 invalidateCache() 清除 NODE/CATALOG/AUTH 缓存

开启审计日志

审计日志默认开启,默认配置的操作类型为”SYSTEM|DDL|DCL”,用户可以通过修改配置文件的方式修改审计日志操作类型掩码。

Note:

SequoiaDB 巨杉数据库 v2.8.5 及以上版本配置节点 auditmask 后在线动态生效,v2.8.5 以下版本需要重启节点生效,详情可参考配置项参数中 auditmask 参数说明。

示例

以修改 coord 节点(11810)的 auditmask 取值为”DML”为例,修改步骤如下:

  1. 在数据库安装目录下修改配置文件 sdb.conf

    1. $ vi ./conf/local/11810/sdb.conf
  2. 配置 auditmask 的值为”DML”

    1. auditmask=DML
  3. 进入 SDB Shell

    1. $ ./bin/sdb
  4. 对 coord 节点进行配置重新加载

    1. > var db = new Sdb( "localhost", 11810 )
    2. > db.reloadConf( { Global:false } )

    Note:

    用户可使用 reloadConf() 重新加载配置文件。

查看审计日志配置

用户在数据库安装目录下执行 bin/sdblist --detail --expand 可以查看 auditmask 取值。

示例

  • 查看 coord 节点的审计日志配置信息,sdblist 命令详解可参考 bin/sdblist --help 帮助信息。

    1. $ ./bin/sdblist --detail --expand -r coord
  • 如下示例只展示审计日志相关配置:auditpath 表示审计日志文件路径,默认为 数据文件路径/diaglog/sdbaudit.log;auditnum 表示审计日志文件个数,默认为 20;auditmask 表示审计日志操作类型掩码,默认为”SYSTEM|DDL|DCL”。 其他配置以省略号“……”表示,返回结果如下:

    1. ......
    2. auditpath : /opt/sequoiadb/database/coord/11810/diaglog/
    3. auditnum : 20
    4. auditmask : SYSTEM|DDL|DCL
    5. ......

查看审计日志信息

SequoiaDB 只能查看节点路径下的审计日志文件。如果审计日志文件路径非默认路径,可以在数据库安装目录下执行 bin/sdblist --detail 查看 auditpath,再查看对应路径下的审计日志文件。

sdbaudit.log 审计日志内容包含如下字段:

字段说明
Type操作类型,如”DML”
PID进程号
TID线程号
UserName操作用户,如”admin”
From操作地址,如”192.168.11.11:88888”
Action操作,如”INSERT”
Result操作结果,如”SUCCEED(0)” ,其中括号内的数字为操作结果返回码
ObjectType对象类型,如”COLLECTION”
ObjectName对象名,如”sample.employee”
Message详细信息

Note:

Result 中的操作结果返回码为 0 时表示操作成功,非 0 则表示操作失败(如 -33 创建集合失败)。非 0 返回码对应解读信息可参考错误码

示例

在 SequoiaDB 创建集合 sample.employee,查看当前 coord 节点数据目录下的 sdbaudit.log 审计日志文件,内容如下:

  1. 2018-08-24-17.45.49.444138 Type:DDL
  2. PID:7479 TID:5011
  3. UserName: From:192.168.3.24:32974
  4. Action:COMMAND(create collection) Result:SUCCEED(0)
  5. ObjectType:COLLECTION ObjectName:sample.employee
  6. Message:
  7. Option: { "Name": "sample.employee" }

关闭审计日志

以关闭 coord 节点(11810)的审计日志为例,关闭步骤如下:

  1. 在数据库安装目录下修改配置文件 sdb.conf

    1. $ vi ./conf/local/11810/sdb.conf
  2. 配置 auditmask 的值为”NONE”

    1. auditmask=NONE
  3. 进入 SDB Shell

    1. $ ./bin/sdb
  4. 对 coord 节点进行配置重新加载

    1. > var db = new Sdb( "localhost", 11810 )
    2. > db.reloadConf( { Global:false } )