ID client MQTT in conflitto
Più dispositivi si connettono usando lo stesso ID client.
Questo controllo viene visualizzato come CONFLICTING_CLIENT_IDS_CHECK
nell’interfaccia a riga di comando e nell’API.
Gravità: High (alta)
Informazioni
Sono state stabilite diverse connessioni usando lo stesso ID client e di conseguenza un dispositivo già connesso è stato disconnesso. La specifica MQTT permette una sola connessione attiva per ID client, pertanto quando un altro dispositivo si connette usando lo stesso ID client, la connessione del dispositivo precedente viene interrotta.
Quando viene eseguito come parte di un audit on demand, questo controllo esamina come sono stati usati gli ID client per le connessioni durante i 31 giorni precedenti l'inizio dell'audit. Per gli audit pianificati, questo controllo analizza i dati dall'ultima esecuzione dell'audit fino all'avvio di questa istanza dell'audit. Se hai eseguito operazioni per mitigare questa condizione nell'intervallo di tempo controllato, esamina quando sono avvenute le connessioni/disconnessioni per determinare se il problema persiste.
Quando questo controllo trova una condizione di non conformità, vengono restituiti i codici motivo seguenti:
-
DUPLICATE_CLIENT_ID_ACROSS_CONNECTIONS
I risultati restituiti da questo controllo includono inoltre l'ID client usato per connettersi, gli ID delle entità principali e gli orari di disconnessione. I risultati più recenti sono elencati per primi.
Perché è importante
I dispositivi con ID in conflitto sono costretti a riconnettersi continuamente e questo potrebbe causare la perdita di messaggi o l'impossibilità di connettersi da parte di un dispositivo.
Ciò può indicare che un dispositivo o le sue credenziali sono state compromesse e la causa potrebbe essere un attacco DDoS. È anche possibile che i dispositivi non siano configurati correttamente nell'account o che un dispositivo abbia una connessione malfunzionante e debba riconnettersi più volte al minuto.
Come risolvere il problema
Registra ogni dispositivo come oggetto univoco in AWS IoT e usa il nome dell'oggetto come ID client per la connessione. In alternativa, usa un UUID come ID client per la connessione del dispositivo tramite MQTT. Puoi anche usare le operazioni di mitigazione per:
-
Applica l'operazione di mitigazione
PUBLISH_FINDINGS_TO_SNS
per implementare una risposta personalizzata al messaggio di Amazon SNS.
Per ulteriori informazioni, consultare Operazioni di mitigazione.