当社で構築・保守している Drupal のブログで、管理者アカウントを不正ログインから守るために、二段階認証(TFA)を設定しました。この記事では、そのとき実際に操作した画面を使って、設定の手順と、それぞれの設定がなぜ必要なのかを解説します。
使うのは、Drupal.org で公開されている公式の「Two-factor Authentication(TFA)」モジュールと、スマートフォンの認証アプリ「Google Authenticator」です。設定は6つのステップで、5分ほどで終わります。
先に結論をお伝えすると、二段階認証を設定したら、リカバリーコードの保存まで必ず済ませてください。スマートフォンを失くしたときに、管理画面に入れなくなるのを防げます。
Drupalの二段階認証(TFA)とは?
二段階認証は、パスワードに加えて、もう1つの確認を求めるログインの方法です。英語では Two-Factor Authentication といい、「2FA」や「TFA」と略されます。Drupal のモジュール名は「TFA」です。
ふつうのログインは、パスワードという「知っているもの」だけで本人かどうかを確かめます。二段階認証では、それに加えて、スマートフォンという「持っているもの」に表示される6桁の数字を入れます。

二段階認証のメリット
| メリット | 内容 |
|---|
| パスワードが漏れても入られない | 他人がパスワードを知っても、手元のスマートフォンに出る6桁が無ければログインできません |
| 総当たり・使い回しへの対策になる | パスワードを片っ端から試す攻撃や、ほかのサービスから漏れたパスワードを試す攻撃を止められます |
| サイトの乗っ取りを防ぐ | 管理画面に入られると、ページの書き換え、偽の記事の公開、情報の持ち出しなどに使われます。その入口を固くできます |
| 役割ごとに必須にできる | TFA モジュールでは、「管理者は必須」「記事を書く人も必須」のように、役割ごとに設定できます |
認証アプリ(Google Authenticator)とは
Google Authenticator は、Google が無料で提供しているスマートフォンのアプリです。
iPhone は App Store、Android は Google Play から入れられます。
サイトを登録すると、そのサイト専用の6桁の数字が表示されます。
この数字は30秒ごとに変わる、使い捨てのパスワードです。
スマートフォンの中で計算して作るので、インターネットにつながっていなくても表示されます。
TFA モジュールは、この「時間で変わる使い捨てのパスワード」(TOTP)に対応したアプリであれば使えます。
Microsoft Authenticator など、ほかの認証アプリでも同じ手順で設定できます。
この記事で扱うモジュール
この記事で扱うのは、Drupal.org の「Two-factor Authentication(TFA)」モジュールです。
miniOrange などが提供している別の二段階認証のモジュールとは別物で、設定の画面やリカバリーコードの仕組みが違います。
ほかのモジュールを使っている場合は、そのモジュールの説明書に従ってください。
設定前に準備するもの
| 準備するもの | 内容 |
|---|
| スマートフォン | Google Authenticator を入れておきます |
| ログインできるアカウント | ユーザー名とパスワード。設定の途中で、パスワードをもう一度聞かれます |
| リカバリーコードの保存先 | パスワード管理ソフト、または紙と鍵のかかる保管場所 |
| (サイトの管理者)TFA モジュール | サイトに TFA モジュールが入っていて、二段階認証が使える状態になっていること |
この記事の動作環境
Drupal は、バージョンによって画面やモジュールの対応状況が違います。この記事は、次の環境で確かめた内容です。
| 項目 | 内容 |
|---|
| Drupal | 11.4.11 |
| TFA モジュール | 8.x-1.13(2026年9月16日公開の安定版。Drupal 10・11 に対応) |
| 関連モジュール | Key 8.x-1.22、Encrypt 8.x-3.3、Real AES 8.x-2.6(二段階認証の秘密の情報を、暗号化して保存するため) |
| PHP | 8.3(TFA モジュールには OpenSSL 拡張が必要) |
| 認証アプリ | Google Authenticator(iPhone・Android) |
| 確かめた日 | 2026年11月3日 |
TFA モジュールには、新しい 2.0 系もあります。
ただし、2026年11月時点の公式のプロジェクトページでは、2.0 系に既知のセキュリティの問題があり、本番のサイトに入れないよう注意が書かれています。本番のサイトでは、安定版の 1.x 系(この記事では 1.13)を使ってください。
Drupalの二段階認証を設定する6ステップ
全体の流れは、次の6つです。

管理画面を日本語にしていても、二段階認証の画面は英語のまま表示されることがあります。
この記事では、ボタンの名前を画面のとおり英語で書いています。
01. Drupalのアカウントにログイン
ログインの画面で、ユーザー名とパスワードを入れてログインします。
サイトによっては、ロボットではないことを確かめる欄(CAPTCHA)もあります。

二段階認証が必須の役割(管理者など)で、まだ設定していないと、ログインしたあとに次の文が表示されます。
「二段階認証の設定が必要です。残りは2回で、そのあとはログインできなくなります」という意味です。

設定しないままログインできるのは、決まった回数まで(今回の環境では3回)です。
管理者が設定を後回しにしたまま、パスワードだけで使い続けないようにするための仕組みです。
02. 二段階認証の設定画面を開く
管理画面の左下にある自分の名前を押して、自分のアカウントのページを開きます。
上に並んだタブ(ビュー・スケジュール済・編集・TFA)から「TFA」を押してください。

「Status: TFA disabled」は、まだ設定していない状態です。
「TFA application」の下にある「Set up application」を押します。
「現在のパスワード」を聞かれるので、ログインに使っているパスワードを入れて「確認」を押します。

ここでパスワードをもう一度聞かれるのは、ログインしたまま席を離れたすきに、他人に設定を変えられないようにするためです。
03. Google AuthenticatorでQRコードを読み取る
認証アプリの一覧と、QR コードが表示されます。
スマートフォンで Google Authenticator を開き、右下の「+」から「QR コードをスキャン」を選んで、画面の QR コードを読み取ります。

アプリにサイトの項目が追加され、6桁の数字が表示されます。
QR コードを読み取れないときは、QR コードの上の欄にある文字(セットアップ用の文字)を、アプリの「セットアップキーを入力」から手入力しても登録できます。
QR コードとセットアップ用の文字は、秘密の鍵そのものです。
これがあると、他人のスマートフォンでも同じ6桁を作れてしまいます。
画面を撮影して人に送ったり、どこかに載せたりしないでください。この記事の画像も、その部分を伏せています。
04. 6桁の認証コードを入力する
同じ画面の下にある「Application verification code」の欄に、アプリに表示されている6桁を入れて「Verify and save」を押します。

ここで6桁を一度入れるのは、アプリへの登録が正しくできたかを確かめるためです。
数字が切り替わる直前に入れると間に合わないことがあるので、切り替わった直後に入れると確実です。
「TFA setup complete.」と表示され、Status が「TFA enabled」に変われば、認証アプリの登録は完了です。
05. リカバリーコードを保存する
続けて、同じ画面の「Recovery Codes」の下にある「Generate codes」を押します。

リカバリーコードは、スマートフォンが使えないときに、6桁の代わりに使う予備のコードです。
いくつかまとめて表示され、それぞれ1回だけ使えます。
保存すると、「Recovery Codes」の下が「Reset codes」と「Show codes」に変わります。

リカバリーコードは、スマートフォンを失くしたときの唯一の入口です。
保存場所は、次のように選んでください。
| 保存場所 | おすすめ度 | 理由 |
|---|
| パスワード管理ソフト | ◎ | 暗号化して保管でき、スマートフォンを失くしても別の端末から見られます |
| 紙に書いて、鍵のかかる場所へ | ○ | ネットから盗まれる心配がありません。置き場所を決めておきます |
| スマートフォンのメモ・写真 | × | スマートフォンごと失くすと、コードも一緒に失くします |
| メール・チャット・共有フォルダ | × | ほかの人に見られたり、乗っ取られたときに一緒に盗まれたりします |
06. ログインして動作を確認する
最後に、一度ログアウトして、もう一度ログインします。
パスワードのあとに6桁の入力を求められるので、アプリに出ている数字を入れます。
ログインでき、01 の英語の文が出なくなれば完了です。
TFA モジュールには、短い時間に何度も間違えると、しばらくログインできなくなる仕組み(総当たり対策)があります。
動作を試すときに、わざと何度も間違えないようにしてください。
二段階認証が設定できないときの対処法
| こんなとき | 主な原因 | 対処 |
|---|
| QRコードを読み取れない | 画面が小さい・暗い、アプリにカメラの使用を許可していない | 画面を拡大して明るくし、カメラの使用を許可します。それでも読めなければ、セットアップ用の文字を手入力します |
| 6桁の認証コードが通らない | アプリで別のサイトの数字を見ている、入れている途中で数字が変わった | アプリの項目の名前を確かめ、数字が切り替わった直後に入れ直します |
| 認証コードの有効時間が切れる | 数字は30秒ごとに変わり、古い数字は使えない | 入れ直すときは、アプリに今出ている新しい数字を使います |
| スマートフォンの時刻がずれている | 日時を手動で設定している | スマートフォンの日時の設定で「自動設定」をオンにします。6桁は時刻をもとに作るので、時計がずれると数字が合いません |
| リカバリーコードを紛失した | 保存場所が分からなくなった | ログインできるうちに「Reset codes」で作り直します。古いコードは使えなくなります |
| 設定前のログインの回数を使い切った | 設定を後回しにしたまま、決まった回数を超えた | 自分では戻せません。サイトの管理者に、二段階認証をやり直せる状態に戻してもらいます |
スマートフォンを紛失した場合は?
やり方は、古いスマートフォンとリカバリーコードがあるかどうかで変わります。

機種変更で、古いスマートフォンが使えるとき
古いスマートフォンが使えるうちに、古いスマートフォンの6桁でログインし、TFA の画面の「Reset application」から、新しいスマートフォンで QR コードを読み取り直します。登録し直すと、古いスマートフォンの数字は使えなくなるので、アプリに残った古い項目は削除します。
Google Authenticator には、アカウントを新しいスマートフォンへ移す機能や、Google アカウントに同期する機能もあります。どちらも、古いスマートフォンか同期の設定が前提です。古いスマートフォンを初期化するのは、新しいスマートフォンでログインできたのを確かめてからにしてください。
Google アカウントへの同期は便利な一方、Google アカウントが乗っ取られると認証アプリの中身も見られてしまいます。同期を使う場合は、Google アカウント自体も二段階認証で守っておきましょう。
紛失・故障で、リカバリーコードがあるとき
ログインの画面で、6桁の代わりにリカバリーコードを入れてログインします(切り替え方の表示は、サイトの設定によって変わります)。ログインできたら、「Reset application」で新しいスマートフォンを登録し直し、「Reset codes」でリカバリーコードも作り直します。使ったコードは、もう使えません。
紛失・故障で、リカバリーコードも無いとき
自分ではログインできません。サイトの管理者に連絡し、本人確認のうえで、そのアカウントの二段階認証をリセットしてもらいます。
管理者が1人しかいないサイトで、その管理者が入れなくなった場合は、サーバーを操作できる人(保守会社など)が、Drupal の設定から一時的に二段階認証を止める方法もあります。ただし、止めている間はすべての人がパスワードだけで入れる状態になるので、作業が終わったらすぐに戻す必要があります。二段階認証を設定できる管理者を、2人以上にしておくのが確実な備えです。
二段階認証を設定しても注意したいこと
二段階認証を設定すれば、それだけで完全に安全になるわけではありません。管理画面を守るには、次のこともあわせて行います。
| 対策 | 内容 |
|---|
| パスワードの管理 | 長く、ほかのサービスと使い回さないパスワードにし、パスワード管理ソフトで保管します |
| 管理者の権限を絞る | 管理者は必要な人だけにします。記事を書く人には、記事の作成・編集だけの役割を分けて渡します |
| 本体とモジュールの更新 | 二段階認証のモジュールにも弱点が見つかることがあります。TFA 8.x-1.x の公式ページには、ほかのモジュールとの組み合わせによっては保護を回避される場合がある、という既知の制限も書かれています。入れるモジュールは必要なものだけにし、更新を続けます |
| バックアップ | 二段階認証は乗っ取りを防ぐ対策で、データが消えたときの備えにはなりません。毎日のバックアップを別に用意します |
| ログイン画面の守り | CAPTCHA などで、機械的なログインの試行を減らします。CAPTCHA にも弱点が見つかることがあるので、更新を忘れないようにします(DrupalのCAPTCHAの脆弱性とアップデートの記事) |
まとめ
Drupal の二段階認証は、公式の TFA モジュールと Google Authenticator を使えば、6つのステップで設定できます。パスワードが漏れても、スマートフォンの6桁が無ければ管理画面に入れなくなるので、管理者アカウントの乗っ取り対策として効果が大きい設定です。
設定したら、リカバリーコードを安全な場所に保存し、二段階認証を設定できる管理者を2人以上にしておきましょう。スマートフォンを失くしたときも、慌てずに戻せます。
そのうえで、パスワードの管理、権限の整理、更新、バックアップを組み合わせることで、管理画面を長く安全に使えるようになります。
参考資料