Raspberry PiにおけるNode-REDで、セキュリティ設定を実施する
Raspberry PiにおけるNode-REDの活用について に 記載したように、 RaspbianでNode-REDを動作させるとpiユーザで実行されるため、Flow Editorからexecノードを使われてしまうと管理者権限でRaspberry Piの全操作が可能になってしまいます。
まったくインターネットからアクセスできないRaspberry Piでも、最低でもログイン画面設定は実施する必要がありますが、settings.jsの編集が必要なため、初心者には難しいという話がありました。
そこで、settings.jsを編集しパスワードを設定する「nrpiadminpass.sh」というスクリプトを作成しました。
nrpiadminpass.sh
https://gist.github.com/utaani/2243b7501a2cde52d93cb85c91f173e8
このスクリプトを使うことで、settings.jsをエディタで編集しなくてもFlowEditorのセキュリティ設定ができます。
スクリプト導入方法
wget https://gist.githubusercontent.com/utaani/2243b7501a2cde52d93cb85c91f173e8/raw/94b8c72c8a358670e0eb389b30de58993adbe6f8/nrpiadminpass.sh
なお、URLが長いので、githubで提供されている短縮URLサービスを使って https://git.io/nrpiadminpass.sh という短縮URLを作りましたので、
wget https://git.io/nrpiadminpass.sh
でも導入可能です。
スクリプト実行方法
bashスクリプトですので、
bash nrpiadminpass.sh パスワード文字列
で実行可能です。
直接 /home/pi/.node-red/settings.js
を編集しますので、Node-REDを一度も起動していないRaspberry Piで実行するとエラーになります。その場合は、一度 node-red-start
で起動した後、実行してください。
また、すでに手動でsettings.jsを編集された場合にはエラーになり動作しませんので、その場合は
//adminAuth: {
// type: "credentials",
// users: [{
// username: "admin",
// password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
// permissions: "*"
// }]
//},
のように、元の形式に編集しなおしてから実行してください。
実行後は、以下のようにadminAuthの行のみコメントが外され、bcryptされたパスワードが設定されます。
// Securing Node-RED
// -----------------
// To password protect the Node-RED editor and admin API, the following
// property can be used. See http://nodered.org/docs/security.html for details.
adminAuth: { type:"credentials", users: [{ username: "admin", password: "$2a$10$MQFIBU4L6ZhkznKMt2Dh6ucb1xQwLqjPUOB5ZrwwUOgU2ttkuzAlq", permissions: "*" }] },
// type: "credentials",
// users: [{
// username: "admin",
// password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
// permissions: "*"
// }]
//},
ファイル編集しただけでは、実行中のNode-REDには影響しませんので、node-red-restart
コマンドでNode-REDを再起動してください。FlowEditorにログインしている場合は、ブラウザをリロードする必要があります。
このように認証ダイアログが表示されたら設定完了です。なお、このスクリプトでは、ユーザ名はadminに固定されますので、パスワードにスクリプトで指定したパスワード文字列を入力してログインできます。
パスワードを変更したい場合は、もう一度
bash nrpiadminpass.sh 新しいパスワード文字列
で変更できます。設定時と同様にnode-red-restart
コマンドでNode-REDを再起動する必要があります。さらに、FlowEditorにログインしている場合は、右上のメニューより一度ログアウトする必要があります。