Cognito User Pool の MFA 適用範囲の確認

必要なパスワード認証に MFA を適用し、任意設定で保護される利用者の範囲を確認してください。

説明

Cognito User Pool のパスワード認証で MFA を使わないと、漏えいや使い回しによるパスワードの悪用がアカウント乗っ取りにつながりやすくなります。mfa_configuration の既定値である OFF は MFA を要求しません。

ON は MFA を必須にしますが、OPTIONAL は MFA を設定した利用者だけに適用されます。外部 IdP によるログインでは、その IdP の MFA ポリシーを別途確認してください。

想定される影響

  • 追加の認証なしで、漏えいしたパスワードがアカウントの悪用に使われるおそれがあります。
  • 任意の MFA を登録していない利用者は、同じ保護を受けられません。

対処方法

  • サービスの認証方式と復旧手順を確認し、MFA を必須にする場合は ON を使ってください。OPTIONAL を選ぶ場合は、利用者の登録状況と適用範囲を管理してください。
  • サポートされる MFA 方式を設定し、登録、ログイン、端末紛失時の復旧を試験してください。SMS を使う場合は、送信権限と必要なロールも用意してください。

例

MFA 設定の抜粋で、必須の User Pool 名や参照するロールは省略しています。変更後はソフトウェアトークンによる MFA を任意にする例であり、すべての利用者に必須とするものではありません。

変更前

hcl
resource "aws_cognito_user_pool" "example" {
  mfa_configuration          = "OFF"
  sms_authentication_message = "Your code is {####}"

  sms_configuration {
    external_id    = "example"
    sns_caller_arn = aws_iam_role.example.arn
  }

  software_token_mfa_configuration {
    enabled = true
  }
}

変更後

hcl
resource "aws_cognito_user_pool" "example" {
  mfa_configuration          = "OPTIONAL"
  sms_authentication_message = "Your code is {####}"

  software_token_mfa_configuration {
    enabled = true
  }
}

補足:

  • 変更前: MFA の方式を設定していても、OFF では MFA を要求しません。
  • 変更後: MFA を登録した利用者はソフトウェアトークンを使えます。未登録の利用者も保護する必要がある場合は、必須化を検討してください。

参考資料