H
教師アカウントの多要素認証を自動化
by hirototoda
教師アカウントに TOTP(時間ベースのワンタイムパスワード)による強固な多要素認証を実装できます。Google Authenticator などのアプリと連携し、パスワード+認証アプリコードの二要素で安全にログインできるようになります。 QRコードを読み取るだけで簡単に MFA 設定ができます。教師が自分のスマートフォンの認証アプリで QRコードをスキャンするだけで設定が完了し、難しい操作は不要です。 紛失・機種変更に対応するためのバックアップコード(リカバリーコード)を自動生成します。万が一スマートフォンを紛失した場合でも、バックアップコードでアカウントにアクセスできます。 生徒アカウントは PIN のままで許容されるため、教師と生徒で異なるセキュリティレベルを管理できます。 文科省ガイドライン第2編 4.4(4), 6.2(1) に準拠した実装により、パブリッククラウド上の重要情報(重要性分類II以上)保護が実現します。 教育機関の情報システム管理者:セキュリティポリシーを強化し、ガイドライン準拠を実現したい Web アプリ開発者:既存の Rails アプリケーションに多要素認証機能を追加したい 学校・大学の IT 担当者:教師アカウントのセキュリティリスクを低減したい クラウドサービス導入企業:重要情報を扱うアカウントの保護強化が必要 実装方針として TOTP(Time-based One-Time Password)を採用し、Google Authenticator などと互換性を持たせます。教師のログイン時にメール+パスワード+TOTP の三要素認証を実施します。実装ステップとして、まず Gemfile に rotp(TOTP/HOTP 実装)と rqrcode(QRコード生成)を追加します。次に User モデルに otp_secret(暗号化対象)、otp_required、otp_verified_at、otp_backup_codes(暗号化対象)カラムを追加するマイグレーションを作成します。User モデルに mfa_enabled?(MFA 有効判定)、generate_otp_secret!(シークレット生成)、otp_provisioning_uri(QRコード用 URI 生成)、verify_otp(OTP 検証、30秒の時刻ずれ許容)、generate_backup_codes!(8桁16進数 x 10個生成)などのメソッドを追加します。段階的導入として当初は任意、その後ポリシーで必須化することも可能です。
テストセキュリティ