# EoD MQTT Broker
# Inleiding
De EoD MQTT Broker biedt de mogelijkheid om te werken met MQTT, waarbij topics kunnen worden beheerd, geconfigureerd en geabonneerd. Dit document beschrijft de belangrijkste functionaliteiten en updates die van toepassing zijn op de broker en de instellingen.
# Configuratie van de Broker
# Environment Variables
Voor de verschillende omgevingen dienen de environment variables ingesteld te worden. De overige delen van de deployment kunnen zoals gebruikelijk doorgevoerd worden.
# Connectie met de broker
# Beveiliging en Verbinding
Voor de verbinding met de EoD MQTT Broker is een MQTTS verbinding vereist, waarbij gebruik wordt gemaakt van een beveiligde verbinding via SSL. De verbinding moet plaatsvinden met het broker.eyeondata.eu certificaat. Daarnaast is authenticatie noodzakelijk met een gebruikersnaam en wachtwoord voor toegang tot de broker. Dit zorgt ervoor dat alleen geautoriseerde gebruikers toegang krijgen tot de broker en de beschikbare topics, waarbij de toegangsrechten zoals lezen, schrijven en abonneren gecontroleerd worden.
De authenticatie van gebruikers gebeurt via Keycloak. Een mosquitto plugin gekoppeld aan de eodProcessor controleert of de opgegeven gebruikersnaam en wachtwoord geldig zijn door middel van Keycloak, en valideert de toegang tot de broker op basis van de ingestelde rechten voor specifieke topics.
# EoD JSON Formaat en Sparkplug Protocol
De EoD JSON structuur is gebaseerd op het Sparkplug protocol, een gestandaardiseerde aanpak voor het communiceren van gegevens tussen apparaten en applicaties in industriële IoT-toepassingen. Dit formaat zorgt voor een efficiënte en betrouwbare gegevensoverdracht binnen de platformen, waarbij de data netjes gestructureerd wordt in JSON en makkelijk te verwerken is voor monitoring en analyse. Het Sparkplug protocol ondersteunt het gebruik van zowel publish-subscribe als request-response communicatie, waardoor het geschikt is voor diverse toepassingen zoals het monitoren van apparaten en processen binnen de EoD infrastructuur.
# Functionaliteit en Instellingen
# 1. ACL Instellingen voor Broker Toegang
In Mosquitto 1.5 zijn er vier belangrijke ACL (Access Control List) instellingen die de toegang tot topics regelen. Deze instellingen bepalen of een client toegang heeft tot een specifiek topic voor verschillende acties zoals lezen, schrijven, en subscriben.
# Beschikbare ACL Instellingen:
MOSQ_ACL_NONE (0x00)
- Omschrijving: Geeft aan dat er geen toegang is verleend tot het betreffende topic. Dit is de standaardwaarde wanneer er geen specifieke rechten zijn ingesteld.
MOSQ_ACL_READ (0x01)
- Omschrijving: Regelt of een client een bericht kan ontvangen van een topic (leestoegang).
- Gebruik: Wordt gecontroleerd wanneer een client zich abonneert op een topic en er een bericht wordt gepubliceerd.
MOSQ_ACL_WRITE (0x02)
- Omschrijving: Regelt of een client berichten mag publiceren naar een bepaald topic (schrijfrechten).
- Gebruik: Wordt toegepast wanneer een client een bericht wil publiceren naar een topic.
MOSQ_ACL_SUBSCRIBE (0x04)
- Omschrijving: Wordt geïntroduceerd in Mosquitto 1.5 en wordt gebruikt wanneer een client probeert zich te abonneren op een topic. Dit verschilt van MOSQ_ACL_READ, omdat het specifiek gaat om subscriben op een topic.
- Gebruik: Kan bijvoorbeeld worden gebruikt om een client te verhinderen zich te abonneren op wildcard topics zoals
#, maar wel toegang te geven om specifieke topics te lezen.
# Verschil tussen MOSQ_ACL_READ en MOSQ_ACL_SUBSCRIBE:
- MOSQ_ACL_SUBSCRIBE wordt gecontroleerd wanneer een client zich probeert te abonneren op een topic, voordat berichten worden verzonden.
- MOSQ_ACL_READ wordt gecontroleerd wanneer een bericht naar een topic wordt gepusht en bepaalt of een client dit bericht mag ontvangen.
# Voorbeeld van Gebruik:
- MOSQ_ACL_SUBSCRIBE: Blokkeert een wildcard-subscribtie zoals
#voor alle clients, maar staat wel specifieke onderwerpen toe, zoalstopic/1. - MOSQ_ACL_READ: Staat een client toe om toegang te krijgen tot berichten op specifieke topics, zelfs als wildcard-subscribties geblokkeerd zijn.
# Beschikbare Waarden:
- MOSQ_ACL_NONE: Geen toegang.
- MOSQ_ACL_READ: Leestoegang (berichten ontvangen).
- MOSQ_ACL_WRITE: Schrijfrechten (berichten publiceren).
- MOSQ_ACL_SUBSCRIBE: Abonneren op een topic.
# 2. Instellingen
# MQTT-prefix Configuratie
Het MQTT-prefix (bijvoorbeeld de versie van Sparkplug) kan geconfigureerd worden per organisatie. Dit zorgt ervoor dat bij een versie-upgrade van bijvoorbeeld 1.0 naar 1.1 enkel één instelling gewijzigd hoeft te worden.
- Instelling:
mqttPrefix='spBv1.0' - De standaardwaarde voor het topic per eigenaar is ingesteld op
//+/.
# Toegang voor Gebruikers
Er kan nu een mogelijkheid worden toegevoegd om gebruikers toegang te geven tot de broker met specifieke rechten en topics.
- Rechten: Gebruikers kunnen toegang krijgen tot de broker op basis van hun rechten en de configuratie van de toegestane topics.
- IsSuper Optie: De
isSuperoptie moet verborgen worden voor dataconnectors. Deze optie mag enkel toegang geven tot alle topics van een organisatie voor interne gebruikers (zoals root, admin, lead, member) als deze geactiveerd is. De toegang wordt beperkt tot de topics van de betreffende organisatie, bijvoorbeeldspBv1.0/organisatie/#.
# 3. Functionaliteit
# Copy Icoon voor Topics
Er wordt een copy icoon toegevoegd voor topics, zodat gebruikers eenvoudig de naam van een topic kunnen kopiëren voor gebruik in andere configuraties.