説明
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 を登録した利用者はソフトウェアトークンを使えます。未登録の利用者も保護する必要がある場合は、必須化を検討してください。