セキュリティVセキュリティデフォルトのNode-REDエディタはセキュアではありません。実行環境のIPアドレスとポートにアクセス可能な誰もがエディタにアクセスしてフローを変更することができます。この方法は信頼できるネットワーク上で実行されている場合のみ適しています。このセクションでは、Node-REDをセキュアにする方法を記載しています。セキュリティは2つのパートに分けられます。Dashboardのセキュリティエディタおよび管理APIのセキュリティエディタおよび管理APIは以下の2種類の認証をサポートしています。設定ファイルのadminAuthプロパティのコメントアウトを解除します。]}usersプロパティはユーザオブジェクトの配列です。これを使うと複数のユーザーが異なるアクセス許可を持つような設定が可能です。上述の設定例は2人のユーザを定義しています。adminというユーザはエディタ内のすべてを実施できる権限を持ち、passwordというパスワードを持っています。georgeというユーザは読み込み権限のみを与えられています。パスワードは安全性を高めるためにbcryptアルゴリズムを使用してハッシュ化されていることに注意してください。有効にするとエディタにHTTPベーシック認証を使用することができました。この設定は非推奨であり、使用ですべきではありません。適したパスワードのハッシュ値を生成するためには、node-red-adminツールを利用することができます。ツールのインストール手順はこちらで確認できます。hash-pwツールは、あなたが使いたいパスワードの入力を求め、ハッシュ値を出力します。その値を設定ファイルにコピーしてください。パスワードハッシュ値を生成することができます。提供される幅広い認証機構を利用することができます。GitHubの両方を利用することができます。両者は、簡単に利用できるように、認証機構に応じた細部がラップされています。これらは同様の機構による認証の雛形としても利用することができます。Twitterを利用した認証機能を設定する方法を示しています。]};strategyプロパティは以下の項目を設定します。ログインページで利用されます。iconはFontAwesomeのアイコン名です。Passportのstrategyが生成されてたときに引き渡されるoptionsオブジェクトです。必要なものはstrategy自体のドキュメントを参照してください。callbackURLについては以下を参照してください。この認証方法によって利用される検証処理を指定します。ユーザが正当な場合、ユーザプロフィールを第2引数としてdoneを呼び出す必要があります。ユーザプロパティは、アクセスを許可されているユーザの一覧での確認に利用されるusernameプロパティを保持させてください。そのためほとんどの認証方法でこのプロパティが提供されます。strategyによって利用されるcallbackURLは、認証プロバイダが認証を試行したあとのリダイレクト先です。これは/auth/strategy/callbackを付け足したNode-REDのエディタのURLにしなくてはなりません。http://localhost:1880/auth/strategy/callbackという値を設定します。ログインしない限りエディタにアクセスできません。ユーザがログインしなくても任意のアクセスレベルを提供したい場合もあります。エディタへの読み取り専用アクセス権の付与などです。adminAuth設定にdefaultプロパティを以下のように追加します。0.14以前では、ユーザーは以下の2つの権限のうち、いずれかを持つことができました。以前と同様に単一の文字列または複数の権限を含んだ配列をプロパティに指定することができます。APIの各メソッドは、アクセスするために必要な権限レベルが定義されています。権限モデルはリソースに依存します。現在のFlow設定を取得するためにはユーザはflow.read権限が必要になります。フローを更新するためにはflows.write権限が必要になります。トークン有効期限デフォルトでは、アクセストークンのデフォルトの有効期限は7日間です。この期間を延長するためのトークンの更新は現在サポートされていません。プロパティを変更することでカスタマイズすることができます。トークンの有効期間は秒単位で定義します。1日後にトークンの有効期限が切れるようにするには以下のように設定します。APIドキュメントで説明しています。設定ファイルにユーザ情報をハードコーディングせずにユーザー認証をおこなうことも可能です。既存の認証システムと統合することができます。以下のように作成します。ユーザ名が存在すればユーザオブジェクトを返す。プロパティは必須です。ユーザ名が存在しない場合はnullを返す。ユーザー名/パスワードの組み合わせが有効な場合はユーザオブジェクトを返す。users(username);を呼び出すのと同様です。デフォルトユーザのユーザオブジェクトを返す。デフォルトユーザが存在しない場合、nullを返す。}}このモジュールをロードするため、setting.jsファイルのadminAuthプロパティを以下のように設定します。require("./user-authentication")HTTPノードのセキュリティHTTPノードによって公開されるルートはBasic認証を利用することで保護することができます。ルートへアクセスできる単一のユーザ名およびパスワードを設定することができます。{user:"user",pass:"$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN."},passプロパティは、adminAuthと同様の書式で利用することができます。詳細な情報はパスワードのハッシュ値生成を参照してください。httpStaticAuthプロパティを同様の書式で利用することにより保護できます。MD5によるハッシュ値が利用されました。adminAuthで利用されているような、bcryptに変更されています。後方互換性を確保するため、MD5ハッシュもサポートされていますが、推奨できません。行動規範コミュニティブログTwitterフォーラムSlackSlack(日本ユーザ会)Facebookグループ(日本ユーザ会)。