Archery
概述
Archery 是一款开源的数据库安全审计系统,主要用于监控和分析数据库操作行为,以增强数据库安全性并符合合规性要求。
其核心能力包括:
- SQL 审计:捕获并分析 SQL 语句,记录所有数据库访问行为
- 安全管控:帮助企业和组织了解、审查并控制对数据库的访问及操作
- 风险预防:有效识别潜在的数据泄露风险
部署指南
1. 下载安装包
wget https://github.com/hhyo/Archery/archive/refs/tags/v1.11.3.tar.gz2. 解压文件
tar -xf Archery-1.11.3.tar.gz3. 启动容器
进入 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 migrate5. 数据初始化
导入权限组和慢查询审核所需的初始数据:
# 在容器内执行(接上一步)
python3 manage.py dbshell < sql/fixtures/auth_group.sql
python3 manage.py dbshell < src/init_sql/mysql_slow_query_review.sql6. 创建管理员账户
python3 manage.py createsuperuser按提示输入用户名、邮箱和密码,用于登录 Archery Web 管理界面。
# 退出容器
exit7. 验证部署
查看容器运行日志,确认启动正常:
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 gunicornQ:如何修改默认端口?
修改 docker-compose.yml 中的端口映射:
ports:
- "8080:9123" # 将宿主机 8080 映射到容器 9123修改后重新启动容器生效。