升级、回滚与备份
用安装命令、交付包、在线更新或手动切换镜像升级网关,社区版升级,回滚,需要备份的数据与恢复。QRadar 侧的数据不由网关备份。
升级只替换镜像和部署文件。.env、state/ 目录和 Docker 卷保留,许可的主机指纹不变,升级后不需要重新激活。
升级、回滚和恢复都不执行 docker compose down -v,也不重建 state/machine-id 或 state/server_guid。卷和这两个文件共同构成许可的主机身份,变化后需要重新激活。
从 1.1.15 及更早版本升级到 1.1.16
1.1.16 起交付包、镜像和容器改用产品名 RST-AI-Copilot-for-QRadar,GitHub 仓库改为 Reallysec/RST-AI-Copilot-for-QRadar。1.1.15 及更早版本的网关在线更新到 1.1.16 会失败,需要手动升级一次:
curl -fsSL https://github.com/Reallysec/RST-AI-Copilot-for-QRadar/releases/latest/download/install.sh | sudo bash离线主机把新交付包解压到原安装目录,在该目录执行 ./deploy.sh。
脚本在原目录 /opt/rst-qradar-ai-copilot 原地升级,数据、许可和主机指纹保留。不要移动或重命名老目录:compose 项目名和数据卷跟随目录名,state/ 中保存主机指纹,换目录后需要重新激活。升级到 1.1.16 后照常在线更新。之后命令中的容器名改为 rst-ai-copilot-for-qradar-*,例如 docker exec rst-ai-copilot-for-qradar-gateway。
用安装命令升级
1.0.1 起可用,适用于用 install.sh 安装的部署。新安装的目录为 /opt/rst-ai-copilot-for-qradar,1.1.15 及更早版本安装的目录 /opt/rst-qradar-ai-copilot 原地升级。
步骤
-
再次执行安装时的命令。安装指定版本时加
--version <x.y.z>:curl -fsSL https://github.com/Reallysec/RST-AI-Copilot-for-QRadar/releases/latest/download/install.sh | sudo bash -
deploy.sh询问是否保留现有.env时,选择保留。
脚本删除目录中旧版本的镜像包,解压新交付包,加载新镜像,把 GATEWAY_IMAGE_TAG 切到新版本并重启,最后打印运行版本。
用交付包升级
步骤
-
把新交付包解压到原安装目录:
tar xzf RST-AI-Copilot-for-QRadar-<新版本>.tar.gz --strip-components=1 -C <安装目录> cd <安装目录> sudo ./deploy.sh -
询问是否保留现有
.env时,选择保留。询问是否升级到新版本时,选择是。
脚本加载目录中最新版本的镜像包,以 --force-recreate 重启并等待容器 healthy,然后打印运行版本。旧版本的镜像包可以删除。
社区版升级
所有版本使用同一个交付包。管理员在产品激活中导入专业版或企业版许可即可,不需要重装,数据与主机指纹保留。
在线更新
前提条件
- 网关主机可以访问
github.com和release-assets.githubusercontent.com的 443 端口。版本清单和内容包从 GitHub Releases 读取,所有版本相同。离线激活的主机不检查更新。 - 网关为 1.1.16 或更新版本。1.1.15 及更早版本见从 1.1.15 及更早版本升级到 1.1.16。
步骤
-
在系统设置的 版本与更新 中,出现新版本时选择 下载并暂存。网关校验签名后把镜像暂存到安装目录的
./release/。 -
在网关主机的安装目录执行:
./deploy/rst-update.sh
脚本加载暂存的镜像,切换 GATEWAY_IMAGE_TAG 并重启。120 秒内健康检查连续 3 次成功视为升级成功,否则自动回滚到上一版本。执行 ./deploy/rst-update.sh --rollback 手动回到上一版本。
手动切换镜像版本
步骤
-
加载新镜像并修改
.env:docker load < RST-AI-Copilot-for-QRadar-images-<新版本>.tar sed -i 's/^GATEWAY_IMAGE_TAG=.*/GATEWAY_IMAGE_TAG=<新版本>/' .env -
执行
docker compose -f docker-compose.prod.yml up -d。
回滚时用同样的方法把 GATEWAY_IMAGE_TAG 改回上一版本。copilot.db 的表由网关启动时按需创建,回滚到旧版本时,新版本新增的表被忽略。
备份对象
| 数据 | 位置 | 备份方式 |
|---|---|---|
主机指纹 machine-id、server_guid | 安装目录的 ./state/ | 复制整个目录 |
| 会话、Offense 副本、审计、通知配置与发送队列、分析记录、报告、用户偏好 | gateway_state 卷中的 copilot.db | scripts/backup.sh |
| 系统设置、provider 配置、加密后的通道密钥、许可激活记录 | gateway_state 卷 | scripts/backup.sh,与上一行在同一个备份包中 |
| 账号与角色 | userdb_data 卷 | pg_dump |
QRadar 中的事件、Offense 和规则不由网关备份。网关中的 Offense 是副本,丢失后下一次同步按 RST_OFFENSE_INGEST_LOOKBACK 重新拉取,只丢失 AI 摘要和处置标记。
备份网关状态
步骤
-
在安装目录执行:
bash scripts/backup.sh /backup/rst-copilot -
把备份目录权限设为 700:
chmod 700 /backup/rst-copilot。
脚本打包整个 gateway_state 卷,生成 gateway-state-<时间戳>.tar.gz,并删除该目录中超过 30 天的备份包。不指定目录时写入 ./backups。每日执行可以加入 cron:
0 2 * * * cd <安装目录> && bash scripts/backup.sh /backup/rst-copilot >> /var/log/rst-backup.log 2>&1备份包同时包含加密后的 SEC Token、模型 API key、SMTP 口令、webhook 密钥,以及解密它们的密钥,按明文对待。离机保存前再加一层加密。恢复时使用同一个备份包的全部内容,否则界面中的这些密钥显示为未设置。
恢复网关状态
步骤
-
执行恢复脚本并重启网关:
bash scripts/restore.sh /backup/rst-copilot/gateway-state-<时间戳>.tar.gz docker compose -f docker-compose.prod.yml restart gateway -
打开产品激活,确认许可状态正常,再打开 Offenses 告警,确认处置标记已恢复。
恢复到另一台主机时,主机指纹变化,许可需要重新激活。在线激活的许可先在旧主机的 撤销激活 中选择 撤销当前 license。
备份与恢复账号表
docker exec rst-ai-copilot-for-qradar-userdb pg_dump -U rst rst_users > /backup/rst-copilot/users-$(date +%F).sql
docker exec -i rst-ai-copilot-for-qradar-userdb psql -U rst rst_users < users-<日期>.sqluserdb_data 卷丢失后网关仍能启动,重建账号表并按 .env 恢复首个管理员,其他账号丢失。
保留期
| 数据 | 配置项 | 默认 |
|---|---|---|
| 审计 | RST_AUDIT_RETENTION_DAYS | 180 天 |
| 分析记录 | RST_ANALYSIS_TTL_DAYS | 30 天 |
| 会话 | RST_CONVERSATION_TTL_DAYS | 7 天 |
copilot.db 中的数据按上表自动清理。审计需要保留更久时调大 RST_AUDIT_RETENTION_DAYS,并保留相应时长的备份包。