Archery

概述

Archery 是一款开源的数据库安全审计系统,主要用于监控和分析数据库操作行为,以增强数据库安全性并符合合规性要求。

其核心能力包括:

  • SQL 审计:捕获并分析 SQL 语句,记录所有数据库访问行为
  • 安全管控:帮助企业和组织了解、审查并控制对数据库的访问及操作
  • 风险预防:有效识别潜在的数据泄露风险

部署指南

1. 下载安装包

wget https://github.com/hhyo/Archery/archive/refs/tags/v1.11.3.tar.gz

2. 解压文件

tar -xf Archery-1.11.3.tar.gz

3. 启动容器

进入 Docker Compose 目录,启动所有服务容器:

cd Archery-1.11.3/src/docker-compose/
docker-compose -f docker-compose.yml up -d

说明:首次启动会自动拉取所需的 MySQL、Redis 等依赖镜像,过程可能需要几分钟,请耐心等待。

4. 表结构初始化

进入 Archery 容器执行数据库迁移:

# 进入容器
docker exec -it archery /bin/bash

# 进入项目目录并激活虚拟环境
cd /opt/archery
source /opt/venv4archery/bin/activate

# 生成数据库迁移文件并执行迁移
python3 manage.py makemigrations sql
python3 manage.py migrate

5. 数据初始化

导入权限组和慢查询审核所需的初始数据:

# 在容器内执行(接上一步)
python3 manage.py dbshell < sql/fixtures/auth_group.sql
python3 manage.py dbshell < src/init_sql/mysql_slow_query_review.sql

6. 创建管理员账户

python3 manage.py createsuperuser

按提示输入用户名、邮箱和密码,用于登录 Archery Web 管理界面。

# 退出容器
exit

7. 验证部署

查看容器运行日志,确认启动正常:

docker logs archery -f --tail=50

访问 Archery Web 界面:

curl http://127.0.0.1:9123

或直接在浏览器中打开 http://<服务器IP>:9123,使用刚创建的管理员账户登录。


常用管理命令

操作 命令
查看容器状态 docker ps | grep archery
查看运行日志 docker logs archery -f --tail=100
停止 Archery docker-compose -f docker-compose.yml stop
重启 Archery docker-compose -f docker-compose.yml restart
进入容器 docker exec -it archery /bin/bash

常见问题

Q:容器启动失败或一直在重启?

检查依赖服务(MySQL、Redis)是否正常启动:

docker ps -a

查看具体错误日志:

docker logs archery --tail=100

常见原因:端口冲突(9123、3306、6379)、内存不足、配置文件错误。

Q:数据库迁移报错?

确认 MySQL 容器已完全启动并处于健康状态:

docker exec -it mysql mysql -uroot -p
# 默认密码在 docker-compose.yml 中定义,通常为 root

如遇迁移冲突,可尝试清空数据库后重新执行迁移(谨慎操作,仅适用于全新部署)。

Q:访问 Web 界面时报 502/连接拒绝?

检查 Archery 容器内部服务是否正常运行:

docker exec -it archery curl -I http://127.0.0.1:9123

如返回非 200,则检查容器内服务状态:

docker exec -it archery ps aux | grep gunicorn

Q:如何修改默认端口?

修改 docker-compose.yml 中的端口映射:

ports:
  - "8080:9123"   # 将宿主机 8080 映射到容器 9123

修改后重新启动容器生效。


参考链接