12 设备身份与接入¶
难度:中级|前置:MQTT、权限|目标:让每台设备拥有可撤销、可审计的身份
设备身份不是 device_id¶
device_id 只是标识。身份认证需要证明:
当前连接者确实有权代表这台设备。
常见凭据:
- 每设备用户名和密码;
- 每设备密钥;
- X.509 客户端证书;
- 预注册激活码换取长期凭据;
- 硬件安全模块中的密钥。
不要让所有设备共享同一个密码。一个设备泄露会影响全部设备。
接入生命周期¶
每一步都应可审计,且服务端能撤销单台设备。
认证之后还有授权¶
设备成功连接 Broker,不代表它能发布任意 Topic。
设备 D1 通常只允许:
禁止访问其他租户和设备 Topic。
首次激活¶
激活码应:
- 单次使用;
- 有过期时间;
- 与设备型号或批次绑定;
- 使用后换取独立长期凭据;
- 失败次数受限;
- 全程 TLS。
激活码不应直接成为永久密码。
凭据轮换¶
现实中需要更换密钥:
- 定期轮换;
- 发现泄露;
- 设备转移租户;
- 算法或证书升级。
轮换需要兼容设备离线:可允许短时间双凭据重叠,确认新凭据生效后再撤销旧凭据。
设备与租户关系¶
设备所有权变化应有明确过程:
不能只修改数据库中的 tenant_id,而保留旧 Topic 权限和缓存。
自测¶
- device_id 为什么不能证明设备身份?
- 全部设备共享密码的风险是什么?
- 激活码和长期凭据为什么要分开?
- 密钥轮换为什么需要重叠期?
完成标准¶
- 能画出设备身份生命周期
- 能设计每设备凭据
- 能写出 Topic 级授权规则
- 能解释设备转租户时要清理什么
下一单元:设备在线状态系统