# EoD MQTT Broker

# Introduction

Le EoD MQTT Broker permet de travailler avec MQTT, en gérant, configurant et souscrivant à des topics. Ce document décrit les principales fonctionnalités et mises à jour applicables au broker et à ses paramètres.

# Configuration du broker

# Variables d'environnement

Les variables d'environnement doivent être définies pour les différents environnements. Les autres parties du déploiement peuvent être effectuées comme d'habitude.

# Connexion au broker

# Sécurité et connexion

La connexion au EoD MQTT Broker nécessite une connexion MQTTS, utilisant une connexion sécurisée via SSL. La connexion doit se faire avec le certificat broker.eyeondata.eu. Une authentification à l'aide d'un nom d'utilisateur et d'un mot de passe est en outre nécessaire pour accéder au broker. Cela garantit que seuls les utilisateurs autorisés accèdent au broker et aux topics disponibles, les droits d'accès tels que la lecture, l'écriture et la souscription étant contrôlés.

L'authentification des utilisateurs se fait via Keycloak. Un plugin mosquitto lié à l'eodProcessor vérifie via Keycloak si le nom d'utilisateur et le mot de passe fournis sont valides, et valide l'accès au broker sur la base des droits configurés pour des topics spécifiques.

# Format JSON EoD et protocole Sparkplug

La structure JSON d'EoD repose sur le protocole Sparkplug, une approche standardisée pour la communication de données entre appareils et applications dans les applications IoT industrielles. Ce format assure un transfert de données efficace et fiable au sein des plateformes, les données étant structurées proprement en JSON et faciles à traiter pour la surveillance et l'analyse. Le protocole Sparkplug prend en charge aussi bien la communication publish-subscribe que request-response, ce qui le rend adapté à diverses applications, comme la surveillance d'appareils et de processus au sein de l'infrastructure EoD.

# Fonctionnalités et paramètres

# 1. Paramètres ACL pour l'accès au broker

Dans Mosquitto 1.5, quatre paramètres ACL (Access Control List) importants régissent l'accès aux topics. Ces paramètres déterminent si un client a accès à un topic spécifique pour différentes actions telles que la lecture, l'écriture et la souscription.

# Paramètres ACL disponibles :

  1. MOSQ_ACL_NONE (0x00)

    • Description : indique qu'aucun accès n'a été accordé au topic concerné. C'est la valeur par défaut lorsqu'aucun droit spécifique n'a été défini.
  2. MOSQ_ACL_READ (0x01)

    • Description : détermine si un client peut recevoir un message d'un topic (accès en lecture).
    • Utilisation : contrôlé lorsqu'un client souscrit à un topic et qu'un message est publié.
  3. MOSQ_ACL_WRITE (0x02)

    • Description : détermine si un client peut publier des messages vers un topic donné (droits d'écriture).
    • Utilisation : appliqué lorsqu'un client souhaite publier un message vers un topic.
  4. MOSQ_ACL_SUBSCRIBE (0x04)

    • Description : introduit dans Mosquitto 1.5 et utilisé lorsqu'un client tente de souscrire à un topic. Cela diffère de MOSQ_ACL_READ, car il s'agit spécifiquement de la souscription à un topic.
    • Utilisation : peut par exemple servir à empêcher un client de souscrire à des topics avec caractère générique comme #, tout en lui donnant accès à la lecture de topics spécifiques.

# Différence entre MOSQ_ACL_READ et MOSQ_ACL_SUBSCRIBE :

  • MOSQ_ACL_SUBSCRIBE est contrôlé lorsqu'un client tente de souscrire à un topic, avant l'envoi de messages.
  • MOSQ_ACL_READ est contrôlé lorsqu'un message est envoyé vers un topic et détermine si un client peut recevoir ce message.

# Exemple d'utilisation :

  • MOSQ_ACL_SUBSCRIBE : bloque une souscription générique telle que # pour tous les clients, mais autorise des sujets spécifiques, comme topic/1.
  • MOSQ_ACL_READ : autorise un client à accéder aux messages de topics spécifiques, même si les souscriptions génériques sont bloquées.

# Valeurs disponibles :

  • MOSQ_ACL_NONE : aucun accès.
  • MOSQ_ACL_READ : accès en lecture (réception de messages).
  • MOSQ_ACL_WRITE : droits d'écriture (publication de messages).
  • MOSQ_ACL_SUBSCRIBE : souscription à un topic.

# 2. Paramètres

# Configuration du préfixe MQTT

Le préfixe MQTT (par exemple la version de Sparkplug) peut être configuré par organisation. Ainsi, lors d'une mise à niveau de version, par exemple de 1.0 vers 1.1, un seul paramètre doit être modifié.

  • Paramètre : mqttPrefix='spBv1.0'
  • La valeur par défaut du topic par propriétaire est définie sur //+/.

# Accès pour les utilisateurs

Il est désormais possible d'ajouter une option permettant de donner aux utilisateurs accès au broker avec des droits et des topics spécifiques.

  • Droits : les utilisateurs peuvent obtenir l'accès au broker en fonction de leurs droits et de la configuration des topics autorisés.
  • Option IsSuper : l'option isSuper doit être masquée pour les connecteurs de données. Cette option ne peut donner accès à tous les topics d'une organisation aux utilisateurs internes (tels que root, admin, lead, member) que lorsqu'elle est activée. L'accès est limité aux topics de l'organisation concernée, par exemple spBv1.0/organisation/#.

# 3. Fonctionnalités

# Icône de copie pour les topics

Une icône de copie est ajoutée pour les topics, afin que les utilisateurs puissent facilement copier le nom d'un topic pour l'utiliser dans d'autres configurations.