Apache Doris SQL日志审计

作者: 张家锋

1. 介绍

Doris 的审计日志插件是在 FE 的插件框架基础上开发的。是一个可选插件。用户可以在运行时安装或卸载这个插件。

该插件可以将 FE 的审计日志定期的导入到指定 Doris 集群中,以方便用户通过 SQL 对审计日志进行查看和分析。

这里的数据其实是Doris FE log目录下的 fe.audit.log 文件中的数据

2. 安装部署

2.1 编译

在 Doris 代码目录下执行 sh build_plugin.sh

编译完成后会在 fe_plugins/output 目录下得到 auditloader.zip 文件

2.2 安装

您可以将这个文件放置在一个 http 服务器上,或者拷贝auditloader.zip(或者解压auditloader.zip)到所有 FE 的指定目录下。这里我们使用后者。 FE的插件框架当前是实验性功能,Doris中默认关闭,需要在FE的配置文件中,增加plugin_enable = true启用plugin框架

2.2.1 配置信息

plugin.conf 配置信息:

## 批量的最大大小,默认为 50MB
max_batch_size=52428800

## 批量加载的最大间隔,默认为 60 秒
max_batch_interval_sec=60

## 加载审计的 Doris FE 主机,默认为 127.0.0.1:8030。

## 这应该是Stream load 的主机端口
frontend_host_port=127.0.0.1:8030

## 审计表的数据库
database=doris_audit_db__

## 审计表名,保存审计数据
table=doris_audit_tbl__

## 用来连接doris的用户. 此用户必须对审计表具有 LOAD_PRIV 权限.
user=root

## 用来连接doris的用户密码
password=

安装插件前,需要创建之前在 plugin.conf 中指定的审计数据库和表。其中建表语句如下:

这里的表名,你可以根据自己情况修改,修改后要注意修改 plugin.conf 中的内容

create table doris_audit_tbl__
(
    query_id varchar(48) comment "查询唯一ID",
    time datetime not null comment "查询开始时间",
    client_ip varchar(32) comment "查询客户端IP",
    user varchar(64) comment "查询用户名",
    db varchar(96) comment "查询的数据库",
    state varchar(8) comment "查询状态: EOF, ERR, OK",
    query_time bigint comment "查询执行时间(毫秒)",
    scan_bytes bigint comment "查询扫描的字节数",
    scan_rows bigint comment "查询扫描的记录行数",
    return_rows bigint comment "查询返回的结果记录数",
    stmt_id int comment "SQL语句的增量ID",
    is_query tinyint comment "这个是否是查询: 1 or 0",
    frontend_ip varchar(32) comment "执行这个语句的FE IP",
    stmt varchar(5000) comment "原始语句,如果超过 5000 字节,则进行修剪"
) engine=OLAP
duplicate key(query_id, time, client_ip)
partition by range(time) ()
distributed by hash(query_id) buckets 1
properties(
    "dynamic_partition.time_unit" = "DAY",
    "dynamic_partition.start" = "-30",
    "dynamic_partition.end" = "3",
    "dynamic_partition.prefix" = "p",
    "dynamic_partition.buckets" = "1",
    "dynamic_partition.enable" = "true",
    "replication_num" = "3"
);

其中 dynamic_partition 属性根据自己的需要,选择审计日志保留的天数。

之后,连接到 Doris 后使用 INSTALL PLUGIN 命令完成安装。安装成功后,可以通过 SHOW PLUGINS 看到已经安装的插件,并且状态为 INSTALLED

完成后,插件会不断的以指定的时间间隔将审计日志插入到这个表中。

2.2.1 安装SQL语法

INSTALL PLUGIN FROM [source] [PROPERTIES ("key"="value", ...)]

source 支持三种类型:

  1. 指向一个 zip 文件的绝对路径。
  2. 指向一个插件目录的绝对路径。
  3. 指向一个 http 或 https 协议的 zip 文件下载路径 PROPERTIES 支持设置插件的一些配置,如设置zip文件的md5sum的值等

2.2.2 安装示例

  1. 安装一个本地 zip 文件插件:

    INSTALL PLUGIN FROM "/home/users/doris/auditdemo.zip";
    
  2. 安装一个本地目录中的插件:

    INSTALL PLUGIN FROM "/home/users/doris/auditdemo/";
    
  3. 下载并安装一个插件:

    INSTALL PLUGIN FROM "http://mywebsite.com/plugin.zip";
    
  4. 下载并安装一个插件,同时设置了zip文件的md5sum的值:

    INSTALL PLUGIN FROM "http://mywebsite.com/plugin.zip" PROPERTIES("md5sum" = "73877f6029216f4314d712086a146570");

安装完成以后,你就可以在你创建的审计数据库中的审计表里看到SQL操作审计日志数据了

文章列表

更多推荐

更多
  • Pulsar消息队列-一套高可用实时消息系统实现 实时消息【即时通信】系统,有群聊和单聊两种方式,其形态异于消息队列:1 大量的 group 信息变动,群聊形式的即时通信系统在正常服务形态下,瞬时可能有大量用户登入登出。2 ...
  • Pulsar消息队列-Pulsar对比Kafka笔记 很多人查看 Pulsar 之前可能对 Kafka 很熟悉,参照上图可见二者内部结构的区别,Pulsar 和 Kafka 都是以 Topic 描述一个基本的数据集合,Topic 数据又分为若干 Partition,即对数据进行逻辑上的 ...
  • Pulsar消息队列-对 2017 年一套 IM 系统的反思 信系统的开发,前前后后参与或者主导了六七个 IM 系统的研发。上一次开发的 IM 系统的时间点还是 2018 年,关于该系统的详细描述见 [一套高可用实时消息系统实现][1] ...
  • Apache APISIX文档-快速入门指南-如何构建 Apache APISIX 如何构建 Apache APISIX,步骤1:安装 Apache APISIX,步骤2:安装 etcd,步骤3:管理 Apache APISIX 服务,步骤4:运行测试案例,步骤5:修改 Admin API key,步骤6:为 Apac
  • Apache APISIX文档-快速入门指南-快速入门指南 快速入门指南,概述,前提条件,第一步:安装 Apache APISIX,第二步:创建路由,第三步:验证,进阶操作,工作原理,创建上游服务Upstream,绑定路由与上游服务,添加身份验证,为路由添加前缀,APISIX Dashboard
  • Apache APISIX文档-架构设计-APISIX APISIX,软件架构,插件加载流程,插件内部结构,配置 APISIX,插件加载流程,比如指定 APISIX 默认监听端口为 8000,并且设置 etcd 地址为 http://foo:2379, 其他配置保持默认。在 ...
  • Apache APISIX文档-架构设计-Service Service 是某类 API 的抽象(也可以理解为一组 Route 的抽象)。它通常与上游服务抽象是一一对应的,Route 与 Service 之间,通常是 N:1 的关系,参看下图。不同 Route 规则同时绑定到一个 Service ...
  • Apache APISIX文档-架构设计-Plugin Config 如果你想要复用一组通用的插件配置,你可以把它们提取成一个 Plugin config,并绑定到对应的路由上。举个例子,你可以这么做:创建 Plugin config,如果这个路由已经配置了 plugins,那么 Plugin config ...
  • Apache APISIX文档-架构设计-Debug Mode 注意:在 APISIX 2.10 之前,开启基本调试模式曾经是设置 conf/config.yaml 中的 apisix.enable_debug 为 true。设置 conf/debug.yaml 中的选项,开启高级调试模式。由于 ...
  • Apache APISIX文档-架构设计-Consumer 如上图所示,作为 API 网关,需要知道 API Consumer(消费方)具体是谁,这样就可以对不同 API Consumer 配置不同规则。授权认证:比如有 [key-auth] 等。获取 consumer_...
  • 近期文章

    更多
    文章目录

      推荐作者

      更多