# SQL 审计 ## 前提条件 数据库审计日志存储在 ES(ElasticSearch,当前版本8)中。当需要开启数据库审计时,需要先部署 ES 集群或将一个ES集群注册为日志存储服务。如果未指定作为日志存储服务器的 ES 集群,进入审计页面将会提示用户部署或指定 ES 集群。 ![img.png](images/deploy-es.png) ## 审计日志 审计日志列表提供了“SQL审计服务选择”、“时间筛选”、“全局搜索”、“高级搜索”、“日志导出”等功能。 ![img.png](images/audit-log-list.png) ### 集群选择 通过左上角集群下拉框可以切换集群,默认是上次退出时浏览的集群, 如果第一次进入审计日志功能,则为字母序的第一个集群。 ### 自定义日志展示字段 因审计日志字段较多,支持用户配置自己的用户视图。点击右上角小齿轮图标,弹出字段配置窗口。在字段配置窗口中可勾选字段,并可通过拖动字段调整展示顺序。 ![audit-log-field-setting.png](images/audit-log-field-setting.png) ### 时间条件筛选 在审计日志列表上方有【近5分钟】、【近1小时】、【近1天】、【近7天】的快捷按钮,点击后,显示相应时间范围内的日志。也可通过时间选择框,手动选择时间范围,展示相应的日志。 ### 审计类型 / 操作类型 / 对象类型 筛选 在审计日志列表标题栏点击对应字段将列出当前日志库中该字段所有的枚举值,点击某个枚举值可进行筛选。 ### 全局搜索 在右上角的搜索框输入关键词,多个关键词以空格隔开,关键词将在所有字段中查询,包含任一关键词的日志都将被返回。 关键词匹配的逻辑: sql语句字段按照**分词后**的文本匹配,其他字段则为**完整匹配**,即要和该字段内容完全相同才认定为匹配成功 ### 高级搜索 高级搜索功能可对多个字段进行筛选。 时间字段支持范围查询 用户、数据库、主机名、端口号、对象名称、支持模糊匹配 审计类型、操作类型、对象类型支持选择多个枚举值进行筛选 sql语句 支持分词查询。 (**注意** 请不要在查询条件输入不完整的单词,否则可能匹配不成功) ![audit-log-advance.png](images/audit-log-advance.png) ### 日志详情 点击某一条日志的 ID 进入日志详情页面。在该页面显示该条审计日志的所有字段信息,并可以复制本次审计记录的 SQL 语句。 ![img.png](images/audit-log-detail.png) ### 日志导出 点击页面右上角的 **<导出>** 按钮,可以导出本页内选中日志或导出本页全部日志,将导出xlsx格式的日志文件 ## SQL审计服务 ### SQL审计服务列表 审计策略列表中会列出当前 Skylab 下所有审计服务其采集状态、日志开关的状态。 ![img.png](images/audit-list.png) #### SQL审计服务运行详情 点击审计服务的名称进入SQL审计服务运行详情 ![img.png](images/audit-list-detail.png) * **采集节点** 显示所有关联角色的节点(对于SQL审计服务即main节点)的采集进程状态,并可以查看节点上的采集工具配置和日志,对采集进程进行启停。 点击 <采集进程配置文件> 可以查看配置文件内容和当前采集配置的版本号,如果某个节点的采集配置落后可以 **<点击同步最新配置>** 按钮来同步最新的采集配置 **采集节点同步** 当审计服务关联的main节点扩容后,节点不会自动同步采集配置并启动采集进程,此时需要点击右上角的 **<同步>** 按钮,将最新的采集配置同步到所有节点并重启采集进程,实现扩容节点的采集配置同步。 * **滚动索引** SQL审计服务开启后,日志将不断积累,根据用户配置的生命周期策略,将滚动出多个新索引,这些索引保存了当前SQL审计服务的所有日志。 在这个模块可以看到所有的相关索引及其相关信息,并可删除索引(当前写入索引不可删除)。 ### 新增SQL审计服务 点击 <新增SQL审计服务> 按钮,将弹出审计服务配置窗口: #### 第一步配置审计项 勾选开启针对哪些 SQL 的操作审计。 ![img.png](images/audit-settings-step1.png) #### 第二步选择需要开启审计的集群 ![img.png](images/audit-settings-step2.png) **关联集群** 为用户选择的需要开启审计的集群 **关联角色** 为审计服务关联的集群内的角色,对于审计就是DB集群的main节点,日志产生在main节点 **已关联的日志服务** 展示当前选择的集群上的其他日志服务,作为参考 #### 第三步 配置采集设置和存储设置 ![img.png](images/audit-settings-step3-1.png) ![img.png](images/audit-settings-step3-2.png) **日志采集设置** * **采集频率**:采集工具 Filebeat 监控 DB集群 审计日志文件的变化,每隔 x 秒检查一次。 * **单次个消息最大字节数**:Filebeat 收集日志时,如果单条日志长度超过该值,后续内容会被舍弃。该设置与 Filebeat 的“queue.mem.events”(采集队列中采集事件数量的最大值,默认 3200)相乘,即为 Filebeat 理论上**可能**占用的最大内存量。 * **日志起始格式**:Filebeat 收集日志时,使用该正则格式匹配一条新日志的开始,匹配成功则认为后续内容是一条新日志,直到匹配到下一个日志起始,**非特殊情况不建议修改此默认值**。 **日志存储字段** * 采集后的日志在ES中的schema,仅作预览,不可修改 **日志存储设置** * **索引名称** 采集后的日志保存在ES中的索引别名, 真实索引名称将使用"_<索引名称>--_"的格式 * **分片数** ES 索引的分片数设置, 建议分片数和ES的master节点数一致以取得更好的性能。 * **备分片数** ES 索引的备分片数设置,每一条数据会有x个备份, 建议1即可。如果数据节点比较多,为保障数据容灾可适当提高备分片数,同时更多的分片数会提高读取性能。 * **滚动为温/冷数据的周期** 保存在ES中超过设定时间的索引将会进入对应的生命周期。关于生命周期的解释见下文。 * **最长保留时间** 保存在ES中超过设定时间的索引将会被删除 #### 第四步 设置基础信息和配置确认 ![img.png](images/audit-settings-step4.png) - 可以对审计服务的名称进行修改,并添加备注 - 可对相关配置文件进行预览 - 确认无误后点击部署即开启审计服务 ### ES 设置的补充说明 关于ES的索引生命周期的解释: Hot(热):索引正在被积极更新和查询。(支持读写操作) Warm(温):索引不再被更新但仍然被查询。(仅支持只读,不允许插入和更新) Cold(冷):索引不再被更新且很少被查询。信息仍然需要可被搜索,但如果这些查询稍微慢一些也没关系。(仅支持只读,不允许插入和更新) Delete(删除):索引不再需要并且可以安全地移除。