ログイン画面でCognitoを使用しているのですが、Cognitoにはアカウントロック機能があるのでしょうか?
システムによっては、セキュリティ診断をクリアしないとリリースできないなんてこともあるので気になったのです。
ということで今回は、Cognitoのアカウントロック機能について解説します!
Cognitoのアカウントロック機能
結論からになりますが、Cognitoにアカウントロック機能があるのかというと、「分からない」が回答になります。
その理由はこの後お話しします。
アカウントロック機能があるかどうかは分からない
Cognitoにアカウントロック機能があるかどうかは分かりません。
その理由は、「AWSが公式に明言していないから」です。
AWSが公式に明言していない理由
AWSが公式に明言していない理由は、「明言してしまうと悪い人たちが良からぬことをしでかす可能性があるから」です。
まあ、セキュリティ的観点からあえて明言していないということになりますね。
分からないなら実際に試すしかない
ということで、実際にアカウントロック機能があるかどうかを試してみました。
が、正直良く分かりませんでした。
以下のエラーが返ってくることだけは分かったのですが、このエラーが返ってきた後、普通にログインできる時もあれば、ログインできない時もあります。不思議。
code | NotAuthorizedException |
---|---|
name | NotAuthorizedException |
message | Password attempts exceeded |
※アカウントロック機能は「〇回アクセスしたらロックがかかる」などの条件がありますが、「〇秒間に〇回」という風に、秒数も考慮しなくてはならないため、結構考えること多めです。
Password attempts exceededとは
Password attempts exceededは、直訳すると「パスワード試行回数を超えました。」になります。
このメッセージが出るということは、アカウントロックがかかってもよさそうですが、よう分からんです。
Cognito×ブルートフォース攻撃
そもそも、アカウントロック機能が必要な理由として、「ブルートフォース攻撃や辞書型攻撃を防ぐため」という理由があります。
「Cognito×ブルートフォース攻撃」については以下を参照してください。
■Cognito×ブルートフォース攻撃
URL:「https://translate.google.com/translate?hl=ja&sl=en&u=https://stackoverflow.com/questions/37732970/how-aws-cognito-user-pool-defends-against-bruteforce-attacks&prev=search」
まとめ
結果的に、「よく分からない」というのを再認識するだけの、大して意味のない記事になりました。
まあ、いいや。
ではまた!
2020/02/06 追記
サポートによると、アカウントロック機能はあるらしいです。
が、ログイン試行可能回数やロック解除までの時間などは教えてくれないそうです。
また、ロック期間はサインインに失敗した回数に応じて指数関数的に増加するような仕組みとなっているとのこと。
エラー内容は上記に書いてある通りで、アカウントロックを解除する仕組みもないそうです。
もちろん、AWSコンソールからアカウントロックに関して設定することもできません。