数据库审计 DBAudit

2019/09/26 Chenxin

数据库审计

基本概念

数据库审计(简称DBAudit)能够实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行告警,对攻击行为进行阻断。它通过对用户访问数据库行为的记录、分析和汇报,用来帮助用户事后生成合规报告、事故追根溯源,同时加强内外部数据库网络行为记录,提高数据资产安全。

数据库审计是数据库安全技术之一,数据库安全技术主要包括:

数据库漏扫

数据库加密

数据库防火墙

数据脱敏

数据库安全审计系统

概括起来主要表现在以下三个层面:

  1. 管理风险:主要表现为人员的职责、流程有待完善,内部员工的日常操作有待规范,第三方维护人员的操作监控失效等等,离职员工的后门,致使安全事件发生时,无法追溯并定位真实的操作者。
  2. 技术风险:Oracle, SQL Server是一个庞大而复杂的系统,安全漏洞如溢出, 注入层出不穷,每一次的CPU(Critical Patch Update)都疲于奔命, 而企业和政府处于稳定性考虑,往往对补丁的跟进非常延后,更何况通过应用层的注入攻击使得数据库处于一个无辜受害的状态。
  3. 审计层面:现有的依赖于数据库日志文件的审计方法(阿里云好像是这种),存在诸多的弊端,比如:数据库审计功能的开启会影响数据库本身的性能、数据库日志文件本身存在被篡改的风险,难于体现审计信息的有效性和公正性。此外,对于审计数据的挖掘和迅速定位也是任何审计系统必须面对和解决的一个核心问题之一。

伴随着数据库信息价值以及可访问性提升,使得数据库面对来自内部和外部的安全风险大大增加,如违规越权操作、恶意入侵导致机密信息窃取泄漏,但事后却无法有效追溯和审计。

产品分类

企业产品

就国内而言,做数据库审计产品的公司越来越多.比如:安华金和、天融信、安恒、绿盟,Themis宜信公司等等.

云平台数据库审计

阿里云,aws等

开源类

目前好像主要为Yearning

Yearning MYSQL 审核平台

参考

http://yearning.io/ 官网

https://guide.yearning.io/ 手册,最新的文档,建议参考此官网说明(因更新比较快,不建议沿用本文档).

简介

Yearning是由杭州的一个运维个人开发,目前已开源.以后可能会商业化.

  • 主要功能

    SQL查询/查询导出/查询自动补全

  • SQL审核

    流程化工单/SQL语句检测/SQL语句执行/SQL回滚

  • 历史审核记录

    查询审计

  • 推送

    E-mail工单推送/钉钉webhook机器人工单推送

  • 其他

    LDAP登陆/用户权限及管理/拼图式细粒度权限划分(共12项独立权限,可随意组合)

安装部署

mysql版本必须5.7及以上版本.安装部署请参考"mysql运维"文档部分.

请事先自行安装完毕且创建Yearning库,字符集应为UTF-8/UTF8mb4

下载地址

https://github.com/cookieY/Yearning/releases 选择最新的Yearning-x.x.x.linux-amd64.zip

解压

unzip Yearning-2.1.3.linux-amd64.zip

目录

mv Yearning-go /usr/local/Yearning

环境变量 /etc/profile 添加

export PATH='/usr/local/Yearning:/usr/local/mysql/bin:/usr/local/mysql/lib':$PATH

文件结构与配置文件解析

目录结构

[root@ipaclient Yearning]# tree /usr/local/Yearning/
/usr/local/Yearning/
├── conf.toml #配置文件
├── dist
│   ├── css
│   │   ├── app.90071506.css
...
│   ├── fonts
│   │   ├── ionicons.143146fa.woff2
│   │   ├── ionicons.99ac3308.woff
│   │   └── ionicons.d535a25a.ttf
│   ├── icon.png
│   ├── img
...
│   ├── index.html
│   ├── js
...
│   └── particlesjs-config.json
├── Dockerfile #可以docker方式部署
├── #\ README
└── Yearning

配置文件

[root@ipaclient Yearning]# cat conf.toml
[Mysql]
Db = "Yearning"
Host = "127.0.0.1"
Port = "10306"
Password = "sjE...8sg"
User = "Yearning" [General]
SecretKey = "yhgjqheupqjsYNsh"

关于SecretKey

SecretKey是token/数据库密码加密/解密的salt.建议所有用户在初次安装Yearning之前将SecretKey更改(不更改将存在安全风险).

格式: 大小写字母均可, 长度必须为16位

特别注意:此key仅可在初次安装时更改,之后不可再次更改.如再次更改会导致之前已存放的数据源密码无法解密,最终导致无法获取相关数据源信息.

初始化与启停

初始化数据结构

./Yearning -m

如要再次初始化,请先把yearning表删除,否则重复执行无效.

[root@ipaclient Yearning]# Yearning -m

(/var/jenkins_home/workspace/Yearning-go/src/service/migrate.go:31)
[2019-09-29 16:13:30] [0.57ms] INSERT INTO `core_accounts` (`username`,`password`,`rule`,`department`,`real_name`,`email`) VALUES ('admin','pbkdf2_sha256$12...GUFy$3b63+x2/XPgg/6ldvcLFkzQZjYNZ6Gg/S6d/TOxkmrE=','admin','DBA','超级管理员','')
[1 rows affected or returned ] (/var/jenkins_home/workspace/Yearning-go/src/service/migrate.go:39)
[2019-09-29 16:13:30] [0.89ms] INSERT INTO `core_global_configurations` ...
[1 rows affected or returned ] (/var/jenkins_home/workspace/Yearning-go/src/service/migrate.go:46)
[2019-09-29 16:13:30] [0.51ms] INSERT INTO `core_graineds` (`username`,`rule`,`permissions`) VALUES ('admin','','{"ddl":"1","ddl_source":[],"dml":"1","dml_source":[],"user":"1","base":"1","auditor":[],"query":"1","query_source":[]}')
[1 rows affected or returned ]
初始化成功!
用户名: admin
密码:Yearning_admin

启停,浏览器访问

默认启动: ./Yearning -s

参数启动: ./Yearning -s -b "172.27.80.35" -p "8000"

打开浏览器 http://172.27.80.35:8000 默认密码:admin/Yearning_admin ,登陆控制台后,修改密码为 YearningLG2019

其他说明

https://guide.yearning.io/attention.html 注意事项(尤其是回滚,需要binlog).

数据源配置

这里是从Yearning这台机器发起的连接,连接到目标主机的mysql.连接的是对方的3306端口,如果给予的该主机用户拥有足够权限,那么可以看到和操作所有库.

数据操作申请流程/其他功能模块

用户申请要查询数据库时,直接在查询的功能里申请.Yearning的DML不包含select.其他DML,如insert,update等,在DML里申请工单.

工单可以指定日期和具体时间来计划执行(类似crontab),无需人工介入.如果指定时间超过了审批的时间(比审批时间点早),那么最终用户审批后,Yearning会自动立即执行.

发起人A申请后,由指定人admin审批,admin批准用户B来执行,B用户在审核里审批.然后即可以人工点"执行"或自动执行SQL语句了.

通知

支持 钉钉 / 邮件 推送通知.申请/审批/执行 都会自动发送推送消息至指定的钉钉群或邮件.

钉钉webhook地址类似: https://oapi.dingtalk.com/robot/send?access_token=c4d9a861...3dc

打开"钉钉推送开关",点击保存.

本地用户管理,LDAP用户测试

1.这里创建本地用户测试一下.

用户: yn-test

密码: yn123LG

注册完成后,需要到"用户权限"里,赋予权限(admin用户登录操作).

2.LDAP用户

LDAP设置如下

服务地址url: 47.91.215.12:389

LDAP管理员DN: uid=admin,cn=users,cn=accounts,dc=chanix,dc=top

LDAP管理员密码: xxxxxx

LDAP搜索规则: uid

LDAP_SCBASE: cn=users,cn=accounts,dc=chanix,dc=top

保存,刷新.

登陆的时候,用户名下勾选LDAP.

每次有新的LDAP用户登录后,Yearning的用户管理里,就会多出该用户.然后通过Yearning本地管理员对它进行赋权.

3.主动申请权限

普通用户登录后,在自己的portal上,可以"查看权限","申请权限".跟管理员获取对应的需要的权限.

备份恢复

备份与恢复Yearing数据库(mysql里).具体略.

服务更新

如版本更新有sql变动,请下载最新版本并执行以下命令进行数据结构更新(2.0.6版本之后升级无需执行该命令,程序启动时会自动检测是否需要更新表数据)

./Yearning -x

数据库审计 DBAudit - Yearning 最新版的更多相关文章

  1. 机器数据的价值 - Web 访问日志和数据库审计日志

    计算机数据 大量的数据流,不断增长的来源,蕴含着巨大的价值 在 Splunk,我们大量谈及计算机数据.这些数据是指在数据中心.“物联网”和互联设备世界中运行的所有系统产生的数据.其中包括支撑组织的应用 ...

  2. OCA读书笔记(11) - 实现Oracle数据库审计

    11 Implementing Oracle Database Auditing 描述DBA对于安全和审计的职责使能标准的数据库审计安全审计选项查看审计信息维护审计路径 最小权限原则只在计算机上安装所 ...

  3. Access数据库审计工具mdbtools

    Access数据库审计工具mdbtools   Access是Windows系统中常用的文件型数据库,广泛用于小型B/S和C/S系统中.在数据取证和Web渗透中,经常会遇到该类型的数据库文件.Kali ...

  4. 行云管家 V4.7产品新特性-国际化版本、支持Oracle的数据库审计、主机密码自动修改策略 发布日期:2018-11-22

    行云管家在线体验: 行云管家[官网]-领先的云计算管理平台-云安全,堡垒机,自动化运维​ 行云管家新手有礼活动: 行云管家新手有礼,新用户1元即可体验专业版-优惠券​ 发布日期:2018-11-22 ...

  5. 【监控笔记】【3.1】DML(CDC)、DDL(DDL触发器)跟踪数据更改,数据库审计

    关键词:数据库审计.DDL审计.DML审计 [监控笔记][3.1]DML(CDC).DDL(DDL触发器)跟踪数据更改 [1]DML(CDC) 2008及以上 https://www.cnblogs. ...

  6. oracle之二数据库审计

    数据库审计audit(PPT-I-320-334) 13.1 审计的功能:监控特定用户在database 的action(操作) 13.2 审计种类: 1)标准数据库审计(语句审计.权限审计.对象审计 ...

  7. limanmanExp数据库审计设计思路与重要代码

    目的 在代码审计的时候经常会想看看某个访问会触发哪些数据库操作.目前已知的数据库审计有多家大型厂商的设备,还有seay源码审计系统中的数据库监控1.0 但是.开源的已知的就只有seay源码审计系统中的 ...

  8. oracle数据库审计

    Oracle使用大量不同的审计方法来监控使用何种权限,以及访问哪些对象.审计不会防止使用这些权限,但可以提供有用的信息,用于揭示权限的滥用和误用. 下表中总结了Oracle数据库中不同类型的审计. 审 ...

  9. [原创]实现MongoDB数据库审计SQL语句的脚本

    功能:实现具体显示mongodb数据库表操作语句的状态和情况,使用awk和shell实现抓取和分析处理.脚本内容如下: #!/bin/bash if [ $# == 0 ];then echo &qu ...

随机推荐

  1. CF994B Knights of a Polygonal Table 第一道 贪心 set/multiset的用法

    Knights of a Polygonal Table time limit per test 1 second memory limit per test 256 megabytes input ...

  2. 2018阿里前端 - 认真写下阿里的面筋,祝福大家收到满意的offer(前端向)

    作者:叮!阿里offer请查收!链接:https://www.nowcoder.com/discuss/102509来源:牛客网 首先表达一下对阿里面试官的感谢,以及大公司的气魄——没有因为不是科班出 ...

  3. spring中的XML Catalog配置

    XML Catalog配置: 1.window-->preferences-->XML Catalog 2.如图: 点击File System,选择下图中的最后一个 图二中的key时sch ...

  4. Docker下kafka学习三部曲之一:极速体验kafka

    Kafka是一种高吞吐量的分布式发布订阅消息系统,从本章开始我们先极速体验,再实战docker下搭建kafka环境,最后开发一个java web应用来体验kafka服务. 我们一起用最快的速度体验ka ...

  5. 使用DevExpress的PdfViewer实现PDF打开、预览、另存为、打印(附源码下载)

    场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  6. 算法与数据结构基础 - 图(Graph)

    图基础 图(Graph)应用广泛,程序中可用邻接表和邻接矩阵表示图.依据不同维度,图可以分为有向图/无向图.有权图/无权图.连通图/非连通图.循环图/非循环图,有向图中的顶点具有入度/出度的概念. 面 ...

  7. Elastic Stack 笔记(八)Elasticsearch5.6 Java API

    博客地址:http://www.moonxy.com 一.前言 Elasticsearch 底层依赖于 Lucene 库,而 Lucene 库完全是 Java 编写的,前面的文章都是发送的 RESTf ...

  8. 三、SpringBoot 整合mybatis 多数据源以及分库分表

    前言 说实话,这章本来不打算讲的,因为配置多数据源的网上有很多类似的教程.但是最近因为项目要用到分库分表,所以让我研究一下看怎么实现.我想着上一篇博客讲了多环境的配置,不同的环境调用不同的数据库,那接 ...

  9. (七十一)c#Winform自定义控件-折现图

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  10. Android 正 N 边形圆角头像的实现

    卖一下广告,欢迎大家关注我的微信公众号,扫一扫下方二维码或搜索微信号 stormjun94(徐公码字),即可关注. 目前专注于 Android 开发,主要分享 Android开发相关知识和一些相关的优 ...