跳转至

12 设备身份与接入

难度:中级|前置:MQTT、权限|目标:让每台设备拥有可撤销、可审计的身份

设备身份不是 device_id

device_id 只是标识。身份认证需要证明:

当前连接者确实有权代表这台设备。

常见凭据:

  • 每设备用户名和密码;
  • 每设备密钥;
  • X.509 客户端证书;
  • 预注册激活码换取长期凭据;
  • 硬件安全模块中的密钥。

不要让所有设备共享同一个密码。一个设备泄露会影响全部设备。

接入生命周期

生产/导入
→ 待激活
→ 首次注册
→ 获取凭据
→ 正常连接
→ 凭据轮换
→ 冻结/注销

每一步都应可审计,且服务端能撤销单台设备。

认证之后还有授权

设备成功连接 Broker,不代表它能发布任意 Topic。

设备 D1 通常只允许:

发布:.../device/D1/telemetry
订阅:.../device/D1/command

禁止访问其他租户和设备 Topic。

首次激活

激活码应:

  • 单次使用;
  • 有过期时间;
  • 与设备型号或批次绑定;
  • 使用后换取独立长期凭据;
  • 失败次数受限;
  • 全程 TLS。

激活码不应直接成为永久密码。

凭据轮换

现实中需要更换密钥:

  • 定期轮换;
  • 发现泄露;
  • 设备转移租户;
  • 算法或证书升级。

轮换需要兼容设备离线:可允许短时间双凭据重叠,确认新凭据生效后再撤销旧凭据。

设备与租户关系

设备所有权变化应有明确过程:

旧租户解绑
→ 清理权限和敏感配置
→ 重新激活
→ 新租户绑定

不能只修改数据库中的 tenant_id,而保留旧 Topic 权限和缓存。

自测

  1. device_id 为什么不能证明设备身份?
  2. 全部设备共享密码的风险是什么?
  3. 激活码和长期凭据为什么要分开?
  4. 密钥轮换为什么需要重叠期?

完成标准

  • 能画出设备身份生命周期
  • 能设计每设备凭据
  • 能写出 Topic 级授权规则
  • 能解释设备转租户时要清理什么

下一单元:设备在线状态系统