数据库审计 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. 杭电2018暑假多校第一场 D Distinct Values hdu6301 贪心

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  2. 【Offer】[50-2] 【字符流中第一个只出现一次的字符】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次 ...

  3. 【Offer】[3-2] 【不修改数组找出重复的数字】

    题目描述 思路分析 Java代码 代码链接 题目描述 在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的. 请找出数组中任意一个重复的数字,但不能修改输入的数组. ...

  4. 2019本科se第一次作业-博客初体验-chris

    (1)第一章  计算机专业术语总结: 软件=程序+软件工程.程序=数据结构+算法.软件.程序.用户.需求.应用程序.软件服务.源程序.软件架构(Software Architecture).软件设计与 ...

  5. Intro to Machine Learning

    本节主要用于机器学习入门,介绍两个简单的分类模型: 决策树和随机森林 不涉及内部原理,仅仅介绍基础的调用方法 1. How Models Work 以简单的决策树为例 This step of cap ...

  6. Storm 系列(三)—— Storm 单机版本环境搭建

    1. 安装环境要求 you need to install Storm's dependencies on Nimbus and the worker machines. These are: Jav ...

  7. idea中applicationContext-trans.xml中的Cannot resolve bean 'dataSource'...的问题解决

    问题如下: (applicationContext-trans.xml中的部分截图) 先了解问题是怎么出现的: 此处的dataSource是在applicationContext-dao.xml中配置 ...

  8. JS枚举对象属性的方法及其区别

    愉快的中秋节要过去了,国庆倒计时两个周!!! 闲话不多说,那今天我们来看一看JS中枚举对象属性的方法有哪些以及他们的区别 首先在JS里面枚举对象属性一共有三种方法 for in: 会遍历对象中所有的可 ...

  9. JSP获取网络IP地址

    import javax.servlet.http.HttpServletRequest; public class RemoteAddress { public static String getR ...

  10. HTML 框架导航

    初次学习HTML,在www.w3school.com.cn看到了框架导航,上面的例子没有看懂所以搜了一下相应的问题,最后弄懂了怎么实现同一界面下的框架导航. 首先是www.w3school.com.c ...