VitaBox AD

2024年3月9日 星期六

[MQTT]Mosquitto的權限管理_使用者/密碼(pwfile)和訪問控制清單(aclfile)

延續Mosquitto的內網連接(intranet)和使用者/密碼權限設置文章,經解讀mosquitto官網文檔,在權限管理部分,除了設置使用者/密碼(pwfile)之外,還有訪問控制清單(Access Control List, aclfile)可以設置。經過測試,同時設置使用者/密碼和訪問控制清單,對於權限有實質的控管效果。

a.設置使用者/密碼文件(password_file)

如同Mosquitto的內網連接(intranet)和使用者/密碼權限設置文章,先行建置一個空白的password_file,並將兩位使用者user1和user2以及對應密碼設置於該文件中。

sudo touch password_file
sudo mosquitto_passwd -b password_file user1 password1
sudo mosquitto_passwd -b password_file user2 password2

b.設置訪問控制清單文件(acl_file)

1.同樣先行建置一個空白的acl_file,並用nano指令開啟該文件。

sudo touch acl_file
sudo nano /etc/mosquitto/acl_file

2.在acl_file定義user1和user2的對應讀寫權限。下列內容是賦予user1具有主題sensor_1的讀寫權限(即具備訂閱和發佈權限),而user2僅具有主題sensor_1的讀取權限(即具備訂閱權限)。

user user1 
topic readwrite sensor_1
 
user user2 
topic read sensor_1

c.設置mosquitto配置文件(mosquitto.conf)

在mosquitto.conf配置文件中,加入下列內容,定義pasword_file和acl_file的路徑位置,來啟用使用者/密碼驗證和訪問權限。

password_file /path/to/password_file 
acl_file /path/to/acl_file


完成上述設置後,請重新啟動 Mosquitto broker,即可自行測試發佈和訂閱是否具備權限控制的功能了。完整設定內容可參考下圖一。


圖一 mosquitto.conf設置內容


Reference:

1.MQTT

2.Mosquitto

沒有留言:

張貼留言