• 欢迎访问安全专题网站,安全专题信息,安全专题教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入安全专题 QQ群
  • 安全专题现已支持滚动公告栏功能,兼容其他浏览器,看到的就是咯,在后台最新消息那里用li标签添加即可。
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏安全专题吧

Archer基于inception的自动化SQL操作平台

安全运维 aqzt 1个月前 (07-12) 186次浏览 0个评论

Archer 基于 inception 的自动化 SQL 操作平台

项目地址:https://github.com/jly8866/archer

基于 inception 的自动化 SQL 操作平台,支持工单、审核、定时任务、邮件、OSC 等功能,还可配置 MySQL 查询、慢查询管理、会话管理等。

开发语言和推荐环境
python3.4 及以上
django1.8.17
mysql : 5.6 及以上
linux : 64 位 linux 操作系统均可
主要功能
自动审核
发起 SQL 上线,工单提交,由 inception 自动审核,审核通过后需要由审核人进行人工审核
人工审核
inception 自动审核通过的工单,由其他研发工程师或研发经理来审核,DBA 操作执行 SQL
为什么要有人工审核?
这是遵循运维领域线上操作的流程意识,一个工程师要进行线上数据库 SQL 更新,最好由另外一个工程师来把关
很多时候 DBA 并不知道 SQL 的业务含义,所以人工审核最好由其他研发工程师或研发经理来审核. 这是 archer 的设计理念
回滚数据展示
工单内可展示回滚语句,支持一键提交回滚工单
定时执行 SQL
审核通过的工单可由 DBA 选择定时执行,执行前可修改执行时间,可随时终止
pt-osc 执行
支持 pt-osc 执行进度展示,并且可以点击中止 pt-osc 进程
MySQL 查询
库、表、关键字自动补全
查询结果集限制、查询结果导出、表结构展示、多结果集展示
MySQL 查询权限管理
基于 inception 解析查询语句,查询权限支持限制到表级
查询权限申请、审核和管理,支持审核流程配置,多级审核
MySQL 查询动态脱敏
基于 inception 解析查询语句,配合脱敏字段配置、脱敏规则(正则表达式)实现敏感数据动态脱敏
慢日志管理
基于 percona-toolkit 的 pt_query_digest 分析和存储慢日志,并在 web 端展现
邮件通知
可配置邮件提醒,对上线申请、权限申请、审核结果等进行通知
对异常登录进行通知
设计规范
合理的数据库设计和规范很有必要,尤其是 MySQL 数据库,内核没有 oracle、db2、SQL Server 等数据库这么强大,需要合理设计,扬长避短。互联网业界有成熟的 MySQL 设计规范,特此撰写如下。请读者在公司上线使用 archer 系统之前由专业 DBA 给所有后端开发人员培训一下此规范,做到知其然且知其所以然。
下载链接 https://github.com/jly8866/archer/blob/master/src/docs/mysql_db_design_guide.md
主要配置文件
archer/archer/settings.py
采取 docker 部署
docker 镜像,参考 wiki
inception 镜像: https://dev.aliyun.com/detail.html?spm=5176.1972343.2.12.7b475aaaLiCfMf&repoId=142093
archer 镜像: https://dev.aliyun.com/detail.html?spm=5176.1972343.2.38.XtXtLh&repoId=142147
docker 镜像制作感谢@小圈圈 提供
手动安装步骤
环境准备
克隆代码到本地或者下载 zip 包
git clone https://github.com/jly8866/archer.git
安装 inception
项目地址
安装 python3,版本号>=3.4(由于需要修改官方模块,请使用 virtualenv 或 venv 等单独隔离环境!)
pip3 install virtualenv
virtualenv venv4archer –python=python3.4
安装所需相关模块
source venv4archer/bin/activate
pip3 install -r requirements.txt
pymysql 模块兼容 inception 版本信息
使用 src/docker/pymysql 目录下的文件替换/path/to/python3/lib/python3.4/site-packages/pymysql/对应文件
启动前准备
创建 archer 本身的数据库表
修改 archer/archer/settings.py 所有的地址信息,包括 DATABASES 和 INCEPTION_XXX 部分
通过 model 创建 archer 本身的数据库表,如果是现有版本升级请使用 src/init_sql 内的变更脚本变更数据库
原 v1.1.1 分支请使用 v1.1.1->v2.0.sql 变更
原 master 分支请使用 master->v2.0.sql 变更
全新安装请使用如下方式初始化
python3 manage.py makemigrations sql
python3 manage.py migrate
创建 admin 系统 root 用户(该用户可以登录 django admin 来管理 model)
python3 manage.py createsuperuser
启动,有两种方式
(1)用 django 内置 runserver 启动服务,建议不要在生产环境使用
bash debug.sh
(2)用 gunicorn+nginx 启动服务
安装模块 pip3 install gunicorn==19.7.1
nginx 配置示例
server{
listen 9123; #监听的端口
server_name archer;
proxy_read_timeout 600s; #超时时间与 gunicorn 超时时间设置一致,主要用于在线查询

location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host:9123; #解决重定向 404 的问题
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

location /static {
alias /archer/static; #此处指向 settings.py 配置项 STATIC_ROOT 目录的绝对路径,用于 nginx 收集静态资源
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
启动 bash startup.sh
正式访问
使用上面创建的管理员账号登录 http://X.X.X.X:port/login/
其他功能集成
在线查询
settings 中 QUERY 改为 True
到【后台数据管理】-【从库地址配置】页面添加从库信息
到【后台数据管理】-【工作流配置】页面配置审核流程
用户申请权限、审核通过后即可进行在线查询
如需要使用动态脱敏,请将 settings 中 DATA_MASKING_ON_OFF 改为 True,并且到【后台数据管理】-【脱敏配置】页面配置脱敏规则和字段
慢日志管理
settings 中 SLOWQUERY 改为 True
安装 percona-toolkit(版本>3.0),以 centos 为例
yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
yum -y install percona-toolkit.x86_64
使用 src/script/mysql_slow_query_review.sql 创建慢日志收集表到 archer 数据库
将 src/script/analysis_slow_query.sh 部署到各个监控机器,注意修改脚本里面的 hostname=”${mysql_host}:${mysql_port}”与 archer 主库配置信息一致,否则将无法筛选到相关记录
SQLAdvisor 优化工具
安装 SQLAdvisor,项目地址
修改配置文件 SQLADVISOR 为程序路径,路径需要完整,如’/opt/SQLAdvisor/sqladvisor/sqladvisor’
阿里云 rds 管理
修改配置文件 ALIYUN_RDS_MANAGE=True
安装模块
pip3 install aliyun-python-sdk-core==2.3.5
pip3 install aliyun-python-sdk-core-v3==2.5.3
pip3 install aliyun-python-sdk-rds==2.1.1
在【后台数据管理】-【阿里云认证信息】页面,添加阿里云账号的 accesskey 信息,重新启动服务
在【后台数据管理】-【阿里云 rds 配置】页面,添加实例信息,即可实现对阿里云 rds 的进程管理、慢日志管理
admin 后台加固,防暴力破解
patch 目录下,名称为 django_1.8.17_admin_secure_archer.patch
使用命令
patch python/site-packages/django/contrib/auth/views.py django_1.8.17_admin_secure_archer.patch
集成 ldap
修改配置文件 ENABLE_LDAP=True,安装相关模块,可以启用 ldap 账号登录,以 centos 为例
yum install openldap-devel
pip install django-auth-ldap==1.3.0
如果使用了 ldaps,并且是自签名证书,需要打开 settings 中 AUTH_LDAP_GLOBAL_OPTIONS 的注释
settings 中以 AUTH_LDAP 开头的配置,需要根据自己的 ldap 对应修改

 


Selinux 中国 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Archer 基于 inception 的自动化 SQL 操作平台
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址