当前安全基线
设备访问与账号访问分开:用户通过JWT+Redis会话,设备通过MQTT TLS凭据,Broker回调用独立头密钥。任何一层成功都不自动授予另一层的权限。
账号与角色
账号密码含验证码,微信登录必须真实code换openid;手机号免验证登录入口不开放。访问/刷新Token类型分离,刷新不能当访问令牌,Redis sid可撤销。当前账号禁用、角色撤销在HTTP/实时访问时重新核对,个人资料不能写roleIds。会话寿命见HTTP认证。
产品物模型、固件上传删除、权限字典增删改限制管理员;普通文件仅能操作本用户路径。设备控制允许拥有者与有效分享者,持久配置/倒计时/OTA等写操作仍按拥有者限定,不因管理列表可见就能控制。分享保存owner快照,撤权、解绑、旧邀请消费或过期不能复活旧授权。
消息与归属
MQTT使用完整Topic身份关联,控制回复必须明确code200;缺结果码不作为成功。新配置/短期写服务要求当前归属,短期写还需当前boot与有效期。归属建立只能经物理窗口nonce与票据握手;旧启动挑战、retain和迟到查询不能覆盖新状态。清理持久化失败保持屏障,不恢复旧负载目标。
安全失败是拒绝或明确未确认,不能临时开放通配ACL、关闭TLS、使用静态模拟身份或删除执行水位绕过。个人开发允许工厂重刷,不等于允许跨账号覆盖仍绑定身份。
运维数据边界
环境变量、上传私钥、逐板凭据和日志不入Git。通用OTA/工厂镜像必须无逐板秘密;工厂刷写清本地状态,不删除云端历史。数据库变更单独审批及核对迁移账本,禁止常规生产db push或重复seed。访问控制是后端职责,按钮隐藏仅是UI体验。
已知约束
- 家庭表保留但当前不授权;家庭入口暂缓。
- HTTP部分接口存在双层业务包装,错误码映射对409/410/429未细分;客户端须检查HTTP与业务结果。
- 默认示例环境和seed含弱占位/初始化密码,部署前必须替换并保护;seed不作为在线修复命令。
- 单进程WS/部分控制等待不能当作分布式完整实现。
- TLS证书同步有既有验证记录,但本次未重新核实在线监听、证书或控制台缓存。
2026-10-27安全审核及2026-10-28四项交叉状态修复的过程证据已归档,当前权限/执行契约分别在API、MQTT、配置与定时文档,不通过阶段日志决定当前规则。
