Skip to content

多要素認証(MFA)

EMQX 5.9.0では、EMQXダッシュボードのセキュリティを強化するために多要素認証(MFA)機能を導入しました。この機能は、ログイン時にユーザーが2段階の認証プロセスを完了することを要求します。このプロセスにより、パスワードと時間ベースのワンタイムパスワード(TOTP)を用いてユーザーの本人確認を行い、不正アクセスを防止する追加のセキュリティ層が提供されます。

本ページでは、EMQXダッシュボードにおけるMFAの設定および利用方法について、ユーザーおよび管理者の視点から説明します。

主要な概念

  • MFA:ユーザーのパスワードと、認証アプリによって生成されるTOTPなどの第二の認証要素の2種類の本人確認を必要とするセキュリティ機能です。
  • TOTP:Google AuthenticatorやAuthyなどの認証アプリが、サーバーと共有された秘密情報に基づいて生成する一時的なコードです。
  • QRコード:認証アプリでのセットアップを簡単にするために、共有秘密情報をグラフィカルに表現したコードです。

MFAの動作概要

EMQXダッシュボードでMFAが有効化されると、ログインプロセスに追加のセキュリティ層が加わります。MFAの流れは以下の通りです。

  1. ユーザーログイン:通常通り、ユーザー名とパスワードを入力してログインを試みます。
  2. MFAプロンプト:アカウントにMFAが有効な場合、認証アプリ(Google AuthenticatorやAuthyなど)で生成された検証コードの入力を求められます。
  3. 初回セットアップ:MFAが未設定の場合、QRコードをスキャンするか、秘密鍵を認証アプリに手動で入力してセットアップを完了します。
  4. 以降のログイン:初回セットアップ後は、ログイン時に認証アプリを開き、生成された時間制限付きコードを入力してログインを完了します。

MFAの目的は、パスワードが漏洩しても認証アプリのコードがなければログインできないようにし、アカウントの不正利用を防ぐことです。

TIP

アカウント保護のため、TOTPのセットアップは速やかに完了させることが重要です。
自身のアカウントまたは他ユーザーのためにTOTPを有効化した後は、できるだけ早くQRコードをスキャンするか秘密鍵を認証アプリに登録してください。
この手順の遅延は、ログイン情報が漏洩した場合に不正登録のリスクを高める可能性があります。

MFAの有効化と設定

MFAはデフォルトで無効です。ユーザーに対してMFAを有効化するには、管理者がシステムをMFA対応に設定し、個別ユーザーに対して設定を行う必要があります。MFAの有効化・無効化は管理者権限を持つユーザーのみが実行可能です。

ダッシュボードの全ユーザーに対してMFAをデフォルトで有効化する

全ダッシュボードユーザーに対してMFAをデフォルトで有効にするには、管理者が設定ファイルの dashboard.default_mfa を設定します。値は none(MFA無効)または {mechanism: totp}(TOTPベースのMFA有効)が指定可能です。

設定例:

bash
dashboard.default_mfa = {mechanism: totp}

EMQXダッシュボードからユーザーに対してMFAを有効化する

管理者はダッシュボード上で以下の手順でユーザーにMFAを有効化できます。

  1. ダッシュボードの左メニューから System -> Users をクリックします。
  2. Users ページでユーザー一覧が表示されます。対象ユーザーの Actions 列にある MFA Settings をクリックします。
  3. MFA Settings ダイアログで Enable をクリックし、該当ユーザーのMFAを有効化します。

補足

自身のアカウントに対してダッシュボードからMFAを有効化すると、同じセッション内で即座にMFAセットアップが求められます(初回セットアップ参照)。

管理者が他ユーザーに対してMFAを有効化した場合、そのユーザーが次回ログインするまでMFAの入力は保留されます。

TOTP秘密鍵のリセット

認証アプリをアンインストールした場合や秘密鍵が漏洩した場合など、ユーザーのTOTP設定をリセットする必要がある場合は、管理者が MFA Settings ダイアログから秘密鍵をリセットできます。

  1. System -> Users ページで、TOTP秘密鍵をリセットしたいユーザーを探し、Actions 列の MFA Settings をクリックします。
  2. MFA Settings ダイアログ内にある Reset TOTP Secret Key ボタンをクリックします。
    確認ダイアログが表示され、秘密鍵のリセットにより以前の秘密鍵は無効になることが通知されます。ユーザーは次回ログイン時に新しいTOTP秘密鍵のセットアップが必要です。
  3. Confirm をクリックしてリセットを確定します。リセット後、ユーザーは次回ログイン時に新しいQRコードのスキャンまたは秘密鍵の入力による初回セットアップを行う必要があります。

設定ファイルおよびREST APIによるMFAの有効化と管理

管理者は設定ファイルやREST APIを通じてユーザーのMFAを有効化・管理できます。

TIP

/users/{username}/mfa エンドポイントへのPOSTおよびDELETEメソッドは、管理者または該当ユーザー本人のみが利用可能です。
「ビューア」ロールのユーザーは他ユーザーのMFA設定を変更できません。現在の認証トークン(ベアラートークン)に紐づくユーザーのみが自身のMFA設定を変更できます。

REST APIのロールベースアクセス制御の詳細は、Roles and Permissionsをご覧ください。

特定ユーザーに対してMFAを有効化する

管理者は以下のリクエストボディを付けて /users/{username}/mfa エンドポイントに POST リクエストを送信することで、特定ユーザーのMFAを有効化できます。

json
{
  "mechanism": "totp"
}

特定ユーザーに対してMFAを無効化する

管理者は /users/{username}/mfa エンドポイントに DELETE リクエストを送信することで、特定ユーザーのMFAを無効化できます。

MFAを使ったログイン方法

ユーザーはアカウントにMFAが有効化されると、以下の手順でEMQXダッシュボードにログインします。

初回セットアップ

MFA有効化後、初めてログインする際に認証アプリのセットアップを行います。

  1. ユーザー名とパスワードの入力
    ログインページで通常通りユーザー名とパスワードを入力します。

  2. QRコードのスキャンまたはセットアップキーの入力
    パスワード認証後、ダッシュボードがQRコードのスキャンまたはセットアップキーの手動入力を求めます。認証アプリにこれらを登録してセットアップを完了してください。

  3. 認証アプリのコードを検証
    認証アプリは今後のログインに使う時間制限付きコードを生成します。生成されたコードを入力し、Confirm をクリックして検証します。
    コードは通常30秒程度の有効期限があるため、速やかに入力してください。

MFAログイン画面

以降のログイン

初回セットアップ完了後は、認証アプリを使ってログインします。

  1. ユーザー名とパスワードの入力
    通常通りユーザー名とパスワードを入力します。

  2. TOTPコードの入力
    パスワード認証後、認証アプリが生成するTOTPコードの入力を求められます。

  3. ログイン成功
    入力したコードが有効であれば、ダッシュボードにログインできます。

  4. コードが無効な場合
    コードが誤っているか期限切れの場合、エラーメッセージが表示されます。その場合は認証アプリの最新コードを再度入力してください。