Cuentas heredadas del broker MQTT
Registro de cuentas del broker que existen por razones históricas y hay que dar de baja. Si estás leyendo esto y alguna sigue viva, sigue vivo el trabajo pendiente.
mqttlow — TEMPORAL, DAR DE BAJA
Estado: activa en sd1 y en sd2. Pendiente de eliminación.
Qué es. Una cuenta del broker creada a mano en sd1, nunca a través del repo. La usa
un dispositivo real en campo: ESP32_a12384. En una ventana de 7 días fue el único
cliente que la usó.
Por qué es un problema. Su contraseña en claro no la tiene nadie. Solo existe
como hash $7$ (PBKDF2-SHA512 de mosquitto), que no es reversible. passwords.old
tampoco la tiene: ahí solo está mqttuser. Al no haber nacido del repo, ningún host
nuevo la reproducía, y el modo de fallo es silencioso — el broker rechaza al
dispositivo con not authorised y el ESP32 simplemente deja de reportar, sin error
visible en ningún panel.
Cómo se migró a sd2 sin conocer la contraseña. Se copió el hash tal cual, no la
contraseña. MOSQUITTO_EXTRA_USER_HASHES_B64 (en .env.secrets como
GLOBAL_MOSQUITTO_EXTRA_USER_HASHES_B64) lleva líneas user:<hash> en base64, y
infrastructure/mosquitto/bin/setup.sh las escribe literalmente en el fichero de
contraseñas en cada arranque. Va en base64 porque el hash contiene $, que la
interpolación de compose se come. El dispositivo autentica con la contraseña que ya
tiene y no hace falta reflashearlo.
Qu é falta para cerrarlo. Cuando el ESP32_a12384 se pueda intervenir:
- Reflashearlo con credenciales nacidas del repo (
GLOBAL_MOSQUITTO_EXTRA_USERS, que sí lleva contraseña en claro y da de alta la cuenta en cada arranque). - Quitar la entrada de
GLOBAL_MOSQUITTO_EXTRA_USER_HASHES_B64. - Borrar la cuenta del broker en ambos hosts:
mosquitto_passwd -D <fichero> mqttlow. - Borrar esta sección.
Nota sobre permisos. Mosquitto no tiene ACL configurada, así que la distinción entre
mqttuser y mqttlow es hoy solo nominal: ambas cuentas tienen los mismos
permisos. La cuenta "low" no está restringida a nada.
Cuentas legítimas
mqttuser— cuenta principal, nace deMOSQUITTO_USER/MOSQUITTO_PASS, generada porgenerate-env.sh. No requiere ninguna acción.