ACL 共享Topic權限控制(MySQL) 特定使用者可管理(發布與訂閱)特定Topic同時該Topic資料可共享給其他使用者僅訂閱的權限

此篇接續之前ACL權限控制文章 /2019/04/13/acl-使用者topic權限控制mysql/ 以如上圖id16與id17的欄位資料為範例 id:16 欄位主要意思為給予全部使用者可以訂閱public/#這個Topic權限,但是僅限接收資料,其他使用者是無法發送資料到此Topic的 id:17 欄位主要意思為使用者bear擁有public/#這個Topic的最大權限,可發布與訂閱該Topic資料給其他訂閱者接收資料

ACL 使用者Topic權限控制(MySQL) 個別使用者僅可訂閱與發送自身使用者名稱下的Topic

前置條件安裝emqtt與Mysql或mariadb 進入到圖形管理介面後選擇Plugins->config來進行資料庫連線的設定 輸入資料庫帳號與連線(下圖紅色圈圈處) 在資料庫中建立簡單的幾個使用者 註:每個使用者的密碼均為預設的sha256雜湊後的結果 前面幾筆為預設設定,主要為避免非管理者的權限過大。 下圖id編號12以後的欄位即為acl控制的系統機制,每個使用者個別的新增一或多筆的額外權限控制 經過上述設定後會產生如下結果 使用者bear僅可訂閱與發送bear/#之下的任意Topic資料 使用者test僅可訂閱與發送test/#之下的任意Topic資料 任意一般使用者無法訂閱或發送其{使用者名稱}/#之外的Topic資料 例如 使用者test想要訂閱aaa的Topic將會無法取得到資料 使用者test想要發送資料到aaa的Topic將無法成功將資料發送到該Topic 使用者bear想要訂閱test/3的Topic將無法取得到資料 使用者bear想要發送資料到test/3的Topic將無法取得到資料

Docker registry 快速建構與使用者建立

在使用以前請先安裝docker-compose指令(方便儲存容器的各項環境變數) 建立資料夾並建立一個docker-compose.yml的檔案 編輯docker-compose.yml 儲存(Ctrl+O)後輸入下列指令來自動建立需要的容器與空間 進入容器並建立個別使用者

開啟Docker daemon

編輯Docker服務設定 編輯內容(僅需要更動下列紅色的那一行) 儲存檔案(快捷鍵:Ctrl+O)後輸入下列指令開啟防火牆的2376 port