Skip to content

密钥与安全边界 ​

这一篇是干什么的:讲清楚系统里的"钥匙"有哪些、放在哪、丢了怎么办。负责装系统的人务必读完。

查看 runtime.env 权限:-rw------- 表示只有本人能读

系统的"钥匙"有哪些 ​

钥匙开什么锁存在哪
数据库密码打开数据仓库deploy/runtime.env
缓存密码打开缓存服务deploy/runtime.env
登录令牌密钥给登录凭证签名deploy/runtime.env
管理员初始密码第一次登录只显示一次,存保险库
企微应用 Secret证明系统是你企业的应用deploy/runtime.env(服务器灌入)
回调 Token / EncodingAESKey校验、加解密企微消息deploy/runtime.env(服务器灌入)
会话存档 Secret / 私钥拉取聊天记录deploy/runtime.env(服务器灌入)
备份加密密钥打开备份包deploy/secrets/backup.key
AI 接口 Key调用 AI 模型(用 AI 功能才有)deploy/runtime.env
统一登录密钥对接企业身份系统(用 SSO 才有)deploy/runtime.env

钥匙放在哪、怎么保护 ​

  • 所有运行密钥集中在一个文件里:deploy/runtime.env。
  • 这个文件的权限必须是 600——意思是"只有服务器管理员本人能读能写,别人都不行"。
  • 禁止提交到代码仓库,禁止用聊天、邮件传。
  • 网页不接收、不回显企业微信密钥。钥匙只从服务器文件进系统。

这个文件丢了,麻烦很大

runtime.env 不在备份包里。丢了它,即使数据都在,系统也起不来——数据库密码、企微钥匙全没了。

所以装完系统的第一件事,就是把 runtime.env 和 backup.key 存进公司密码保险库。

数据存在哪(三个数据卷) ​

数据卷装什么
mysql-data客户、群、标签、配置和业务数据
redis-data缓存和运行状态
upload-data上传的素材和附件
  • 升级和普通回滚不会删除或重建这三个数据卷。
  • 禁止使用 docker compose down -v,那个 -v 会连数据卷一起删。

对外只开一扇门 ​

服务谁能访问
网站(443 端口)公网,带 HTTPS
系统自身(18921 端口)只绑服务器本机(127.0.0.1)
数据库、缓存、后端只在系统内部通信,不开放到宿主机
管理指标端口(8086)只在内网使用

另外,权限是在后端逐次检查的:没登录访问业务接口会被拒绝(返回 401),普通员工调用"改配置"的接口会被拒绝(返回 403)。不是前端把按钮藏起来就算数。

换钥匙(轮换) ​

怀疑泄露、员工离职、或者公司安全制度要求定期换时,按这五步:

  1. 在企业微信或身份系统里,生成一把新钥匙
  2. 更新服务器上的 deploy/runtime.env(保持权限 600)
  3. 只重启后端:
bash
docker compose --env-file .env -f deploy/docker-compose.yml up -d --no-deps --force-recreate backend
  1. 验证:能登录、企微验证连接通过、回调正常
  2. 确认没问题后,把旧钥匙作废,并翻一遍操作日志

几条纪律 ​

  • 每家企业用自己独立的钥匙,测试环境和正式环境不共用。
  • 群发、删除、同步、改配置这些动作,后端会再查一遍权限。
  • 每次升级前先备份;每月至少做一次异机恢复演练。
  • 对外只开 443;证书私钥当钥匙对待。

常见问题 ​

Q:runtime.env 能发给技术支持看吗?

不要。排障需要的信息从日志里拿(日志自动脱敏,不会写密钥和客户正文)。钥匙永远不出你的服务器。

Q:员工电脑上会不会存钥匙?

不会。钥匙只在服务器上,员工用浏览器或企业微信访问,拿不到钥匙。

Q:怎么确认权限锁对了?

在服务器上执行 ls -l deploy/runtime.env,开头显示 -rw------- 就是对的。备份密钥文件同理。

Q:几个环境能共用一套钥匙吗?

不能。测试、正式环境必须各用各的,避免一处泄露、处处失守。

相关页面 ​

本说明书为企业 SCRM 私有化部署产品的配套文档