Archery:一个免费开源的一站式SQL审核查询平台
Archery 是一个免费开源的一站式 SQL 审核查询平台,核心目标是提升数据库操作的安全性、效率和规范性。
Archery 基于 Python 语言开发,遵循 Apache 2.0 开源协议,源代码同时托管在 GitHub 以及 Gitee:
- https://github.com/hhyo/Archery
- https://gitee.com/rtttte/Archery
功能特性
Archery 提供的主要功能如下:
- 跨平台支持:Archery 提供基于浏览器的访问,服务端支持 Linux、macOS、Windows 、Docker、Kubernetes 等部署方式。
- 多种数据库:Archery 可以用于多种数据库的审核管理,包括 MySQL、SQL Server、Oracle、PostgreSQL、MongoDB、Redis、ClickHouse、Doris、Cassandra、ODPS、Phoenix。
- SQL 查询:通过工作流控制 SQL 查询授权,支持库表级别的权限限制,以及授权时间,查询结果集的限制;支持部分语句的动态查询脱敏;支持前台管理用户权限,对用户权限进行修改和维护;支持查询导出、查询日志审计
- SQL 审核:MySQL 实例支持基于 Inception/goInception 实现的审核、执行、备份集成,非 MySQL 实例支持提交和执行工单,依托工作流实现流程化管理;审批和执行可以分配给不同的用户进行操作;SQL工单自动审批、高危语句驳回;快速上线其他实例,可适用于 test>beta>ga 等多套环境维护的需求;工单审核通过后可以选择定时执行或者立即执行。
- SQL 优化:基于 PT 收集慢日志,基于 SQLAdvisor|SOAR|SQLTuning 的全方位优化建议。
- 实例管理:会话管理,数据库管理,账号管理,参数配置。
- 工具插件:PTArchiver、Binlog2SQL、My2SQL、SchemaSync 等。
- 资源(项目)组:支持自定义资源(项目)组,管理资源组和关联对象,资源组成员之间审批流程、实例配置、消息通知等资源隔离。
- 权限(角色)组:权限可以分配给用户,也可以分配给权限组,支持对大多数操作进行限制,独立控制用户的审核、执行等操作权限。
- 工作流:工作流审批流程支持多层级多用户,并且隔离资源组,不同资源组不同的工单类型可以配置不同的审批层级。
- 配置管理:系统配置项、工作流审批流程可在前端页面动态修改,无需重启服务实时生效。
- 消息通知:支持钉钉、企业微信、邮件通知,及时知晓工单状态变化。
- 可视化:使用 pyecharts 实现工单、查询维度的可视化统计。
- API 集成:Archery 提供了 REST API,方便与第三方系统进行集成。
下载安装
推荐使用 Docker 以及 Docker Compose 进行部署,首先下载最新的源代码:
https://github.com/hhyo/Archery/releases
解压之后进入 src\docker-compose 目录,然后输入以下命令进行安装:
#启动
docker compose -f docker-compose.yml up -d#表结构初始化
docker exec -ti archery /bin/bash
cd /opt/archery
source /opt/venv4archery/bin/activate
python3 manage.py makemigrations sql
python3 manage.py migrate#数据初始化
python3 manage.py dbshell<sql/fixtures/auth_group.sql
python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql#创建管理用户
python3 manage.py createsuperuser#重启服务
docker restart archery#日志查看和问题排查
docker logs archery -f --tail=10
logs/archery.log
启动服务之后,通过以下网址进行访问:
http://127.0.0.1:9123/
输入安装过程设置的管理用户名和密码进行登录。
官方网址:https://archerydms.com/
总结
Archery 不仅仅是一个 SQL 查询工具,更是一个集成了 SQL 审核、执行、查询、优化和备份恢复等多种功能的综合性平台。