EMQX Docker允许访问$SYS系统主题

EMQX
发布订阅ACL:指对发布(PUBLISH)/订阅(SUBSCRIBE)操作的权限控制。
例如拒绝用户名为WesChen向open/elsa/door发布消息
EMQX支持通过客户端发布订阅ACL进行客户端权限的管理
 
 
 
目前开发环境是使用EMQX作为MQTT Broker,采用Docker的方式进行部署
 
默认的内置acl规则
复制代码
%% 允许 "dashboard" 用户 订阅 "$SYS/#" 主题
{allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}.

%% 允许 IP 地址为 "127.0.0.1" 的用户 发布/订阅 "$SYS/#","#" 主题
{allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}.

%% 拒绝 "所有用户" 订阅 "$SYS/#" "#" 主题
{deny, all, subscribe, ["$SYS/#", {eq, "#"}]}.

%% 允许其它任意的发布订阅操作
{allow, all}.
复制代码

 

 
 
 
 
最终在查询了很多资料后,最终在Docker Hub上看到相关的资料
https://hub.docker.com/r/emqx/emqx,其中Persistence中看到,如果需要将数据进行持久化,需要设置/opt/emqx/etc中的文件

 

 

 
docker-compose-emqx.yml
复制代码
version: '3'

services:
  emqx1:
    image: emqx/emqx:4.3.10
    environment:
    - "EMQX_NAME=emqx"
    - "EMQX_HOST=node1.emqx.io"
    - "EMQX_CLUSTER__DISCOVERY=static"
    - "EMQX_CLUSTER__STATIC__SEEDS=emqx@node1.emqx.io, emqx@node2.emqx.io"
    - EMQX_LOADED_MODULES="emqx_mod_acl_internal,emqx_mod_acl_internal/"
    healthcheck:
      test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
      interval: 5s
      timeout: 25s
      retries: 5
    networks:
      emqx-bridge:
        aliases:
        - node1.emqx.io
    ports:
      - 1883:1883
      # - 8081:8081        
      - 8083:8083
      - 8084:8084
      - 8883:8883
      - 18083:18083    
    volumes:   
      - ./emqx/acl.conf:/opt/emqx/etc/acl.conf   #配置文件    

networks:
  emqx-bridge:
    driver: bridge
复制代码

 

acl.conf
复制代码
{allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}.
 
{allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}.
 
{allow, all, subscribe, ["$SYS/brokers/+/clients/#"]}.
 
{allow, all, subscribe, ["$SYS/#", {eq, "#"}]}.
 
{allow, all}.
复制代码

 

 
 
原本地Windows或是Linux上使用包安装EMQX,在设置了acl后,需要运行命令
./bin/emqx_ctl modules reload emqx_mod_acl_internal
但在使用docker时,只需要指定文件就可以了,将进行替换,然后运行EMQX时,会自动加载acl插件,并不需要进行插件的重新加载工作
 
 
最终运行效果

 

 

 

posted @   WesChan  阅读(1169)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2018-12-10 CentOS7 Nodejs布署环境
点击右上角即可分享
微信分享提示