2019/09/26 Chenxincss
基本概念html
数据库审计(简称DBAudit)可以实时记录网络上的数据库活动,对数据库操做进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行告警,对攻击行为进行阻断。它经过对用户访问数据库行为的记录、分析和汇报,用来帮助用户过后生成合规报告、事故追根溯源,同时增强内外部数据库网络行为记录,提升数据资产安全。mysql
数据库审计是数据库安全技术之一,数据库安全技术主要包括:
数据库漏扫
数据库加密
数据库防火墙
数据脱敏
数据库安全审计系统linux
归纳起来主要表如今如下三个层面:git
伴随着数据库信息价值以及可访问性提高,使得数据库面对来自内部和外部的安全风险大大增长,如违规越权操做、恶意入侵致使机密信息窃取泄漏,但过后却没法有效追溯和审计。github
产品分类web
企业产品
就国内而言,作数据库审计产品的公司愈来愈多.好比:安华金和、天融信、安恒、绿盟,Themis宜信公司等等.sql
云平台数据库审计
阿里云,aws等docker
开源类
目前好像主要为Yearning数据库
参考
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
打开"钉钉推送开关",点击保存.
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