AWS Cognito MFA 認証方式 簡潔比較表

AWS

1. 基本スペック比較

項目SMSメールTOTP
セキュリティレベル★★★★☆★★★★☆★★★★★
ユーザビリティ★★★★★★★★★☆★★★☆☆
導入難度★☆☆☆☆★★★★☆★★☆☆☆
コスト効率★★☆☆☆★★★★★★★★★★
グローバル対応★★☆☆☆★★★★☆★★★★★
ヘルプデスク負担★★☆☆☆★★★☆☆★★★★☆

2. セキュリティ詳細分析

攻撃への耐性評価

攻撃タイプSMSメールTOTP
SIMスワップ◯ 脆弱◎ 耐性有◎ 耐性有
OTP傍受◯ 脆弱◯ 脆弱◎ 耐性有
フィッシング△ 部分的◯ 脆弱◎ 耐性有
MITM攻撃△ 脆弱◯ 脆弱◎ 耐性有
サーバー侵害△ リスク有△ リスク有◎ 安全
デバイス盗難◎ 安全◎ 安全△ リスク有

凡例: ◎=耐性強, △=中程度, ◯=脆弱

規制準拠状況

規制SMSメールTOTP
PCI-DSS v3.4◎◎
NIST 800-63◎◎
GDPR◎◎
HIPAA◎◎

3. 実装・運用の複雑度

セットアップ所要時間

SMS
├─ Cognito 設定: 30 分
├─ ユーザー属性: 即座
└─ 合計: 1 時間

メール
├─ SES ドメイン認証: 1~2 日
├─ SES 本番申請: 2~3 日待機
├─ Cognito 設定: 1 時間
├─ Lambda設定(オプション): 2~3 時間
└─ 合計: 4~6 日

TOTP
├─ Cognito 設定: 15 分
├─ 認証アプリ選定: 30 分
├─ ユーザー教育: 1 時間
└─ 合計: 2 時間

インフラストラクチャ

項目SMSメールTOTP
追加リソースなしSES + IAMなし
セットアップの複雑度★☆☆★★★★★☆☆
保守の手間★★☆★★★★☆☆
トラブル対応難度★★★★★★★★★☆

4. コスト分析(月間認証数別)

直接コスト(¥換算、1ドル=120円で概算)

月間 1,000 件

方式計算月額
SMS1,000 × $0.075¥9,000
メールSES無料枠内¥0
TOTP無料¥0

月間 10,000 件

方式計算月額
SMS10,000 × $0.075¥90,000
メール(10,000-500) × $0.0001¥1,140
TOTP無料¥0

月間 100,000 件

方式計算月額
SMS100,000 × $0.075¥900,000
メール(100,000-500) × $0.0001¥11,940
TOTP無料¥0

間接コスト(人的リソース)

コスト項目SMSメールTOTP
初期セットアップ16時間40時間8時間
月間保守8時間12時間2時間
ヘルプデスク対応(月間)20時間16時間4時間
合計(年間)356時間424時間92時間

年間コスト(時給¥2,000で換算)

  • SMS: 初期¥32,000 + 年間¥712,000 = ¥744,000
  • メール: 初期¥80,000 + 年間¥848,000 = ¥928,000
  • TOTP: 初期¥16,000 + 年間¥184,000 = ¥200,000

5. ユーザーシナリオ別対応

ログイン時の体験フロー

SMS ユーザー

1. ログイン画面に電話番号入力
2. "SMS送信しました"と表示 (1~30秒待機)
3. スマートフォンでSMS受信
4. 6桁コード確認
5. コード入力
完了 (所要時間: 30秒~2分)

メール ユーザー

1. ログイン画面に進む
2. "メール送信しました"と表示
3. メールアプリを開く
4. メールから6桁コード確認 (5秒~数分)
5. コード入力
完了 (所要時間: 1~5分)

TOTP ユーザー

1. ログイン画面に進む
2. 認証アプリ開く
3. 現在の6桁コード確認(待機なし)
4. コード入力
完了 (所要時間: 5~10秒)

リカバリシナリオ

SMS: 電話紛失・SIM失効時

問題: SMS受信不可
対応案:
  ① セカンダリ電話番号を設定 → 即時切り替え (推奨)
  ② ヘルプデスク: 属性を手動更新 (10分~1時間)
  ③ セキュリティ Q&A (別途実装必須)
復旧難度: ⭐⭐☆☆☆ (容易)

メール: メールアカウント侵害時

問題: メール受信不可 + MFA機能喪失
対応案:
  ① セカンダリメール設定 → 即時切り替え
  ② ヘルプデスク: 属性手動更新 + 属性の確認済みフラグ更新
  ⚠️ 重大: メール侵害時は全MFA失われる可能性
復旧難度: ⭐⭐⭐☆☆ (困難, セキュリティリスク高)

TOTP: 認証アプリ削除時

問題: TOTP生成不可
対応案:
  ① バックアップコード利用 (一度限り, 自分で実施可)
  ② バックアップコード紛失時: ヘルプデスク対応 (要新規セットアップ)
復旧難度: ⭐⭐⭐⭐☆ (困難, バックアップコード必須)

6. デバイス・属性管理の仕様

Cognito 属性の扱い

方式必須属性必須フラグ確認方法更新容易性
SMSphone_numberphone_number_verifiedOTP確認△ (注意: 必須属性は作成後変更不可)
メールemailemail_verifiedリンク確認◎ (標準属性)
TOTPなしなし◎ (属性不要)

セカンダリ (バックアップ) オプション

方式セカンダリ設定実装難度
SMS二重登録 or SMS→メール振り替え★★☆
メール二重登録 or メール→SMS振り替え★★☆
TOTP二台目デバイス必須 (自動切り替え不可)★★★

7. ユースケース別推奨方式

ユースケース表

ユースケース推奨方式理由次点
B2B Enterprise (FinTech/医療)TOTPセキュリティ最優先, 規制対応メール
B2C SaaS (海外展開)TOTPコスト・スケール・セキュリティメール
B2C (国内SaaS)メールユーザビリティとコストのバランスTOTP
B2C (ソーシャル)SMSユーザビリティ最優先メール
初期段階スタートアップTOTP初期投資最小 (長期的に最適)SMS
高齢者・非テク層向けSMSセットアップ最速, 負担最小メール
金融機関 (日本国内)TOTP + SMSハイブリッド, 復旧性確保
グローバルB2BTOTP規制対応・コスト・保守性メール
短期ローンチ必須SMS実装期限内に確実にリリース

8. 実装・導入チェックリスト

SMS 導入前チェック

☐ 想定月間認証数を把握(コスト試算)
☐ キャリア別配送遅延時間を確認(timeout 設定用)
☐ 国別SMS配送ルール確認(中国・イランは困難)
☐ SMS未配送時の復旧フロー設計
☐ セカンダリ方式(再試行 or 他方式切り替え)決定
☐ ヘルプデスク体制構築
☐ 複数キャリアでテスト実施
☐ user_pool の phone_number 属性を必須にしない(柔軟性維持)
☐ 本格運用前の検証期間 (1週間以上)

メール導入前チェック

☐ SES ドメイン認証(SPF/DKIM/DMARC)準備完了
☐ SES 本番環境申請を実施(承認待ち)
☐ IAM ロール設定(Cognito → SES アクセス権)
☐ パスワードリセット統一の要否判断
  └─ 必須の場合: Custom SMS Sender Lambda 設計
☐ KMS 暗号化キーの準備
☐ Bounce/Complaint レート監視体制構築
☐ 迷惑メール対策(ユーザーへのホワイトリスト登録依頼等)
☐ メール本文テンプレート作成
☐ 送信失敗時の再試行ロジック設計
☐ SES 送信レート制限把握(初期値: 14メール/秒)
☐ 本格運用前テスト期間 (2週間以上)

TOTP 導入前チェック

☐ 推奨認証アプリを複数選定(Google Authenticator, Authy等)
☐ バックアップコード生成・保管フロー設計
☐ バックアップコード紛失時の復旧プロセス確認
☐ 段階的導入スケジュール決定(全員必須 vs 任意)
☐ デバイス時刻ズレ対策(NTP設定確認)
☐ ユーザー教育資料準備(QRコード読み込み方法等)
☐ ヘルプデスク向けトレーニング
☐ 二台目TOTP(デバイス紛失時)の必須化検討
☐ バックアップコード再生成プロセスのテスト
☐ 本格運用前テスト期間 (1週間)

9. よくあるトラブルと対応

トラブルSMSメールTOTP
配送遅延・未配送★★★ 多い (キャリア依存)★★☆ (迷惑メール注意)★ なし
ユーザーが手段を忘れた△ (再送信で対応)◎ (再送信で対応)◯ (バックアップコード要)
デバイス紛失◎ (新SIM or 再登録)◎ (別PC対応)★★ (秘密鍵喪失)
アカウント侵害◎ (他メール対応)◯ (全て失う)◎ (秘密鍵無関係)
時間帯別パフォーマンス△ (キャリア混雑)◎ (安定)◎ (安定)
国別ルール対応★★★ (複雑)★☆ (標準)◎ (不要)

凡例: ★=多い/困難, ◯=中程度, ◎=少ない/容易


10. 最終判断マトリックス

あなたのプロジェクトはどれに当てはまる?

Q1. セキュリティが最優先か?
   YES → Q2 へ
   NO  → Q3 へ

Q2. グローバル展開か?
   YES → ⭐ TOTP を強く推奨
   NO  → TOTP 推奨 (メール次点)

Q3. コスト最適化が重要か?
   YES → ⭐ TOTP 推奨 (スケール時)
         or メール(コスト固定)
   NO  → Q4 へ

Q4. 導入期限は?
   1週間以内 → SMS 推奨
   2週間以内 → SMS or TOTP
   1ヶ月以上 → TOTP 推奨

結論パターン:
┌────────────────────────────────┐
│ ⭐ TOTP: 全般的に推奨          │
│   特に B2B / グローバル / 長期  │
│                                │
│ ◎ メール: B2C国内 / 中期導入   │
│   初期投資後、コスト固定が魅力  │
│                                
│ △ SMS: 短期ローンチ / 非テク層 │
│   セキュリティ・スケーラビリティ │
│   面で課題あり                 │
└────────────────────────────────┘

参考文献

  1. AWS 公式ドキュメント
    • Cognito MFA Configuration
    • Custom SMS/Email Sender Lambda
    • SES Event Publishing
  2. セキュリティ基準
    • NIST SP 800-63-3: Authentication
    • PCI-DSS v3.4: Multi-Factor Auth
    • OWASP Authentication Cheat Sheet
  3. 業界ベストプラクティス
    • AWS Well-Architected Framework
    • AWS Security Best Practices

作成日: 2026年6月
対象バージョン: AWS Cognito (2026年5月以降)
更新予定: セキュリティアップデート時またはCognito仕様変更時

コメント