ACL
TLS (Transport Layer Security) et ACL (Access Control List) sont deux mécanismes de sécurité différents pour la communication dans les systèmes MQTT.
ACL est un mĂ©canisme de contrĂ´le d’accès qui permet de dĂ©finir des règles de sĂ©curitĂ© pour restreindre l’accès Ă certaines ressources ou fonctionnalitĂ©s d’un système MQTT. Cela permet de contrĂ´ler qui peut lire, Ă©crire ou s’abonner Ă certains topics MQTT.
Configuration de ACL pour MQTT
Voici comment configurer les règles ACL pour permettre Ă un utilisateur “admin” d’avoir des droits de lecture et Ă©criture et le reste des utilisateurs d’avoir uniquement des droits de lecture
- Ouvrez le fichier de configuration mosquitto.conf :
sudo nano /etc/mosquitto/mosquitto.conf
- Ajoutez les lignes suivantes à la fin du fichier pour définir les règles ACL :
acl_file /etc/mosquitto/acesscontrollist.conf
allow_anonymous true
password_file /etc/mosquitto/passwd
Cela indique Ă Mosquitto d’utiliser un fichier de règles ACL (acesscontrollist.conf), d’autoriser les clients anonymes Ă se connecter et d’utiliser un fichier de mots de passe pour l’authentification.
- Créez le fichier de règles ACL aclfile.conf en exécutant la commande suivante :
sudo nano /etc/mosquitto/aclfile.conf
- Ajoutez les règles suivantes au fichier aclfile.conf :
user admin
topic readwrite #
user student
topic read #
pattern read #
pattern read $SYS/#
Cela accorde Ă l’utilisateur “admin” les droits de lecture et Ă©criture sur tous les topics MQTT (utilisation de “#” pour reprĂ©senter tous les topics), et aux autres utilisateurs les droits de lecture uniquement sur tous les topics MQTT.
- Redémarrez le service Mosquitto pour appliquer les nouvelles règles de configuration :
sudo systemctl restart mosquitto
Maintenant, l’utilisateur “admin” aura des droits de lecture et Ă©criture sur tous les topics MQTT, tandis que les autres utilisateurs auront uniquement des droits de lecture
Pour tester
mosquitto_sub -h localhost -t "#" -u user -P password
mosquitto_pub -h localhost -t test/topic -u user -P password -m "Hello world!"
Si tout est configurĂ© correctement, admin devrait ĂŞtre en mesure de publier et de s’abonner Ă tous les topics, tandis que les autres users devraient seulement ĂŞtre en mesure de s’abonner Ă tous les topics.