二要素認証 - TFA / パスワードレスログイン
TOTP、OTP、プッシュ通知、WebAuthnなど複数の認証方式により、Drupalユーザーアカウントを保護する二要素認証(2FA/MFA)を追加します。
miniorange_2fa
インストール
composer require 'drupal/miniorange_2fa:^5.3'
概要
miniOrange Two Factor Authentication(2FA/TFA)モジュールは、Drupalサイト向けのエンタープライズグレードの多要素認証を提供します。パスワードに加えて第二のセキュリティ層を追加することで、ハッキング、不正ログイン、フィッシング攻撃からサイトを保護します。
このモジュールは、SMS・メール・電話によるOTP、TOTPオーセンティケーター(Google、Microsoft、Authy、LastPass、Duo、Okta、2FAS、Zoho OneAuth)、プッシュ通知、QRコード認証、セキュリティの質問(KBA)、ハードウェアトークン(YubiKey)、WebAuthn/FIDO2など、さまざまな認証方式をサポートしています。また、ユーザーがパスワードなしで第二要素のみで認証できるパスワードレスログインもサポートしています。
高度な機能として、ロールベースおよびドメインベースの2FA適用、信頼済みIPホワイトリスト、デバイス記憶機能、エンドユーザー向けのインライン登録、カスタムログインフォームラベル、包括的な監査ログがあります。このモジュールはSSOソリューションと統合し、分離アーキテクチャ向けのヘッドレス/APIモードを提供します。
Features
- 複数の2FA方式:SMS・メール・電話によるOTP、TOTPオーセンティケーター、プッシュ通知、QRコード、セキュリティの質問(KBA)、ハードウェアトークン(YubiKey)、WebAuthn/FIDO2
- 第二要素のみで認証可能なパスワードレスログイン(パスワード不要)
- 特定のユーザーロールに2FAを要求するロールベースの2FA適用
- 特定のメールドメインに2FAを要求するドメインベースの2FA適用
- 特定のIPアドレスまたは範囲で2FAをスキップする信頼済みIPホワイトリスト
- 設定可能な期間、信頼済みデバイスを記憶するデバイス記憶機能(リスクベース認証)
- エンドユーザーが初回ログイン時に2FAを設定できるインライン登録フロー
- 弱いパスワードのユーザーに2FAを強制するパスワード長制限
- 2FAなしで緊急アクセスするためのバックドアログインURL
- ログイン成功後のカスタムリダイレクトURL
- ユーザー名に加えてメールアドレスまたは電話番号でのログインを有効化
- ログインフォームのユーザー名タイトルと説明のオーバーライド
- 認証画面のカスタム組織ブランディング
- miniOrangeダッシュボードからのカスタマイズ可能なメール・SMSテンプレート
- カスタマイズ可能なOTPの長さと有効期限
- 全ユーザーの2FA設定を管理する管理者ダッシュボード
- 認証試行の包括的な監査ログ
- フロントエンドフレームワーク向けのヘッドレス/分離2FA APIサポート
- SSOモジュール(CILogonなど)との統合
- プライマリ方式が利用できない場合のバックアップ認証方式(KBA)
- パスワードレス生体認証用のWebAuthnサブモジュール
Use Cases
管理者アカウントの保護
主な用途は、管理者アカウントを不正アクセスから保護することです。インストール後、管理者はGoogle AuthenticatorやメールOTPなどのサポートされている方法を使用して、すぐに自分のアカウントに2FAを設定できます。これにより、パスワードが漏洩した場合でもアカウントは安全に保たれます。
組織全体での2FA強制
組織は、ロールベースの制限機能を使用して、すべてのユーザーまたは特定のロールに2FAを強制できます。例えば、「editor」や「administrator」ロールを持つすべてのユーザーに2FAを要求し、「authenticated」ユーザーには2FAをオプションとして許可することができます。
ドメインベースのセキュリティポリシー
複数のメールドメインを持つ企業は、特定のドメインにのみ2FAを強制できます。例えば、@company.comのメールには2FAを要求し、@contractor.comのアドレスは免除するといった設定が可能です。
ヘッドレス/デカップルドDrupal
別のフロントエンド(React、Vueなど)を使用したデカップルドアーキテクチャのサイトでは、ヘッドレス2FA APIエンドポイントにより、カスタムフロントエンドの認証フローに2FA検証を統合できます。
信頼されたネットワークアクセス
組織は、2FAをスキップする信頼されたIP範囲(オフィスネットワーク、VPNなど)を設定できます。これにより、安全な場所から接続するユーザーの手間を減らしながら、外部アクセスに対するセキュリティを維持できます。
パスワードレス認証
ユーザーが第二要素(TOTPコード、WebAuthn経由の生体認証、またはプッシュ通知)のみで認証するパスワードレスログインを有効にすることで、パスワード関連の脆弱性を完全に排除できます。
SSO連携
SSOモジュールと併用することで、2FAはSSO認証後の追加のセキュリティレイヤーを提供し、フェデレーテッドアイデンティティを使用する場合でもユーザーが複数の要素で検証されることを保証します。
Tips
- 緊急復旧オプションとして、モジュールを有効化したらすぐにバックドアURLを有効にしてください
- 他の方法を導入する前に、メールOTPまたはTOTP認証アプリを使用してテストしてください
- 無料版は1ユーザーで限られた方法をサポートしています - メイン管理者アカウントの保護に最適です
- ライセンスとトランザクション情報を最新の状態に保つために、Drupal cronを定期的に実行してください
- ロールベースの2FAを使用して段階的に導入してください - まず管理者から始めて、他のロールに拡大してください
- ユーザーがプライマリメソッドへのアクセスを失った場合に復旧できるように、KBA(セキュリティの質問)をバックアップ方法として設定してください
- すべてのユーザーに対して有効にする前に、ステージング環境で2FAフローをテストしてください
- アンインストール前にユーザー設定をエクスポートしてください - データを保持するには、アンインストール時に「Preserve configured 2FA settings」にチェックを入れてください
Technical Details
Admin Pages 9
/admin/config/people/miniorange_2fa/customer_setup
miniOrangeアカウントに登録またはログインしてモジュールを有効化します。登録後、顧客ID、ライセンス情報、残りのSMS/Email/IVRトランザクション数、ライセンス有効期限などのプロフィール詳細を確認できます。このページからアカウントを削除することもできます。
/admin/config/people/miniorange_2fa/setup_twofactor
モジュールを有効化したプライマリ管理者ユーザーの二要素認証を設定します。タイプ別(OTP、TOTP、その他)に整理されたすべての利用可能な2FA方式を表示し、有効または設定済みの方式を確認し、新しい認証方式を設定できます。
/admin/config/people/miniorange_2fa/login_settings
エンドユーザー向けの二要素認証ポリシーを設定します。2FAの有効化/無効化、インライン登録、ロールベースおよびドメインベースの強制、信頼済みIP、デバイス記憶機能、カスタマイズオプションを含みます。
/admin/config/people/miniorange_2fa/user_management
サイト上のすべてのユーザーの2FA設定を管理します。ユーザー詳細、2FAステータス、設定済み方式を表示し、個別またはバルクでユーザーの2FAをリセット、有効化、無効化するアクションを実行できます。
/admin/config/people/miniorange_2fa/report
ログイン試行、2FAチャレンジ、セットアップイベント、リセットアクションを含む認証ログを表示します。ユーザー名、イベントタイプ、ステータスでログをフィルターできます。
/admin/config/people/miniorange_2fa/headlesSsetup
ヘッドレス/デカップルドDrupalアーキテクチャ向けの二要素認証を設定します。ヘッドレス2FA APIを有効にし、フロントエンドアプリケーションに2FAを統合するためのドキュメントを取得できます。
/admin/config/people/miniorange_2fa/licensing
利用可能なライセンスプランとアップグレードオプションを表示します。無料版とプレミアム版の機能を比較できます。
/admin/config/people/miniorange_2fa/addons
2FAモジュールの追加機能とアドオンを表示および有効化します。
/mfa_setup/{user}/settings
エンドユーザーが自身の2FA設定を表示および管理できるユーザープロフィールタブ。2FAが有効でユーザーが2FAを設定済みの場合のみ利用可能です。
権限 5
Hooks 2
hook_invoke_alter_login_flow_details
各認証タイプのメッセージ、説明、許可される試行回数など、2FAログインフローの詳細をモジュールが変更できるようにします。
hook_invoke_miniorange_2fa_before_login
SSOモジュールがユーザーログイン完了前に2FAを呼び出すために使用するフック。シングルサインオンソリューションと2FAを統合するために使用されます。
Troubleshooting 6
バックドアURL(/user/login?skip_2fa=YOUR_API_KEY)を使用して2FAをバイパスします。APIキーはLogin Settingsページに表示されます。キーがない場合は、データベースに直接アクセスし、configテーブルのmo_auth_enable_two_factorをFALSEに設定してください。
2FA Policyタブで「Activate Two-Factor Authentication」が有効になっていることを確認してください。ユーザーが2FAをバイパスする信頼されたIPから接続していないか確認してください。ロールベースまたはドメインベースの制限にユーザーが含まれているか確認してください。
Register/Loginタブで残りのトランザクション数を確認してください。SMSとメールOTPはトランザクションクレジットを消費します。クレジットが枯渇している場合は、miniOrangeに連絡して追加のトランザクションを購入してください。
電話の時刻が同期されていることを確認してください。TOTPコードは時間に敏感で、30秒のウィンドウがあります。コードを更新して、すぐに入力してみてください。
サーバーでPHP cURL拡張機能が有効になっていることを確認してください。このモジュールはminiOrangeサーバーとの通信にcURLを必要とします。
SSOモジュールがSSO認証後にユーザーアカウントオブジェクトでhook_invoke_miniorange_2fa_before_login()フックを呼び出していることを確認してください。
Security Notes 7
- バックドアURLは2FAなしで緊急アクセスを提供します - APIキーを機密に保ち、信頼できる管理者とのみ共有してください
- SMSベースのOTPは、SIMスワッピング攻撃のためTOTPやWebAuthnよりも安全性が低いと考えられています - 高セキュリティアカウントにはTOTPメソッドの使用を検討してください
- このモジュールはライセンス検証と一部の2FAメソッド(SMS、Push)のためにminiOrangeクラウドサーバーと通信します - 組織のデータ取り扱いポリシーを確認してください
- miniOrangeアカウントの認証情報を安全に保管してください - これらはライセンスへのアクセスを提供し、2FA設定の管理に使用できます
- WebAuthn/FIDO2は最高レベルのセキュリティを提供し、フィッシング攻撃に対して耐性があります
- 信頼されたIP設定は、正当なIP範囲のみがホワイトリストに登録されていることを確認するために定期的に見直す必要があります
- このモジュールは認証試行をログに記録します - 不審なアクティビティがないか定期的にログを確認してください