【AWS新機能】Amazon Cognitoに待望のTOTPリセットAPIが登場!MFAデバイス紛失時の運用が劇的に改善

はじめに

Amazon Cognitoを利用してアプリケーションの認証基盤を構築しているエンジニアの皆さんに、非常に嬉しいアップデートが届きました!

Amazon Cognitoにおいて、管理者がユーザーのTOTP(Time-based One-Time Password:時間同期式ワンタイムパスワード)マルチファクタ認証(MFA)設定を直接リセットできる新しい管理者API「AdminDeleteSoftwareTokenが追加されました。

これにより、ユーザーがスマートフォンを紛失したり、機種変更時に認証アプリ(Google AuthenticatorやMicrosoft Authenticatorなど)のデータ移行を忘れたりしてログインできなくなった(ロックアウトされた)際の救済処置が、これまで以上にスマートかつ安全に行えるようになります。

この機能の概要とメリット

新しいAPI AdminDeleteSoftwareToken を使用すると、管理者は特定のユーザーに紐づいているソフトウェアトークン(TOTPデバイスの関連付け)を削除できます。削除されたユーザーは、次回のサインイン時に新しいTOTPデバイスの登録(エンロールメント)プロセスへ自動的に誘導されます。

主なメリット

  • アカウント再作成の手間を解消: 従来、ロックアウトされたユーザーを救済するためにアカウントを一度削除して再作成するといった運用をしていた場合、その必要がなくなります。ユーザーのプロファイル情報やヒストリを維持したまま復旧できます。
  • 高いセキュリティの維持: ユーザープール全体のMFA強制設定をオフにすることなく、対象ユーザーの紛失したデバイス情報のみを安全にピンポイントで削除できます。
  • 管理者運用の自動化: AWS CLIや各種SDKからAPIを呼び出せるため、自社の管理画面(社内ポータルなど)やヘルプデスク用のワークフローに組み込んで自動化・セルフサービス化することが可能です。

想定されるユースケース

  • スマートフォンの紛失・故障・機種変更: ユーザーがMFAアプリをインストールしていた端末にアクセスできなくなった場合、管理者が本APIを実行してTOTP設定をリセットし、新しい端末で再登録させます。
  • ヘルプデスク・カスタマーサポートの対応迅速化: サポート窓口への「ログインできなくなった」という問い合わせに対し、管理者が即座にリセット処理を実行してユーザー自身で解決させることができます。

実際の使い方(AWS CLIの例)

この機能は、AWS CLI、AWS SDK、または直接のAPIコールから利用できます。例えば、AWS CLIを使用して特定のユーザーのTOTP設定をリセットする場合、以下のコマンドを実行します。

aws cognito-idp admin-delete-software-token \
    --user-pool-id us-east-1_xxxxxxxxx \
    --username target_user_name

※本コマンドを実行するには、実行するIAMロールやユーザーに cognito-idp:AdminDeleteSoftwareToken 権限が付与されている必要があります。

注意点や従来の機能との違い

これまでは、ユーザーがTOTPデバイスを紛失した場合、以下のような代替策を取る必要があり、運用負荷やセキュリティ上の懸念がありました。

  • ユーザーのMFA設定を「一時的に無効(Optional / Disabled)」に変更し、ログイン後にユーザー自身で再設定してもらう(プール全体の設計や個別設定の管理が複雑化しやすい)。
  • 管理者権限でユーザーのアカウントを削除し、新規登録し直してもらう(ユーザーの既存データが失われる)。

今回の AdminDeleteSoftwareToken APIの登場により、「MFA設定は強制(Required)にしたまま、デバイスの紐付けだけを初期化する」という、セキュリティベストプラクティスに則った運用が容易になりました。

まとめ

Amazon CognitoにおけるTOTPのリカバリー処理は、これまで多くの開発者や運用担当者を悩ませてきた「運用の盲点」の一つでした。今回のアップデートにより、セキュリティレベルを一切下げることなく、スマートかつ迅速にユーザーを救済する運用フローが構築可能になります。

CognitoでTOTPによるMFAを導入している、または導入を検討しているプロジェクトは、ぜひこの新しい AdminDeleteSoftwareToken APIを運用設計に組み込んでみてください!

上部へスクロール