【設定してみた】CognitoのAdvanced Security Feature(ASF)のbetaが既に設定できたのでやってみた #reinvent

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、臼田です。

re:Invent2017で発表されたCognitoのセキュリティ強化機能であるAdvanced Security Feature(ASF)がbeta状態ですが既に設定できる状態だったので設定してみました。

なお、ASFの発表については下記をご参照下さい。

【速報】CognitoのAdvanced Security Feature(ASF)のbetaが発表されました #reinvent

また、AWSのリリースも出ました!

Advanced Security Feature設定画面

Amazon CognitoのUser Pool設定画面(作成時は表示されない)にて「Advanced security(beta)」という項目が追加されています。

開くと、Advanced security(以下ASF)を有効にするか選択することが可能です。なお、「Audit only」を選択するとASF対象動作をCloudWatchに格納してくれるようです。

「Yes」を選択すると追加の設定が表示されます。

「What app client do you want to customize settings for?」では対象とするApp Clientを選択できます。デフォルトではすべてのApp Clientを対象としています。

「Which action do you want to take with the compromised credentials?」では、外部のWebサイトで漏洩したユーザ情報を元に、User Poolに同じようなユーザが居たらブロックする設定ができます。

これは、昨今話題のパスワードリスト攻撃の対策になります。

「Customize when compromised credentials are blocked」をクリックすると「Sign in, Sign up, Password change」のどのイベント発生時に情報をチェックしに行くかを選択できます。これは基本的にはデフォルト(全て有効)でも問題ないかと思います。

「How do you want to use adaptive authentication for sign-in attempts rated as low, medium and high risk?」ではユーザログイン時に、そのログインのリスクの高さに応じて認証を強化する設定です。

「Low, Medium, High」毎にMFAを必須にしたり、Blockすることが可能です。

具体的にどのような状態でリスクがHighになるか、等の基準は今のところ出ていませんが、上記画面表記に「coming from an unrecognized location or device」とあるように少なくともアクセス元のロケーションやデバイスが通常と異なる場合にリスクを上げて対応することが可能なようです。

Allowを選んだ場合でもCloudWatchにrateを出してくれるようなので、例えばLowをAllowにしてユーザ影響がない状態で動作を見ることもできそうですね。

「Notification message customization」ではリスクのあるサインインを検知した際にユーザに対してメール通知を送る設定をすることが可能です。ただし、リンクを埋め込むため、ドメイン名を設定する必要がありました。

通知するメールのフォーマットは「Adaptive authentication notification messages」から設定可能です。

HTMLフォーマットの状態で日本語が入力・保存できたため、日本語での利用も可能かもしれません。ただしこちらは動作確認の条件が難しいため、参考程度としてください。

「Do you want to add exceptions for any IP addresses?」では、このASFの保護を無視(Always allow)するIPリストと無条件でブロックするIPリストを登録できます。

開発している際の送信元IP等を登録すると便利かと思います。

設定したら「Save changes」で保存ができます。

まとめ

ASFの設定方法について解説しました。

ユーザログインに対して自動的にリスク分析してくれたり、ユーザ情報が外部サイトの情報漏えいの影響を受けていないか確認してくれるので、より先進的なセキュリティをとても簡単に適用することができることがわかりました。

まだbetaの機能ですが、すぐに利用できそうなので、ぜひ利用してみてはいかがでしょうか?