Node-RED:啟用使用者身分驗證、建立帳號密碼以保護資訊安全

2021/11/18 2,369 4 網站技術 , 資訊安全 , Node.js , Node-RED

Node-RED 預設是無帳號與密碼的,因此若建立在公開的伺服器上就是不安全的,任何人都可以透過 IP 或網域連上平台,且直接修改及部屬編輯器上的節點,因此我們要運用其內建的使用者身分驗證機制來保護平台的資訊安全。首先您必須先找到設定檔 settings.js,通常在 Node-RED 的根目錄上,這個設定檔的完整路徑首次啟動會顯示在終端機上,接著在設定檔中加入 adminAuth 屬性,裏頭有使用者的帳號、密碼(採用 Bcrypt hash 加密保護)及權限設定,儲存後重新啟動即生效。


▲ 在終端機啟動 Node-RED 會跑出這一串的資訊,設定檔的完整路徑就在紅色箭頭處!

▲ 在 Windows 環境下預設是在 C:\Users\user\.node-red 之下,找到並開啟 settings.js

▲ 在 settings.js 中的最末端 } 之前加入以下原始碼:

adminAuth: {
    type: "credentials",
    users: [
        {
            username: "admin",
            password: "$2a$08$BEilbSe2PH5yRaONFPu1bOIjM8h/sZD/NeAUPdMx2/TSo31Z3DblW",
            permissions: "*"
        },
        {
            username: "george",
            password: "$2a$08$7WuCxN/Vl9dRKRyPIfs4/OsJmdJwcPBHJjpacS6qWztYsIok1WOau",
            permissions: "read"
        }
    ]
}

以上兩密碼之 Bcrypt hash 解密,可給大家測試用:
$2a$08$BEilbSe2PH5yRaONFPu1bOIjM8h/sZD/NeAUPdMx2/TSo31Z3DblW -> password
$2a$08$7WuCxN/Vl9dRKRyPIfs4/OsJmdJwcPBHJjpacS6qWztYsIok1WOau -> 123456789

這裡我們加入了 adminAuth 屬性到設定檔中,並指定兩個使用者,密碼皆是採用 Bcrypt hash 加密保護,這邊可以自行透過一些生成器產生,測試的話可以用線上生成的方式,舉例來說:Bcrypt-Generator.com,admin 擁有完整權限、user 則只有瀏覽權限,不能編輯及部屬節點。設定檔儲存後要重新啟動 Node-RED 才會生效。


▲ Node-RED 重新啟動後用瀏覽器開啟平台,可以發現到內建的登入畫面,現在開始要登入才能使用 Node-RED。

▲ 右上方可以簡單得知現在登入的使用者及做登出的動作。

贊助廣告 ‧ Sponsor advertisements

留言區 / Comments

萌芽論壇