Files
wecom_it_smart_desk/docs/安全/secret-管理.md
T
Simon 364e688382 chore(release): v0.5.0-beta 发版准备
主要改动:

backend 业务:
- feat(error-codes): 统一错误码表 E1011/E1012 拆码
  - E1011 AUTH_PASSWORD_WRONG: 本地密码错误
  - E1012 AUTH_FIRST_LOGIN_PASSWORD_REQUIRED: 首次登录请先设置密码
  - E1015 AUTH_OLD_PASSWORD_REQUIRED: 改密需要旧密码
  - E1016 AUTH_OLD_PASSWORD_WRONG: 旧密码错误
- fix(agents): P0 降级放行时,如坐席已注册但未设密码,正确 raise 1012
  (修复前会撞 1011 本地密码错误,与场景不符)
- feat(approval): 审批模块 (T审批/A审批)
- feat(config): approval_template_resource / approval_template_device 配置
- feat(main): /ready, /metrics, /version 端点(K8s 友好)

backend 测试:
- test(agents): 新增 test_agents.py — 3 个 Fix-4 降级登录测试
  - 错误密码拒绝
  - 缺密码拒绝
  - 正确密码通过
  pytest tests/test_agents.py → 3/3 通过
- test(conftest): 模块级 mock + slowapi 限流重置 + UTF-8 patch
  解决 Windows pytest GBK 读 .env 失败 + 降级路径无法测试

仓库治理:
- chore(gitignore): 排除 .workbuddy/memory/(workbuddy 本地记忆)
- chore(docs): 重命名两份 IT 文档(前缀加智能区分版本)

部署与文档:
- docs: RELEASE_NOTES_v0.5.0-beta.md / dashboard.html / 需求-发版预览页面
- docs: 部署、架构、PRD、安全、评审报告等同步 v0.5.0-beta
- deploy-server: 打包脚本、nginx、docker-compose 版本号 bump

前端 (frontend-h5 / frontend-agent / frontend-admin / frontend-portal):
- index.html / package.json 版本号与构建号 bump

自动验收(RELEASE_NOTES L100-104):
- [x] pytest tests/test_agents.py -v → 3 passed
- [x] grep Bs7ucT backend frontend-h5 frontend-agent → 无输出
- [x] grep AppException(101[123]) backend → 仅 1 处(登录场景 1012)
- [ ] npm run build (frontend-h5 / frontend-agent) → 合并后跑

后续: 合并 feature/t-1-t4-merge → main,tag v0.5.0-beta
2026-06-15 14:14:58 +08:00

82 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 智能IT支持服务台 - Secret 管理方案
**版本**: 1.0
**更新日期**: 2026-06-14
**状态**: 规划中
---
## 一、背景
当前 `.env` 文件中存储了敏感信息:
- WECOM_SECRET(企微应用密钥)
- WECOM_ENCODING_AES_KEY(消息加密密钥)
- DIFY_API_KEYDify API 密钥)
- POSTGRES_PASSWORD(数据库密码)
- REDIS_PASSWORDRedis 密码)
**风险**
- `.env` 文件在 Git 仓库中(虽然被 .gitignore 排除,但部署时需手动复制)
- 服务器上 `.env` 文件可能被未授权访问
- 密钥轮换需要手动修改文件和重启服务
---
## 二、长期方案
### 方案对比
| 方案 | 复杂度 | 安全性 | 适用场景 |
|------|--------|--------|----------|
| **NAS Vault** | 低 | 中 | 有 NAS设备 |
| **Server Keyring** | 低 | 中 | Linux 服务器 |
| **Docker Secrets** | 中 | 高 | K8s/ Swarm |
| **HashiCorp Vault** | 高 | 高 | 企业级 |
### 推荐:NAS Vault + Server Keyring
#### 方案1NAS Vault(当前可用)
```bash
# 在 NAS 上创建加密文件
/volume1/docker/wecom-it-desk/secrets/.env.encrypted
# 启动时解密
docker run --env-file <(gpg -d /volume1/docker/wecom-it-desk/secrets/.env.encrypted) ...
```
#### 方案2Server KeyringLinux
```bash
# 使用 keyring 工具
keyring set wecom-it-desk WECOM_SECRET
keyring get wecom-it-desk WECOM_SECRET
```
---
## 三、短期止血
| 操作 | 说明 |
|------|------|
| 限制 .env 文件权限 | `chmod 600 .env` |
| 不在 URL 中暴露 token | 已完成(P0-#4 |
| 定期轮换密钥 | 建议每季度 |
| 审计日志 | 规划中 |
---
## 四、实施计划
| 阶段 | 内容 | 优先级 |
|------|------|--------|
| MVP | 当前方案 + 限制文件权限 | P0 |
| V1 | 迁移到 NAS Vault | P2 |
| V2 | 迁移到 HashiCorp Vault | P3 |
---
## 五、相关文档
- `.env.example` - 环境变量模板(含 TODO 注释)
- `docs/安全审计报告.md` - 安全审计记录