zoukankan      html  css  js  c++  java
  • 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插件,并不需要进行插件的重新加载工作
     
     
    最终运行效果
     

  • 相关阅读:
    二叉查找树
    二叉树
    广度优先搜索
    深度优先搜索
    algorithm:next_permutation
    Grafana Labs 携手阿里云,将提供国内首款 Grafana 托管服务
    台积电TSMC一些技术特点
    TSMC台积电各种制程工艺技术
    激光雷达激烈竞争市场
    边端云处理器系列技术参数
  • 原文地址:https://www.cnblogs.com/weschen/p/15670547.html
Copyright © 2011-2022 走看看