五、Mosquitto 高階應用之許可權管理

NO IMAGE

五、Mosquitto 高階應用之許可權管理

  本文將講解 Mosquitto 許可權管理、如果還沒有搭建 Mosquitto 服務的可以參考我的另外兩篇文章<< 一、Mosquitto 介紹&安裝>> << 二、 Mosquitto 的使用說明 >> 來搭建 Mosquitto 服務。

  Mosquitto 許可權是根據 topic 控制的、類似與目錄管理。您可以設定每個使用者訂閱/釋出許可權、也可以設定每個使用者可訪問的topic範圍、從而達到許可權控制的目的。
  這裡我們需要用到<<四、Mosquitto 高階應用之使用者配置>> 中建立的2個使用者。

  1: 給這兩個使用者配置不同的許可權

    admin 設定為訂閱許可權,並且只能訪問的主題為”root/topic/#”

    mosquitto 設定為釋出許可權,並且只能訪問的主題為”root/topic/#”

    如果用 admin 進行釋出是不會成功的、反過來用 mosquitto 進行訂閱同樣不會接受到任何資訊。因為他們的許可權不同。

  2: 增加許可權配置

    開啟配置檔案 aclfile.example 在其中新增如下配置資訊。

user admin
topic read root/topic/#
user mosquitto
topic write root/topic/#

# This affects access control for clients with no username.
topic read $SYS/#

# This only affects clients with username “roger”.
user roger
topic foo/bar

# This affects all clients.
pattern write $SYS/broker/connection/%c/state

# This is a bridge user.
user hthl_bridge
topic/#

user admin
topic read root/topic/#
user mosquitto
topic write root/topic/#

# 服務程序的PID
pid_file /var/run/mosquitto.pid
# 服務程序的系統使用者
user mosquitto
# 服務繫結的IP地址
bind_address centoshostnameKL3
# 服務繫結的埠號
port 1883
# 允許的最大連線數,-1表示沒有限制
max_connections -1
# 允許匿名使用者true
allow_anonymous false
# # 使用者/密碼檔案,預設格式:username:password
password_file /etc/mosquitto/pwfile
# # 配置使用者訪問控制
acl_file /etc/mosquitto/aclfile

admin:$6$y1gIy8QixvxlVqH2$Jzf f7A4vTcuKpceVciwi8qL07Q8wkCPGZaFlTqWqHl6Tz4OySA/jNjDHDMiLez3R04s79teDcrFIJBmR4XBgQ==
mosquitto:$6$vc2qZdyCBKl1mroB$tLyPqKO9nshKkYfrj8F7lzzAr60x6n9cx4i2Fuvq1gh8dFCqsoXKNrIxQdKXU/E YNhK0PG6ffAGeQ1jVVBwbQ==
hthl_bridge:$6$/tsqpcivgBm0mo3r$kaC4xrLLhUYXE6mU28ZymgQ7HEqblY67CN2dn15rnuR7DCYs9w5jeVCuuCIPIW2 kb6ELgflTrLdD2Bhntf9bg==
~                                                                                                                           

read 訂閱許可權 、write 釋出許可權、# 萬用字元表示所有的、儲存退出。

  3:修改 Mosquitto.conf 配置選項

    開啟mosquitto.conf檔案,找到acl_file節點。開啟配置做如下修改:
    修改前:#acl_file
    修改後:acl_file /etc/mosquitto/aclfile.example 根據自己檔案實際位置填寫