2.8 KiB
2.8 KiB
安全与鉴权方案
基于 软件系统说明.docx 整理。本文档用于把当前已知安全要求整理成可继续细化的设计骨架。
本文档不虚构签名算法、密钥管理方案或合规要求,只固定已知要求和必须补齐的实现细节。
已确认事实
- 全链路传输使用
TLS 1.2+ - 设备认证依赖
DeviceSecret - 用户认证为微信登录 + Token
- Token 有效期为 7 天
- 敏感数据需要加密存储
- 需要 API 鉴权
- 需要角色权限控制
- 需要 API 级别鉴权
安全边界拆分
当前系统至少存在四类安全边界:
- 小程序用户身份安全
- 设备身份安全
- 云端 API 访问安全
- 后台管理权限安全
用户鉴权待补项
至少需要明确:
- 微信登录到自有 token 的完整链路
- Token 格式
- Token 签名算法
- Token 7 天有效期是否支持续期
- Token 失效、登出、吊销机制
- 多端并发登录规则
设备鉴权待补项
至少需要明确:
DeviceSecret的签发时机DeviceSecret的保存位置DeviceSecret是否可轮换- 设备被盗用或泄露后的失效机制
- 设备认证失败后的告警与禁用策略
API 安全待补项
至少需要明确:
- API 鉴权中间件规则
- 接口级权限定义
- 限流策略
- 防重放策略
- 防刷策略
- 请求日志中需要记录的审计字段
数据安全待补项
至少需要明确:
- 哪些字段属于敏感数据
- 加密字段范围
- 加密方式
- 脱敏展示规则
- 数据保留周期
- 备份与恢复的安全要求
后台权限安全待补项
至少需要明确:
- 管理员认证方式
- 角色权限模型
- 高风险操作的二次确认规则
- 操作日志保留策略
- 是否需要登录告警和异常操作审计
建议最先统一的安全对象
为了后续设计不混乱,建议先统一这些对象的定义:
- 用户身份
- 设备身份
- 管理员身份
- 访问 token
- 设备密钥
- 角色
- 权限
建议补充的安全设计模板
后续可按以下模板逐项补齐:
| 主题 | 已知要求 | 待确认实现 | 风险 |
|---|---|---|---|
| 用户登录 | 微信登录 + Token | 待定义 | 待评估 |
| 设备认证 | DeviceSecret |
待定义 | 待评估 |
| API 鉴权 | API 级别鉴权 | 待定义 | 待评估 |
| 数据加密 | 敏感数据加密存储 | 待定义 | 待评估 |
待确认问题
- 小程序 token 是否只用于云端 API,还是也影响设备绑定授权
- 后台是否与小程序共用用户体系
- 是否需要设备侧应用层签名或加密,而不仅是 TLS
- 是否有合规或审计的特殊要求
当前结论
当前说明已经明确安全目标,但没有给出实现方案。最先要补的是 token 生命周期、DeviceSecret 生命周期、权限模型和敏感数据定义。