Mosquitto MQTT Broker 2.0 with Dynamic Security Plugin for Role-Based Access Control using Docker Compose Init Containers
| Name | Version | Purpose |
|---|---|---|
eclipse-mosquitto |
2.0.14 |
MQTT v3.1.1/v5 Broker |
cedalo/management-center |
2.3.4 |
Web-based UI for RBAC fine-tuning |
NOTE: this feature is similar to Kubernetes Init Containers, which is available for Docker Compose since version 1.29.
The Init Container can initialize your container by using the depends_on spec. Depending on the
intialization process, you can set three conditions of the container's state you wish to initialize:
service_startedservice_healthyservice_completed_sucessfully
Unfortunately, this feature is yet to be documented. However, some resources to look into:
- Feature Request Issue on Docker Compose
- Pending Pull-Request for Documentation of Init Containers
- StackExchange Query with a possible example
Create an external docker network
docker network create proxy-networkdocker compose upYou will see that init-mqtt service bootstraps the mqtt service by:
- generating the
dynamic-security.jsonfile in theinit-mqttcontainer - the JSON file is available to
mqttservice via themqtt-dynsecshared volume
docker compose down --volumes # purge the created JSON file if you want to restart again| Service | Port |
|---|---|
| MQTT Broker | 1883 |
| MQTT management Center | 8088 |
- Login into
http://localhost:8088(see credentials incedalo.env) - Click on Top-Left Icon to expand the Options
- Click on Clients to generate new users that can Publish / Subscribe to the Broker
You will have to go through the Dynamic Security Plugin Documentation from Mosquitto in order to understand what Clients, Groups, Roles are for fine granularity on MQTT Topics using RBAC mechanism.
Docker Engine version
Client:
Version: 20.10.12
API version: 1.41
Go version: go1.17.5
Git commit: e91ed5707e
Built: Mon Dec 13 22:31:40 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.12
API version: 1.41 (minimum version 1.12)
Go version: go1.17.5
Git commit: 459d0dfbbb
Built: Mon Dec 13 22:30:43 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.6.1
GitCommit: 10f428dac7cec44c864e1b830a4623af27a9fc70.m
runc:
Version: 1.1.0
GitCommit: v1.1.0-0-g067aaf85
docker-init:
Version: 0.19.0
GitCommit: de40ad0Docker Compose CLI Version (part of docker CLI)
Docker Compose version 2.3.3