Auth0のユニークな機能 - Anomaly Detection編

# はじめに
この記事は[初めてのAuth0ハンズオン](https://qiita.com/hisashiyamaguchi/items/2d0bcae052077f6ae4a4)の続編で、Auth0のユニークな機能の一つである[Anomaly Detection](https://auth0.com/docs/anomaly-detection)の解説です。[Anomaly Detection](https://auth0.com/docs/anomaly-detection)は、特定のIP Addressからの不正なログインを遮断したり、過去に漏洩したパスワードでのサインアップ・ログインを遮断する機能です。
**<font color="DarkOrange">この記事は解説のみのため詳細な手順は掲載していません。</font>**

# 解説
## Part1/Brute-force Protection
左ペインの"Anomaly Detection"をクリック、"Brute-force Protection"をクリックします。"Targeting A Single User Account"の”E-mail Notification”、"Block Login Attempts"フリップスイッチをオンにして”SAVE”を押します。
**<font color="DarkOrange">特定のIP Addressから連続したログイン失敗が発生した際に、事象を管理者にメールで通知してログインを遮断します。</font>**

<img src="https://i.imgur.com/1EGWXe4.png" width=70%>

Sample Applictionから擬似的な不正ログイン攻撃を発生させてAuth0 Dashborad "Logs"からログをチェックし、連続したログイン失敗が発生していることを確認します。

<img src="https://i.imgur.com/cJ0GFxr.png" width=70%>
<img src="https://i.imgur.com/zVK1qaT.png" width=70%>

"Blocked Account"というログが出力されていることを確認し、クリックして詳細を見てみます。
**<font color="DarkOrange">Descriptionに"10回連続ログイン試行に失敗しました。このIPからこのアカウントでのログインは禁止します。"とあります。</font>**

<img src="https://i.imgur.com/fkOw6xD.png" width=70%>

左ペインの"Users&Roles"->"Users"から該当のユーザをクリックし`BLOCKED (BRUTEFORCE)`というタグがついていることを確認します。
<img src="https://i.imgur.com/81DCrPP.png" width=70%>

上の”Row JSON”タブをクリックし属性詳細を確認します。"blocked_for"というArray Fieldが追加されておりブロックされているIP Addressを確認することができます。

```json
{
    "created_at": "2019-12-25T05:53:37.443Z",
    "email": "minaminameatan@gmail.com",
    "email_verified": false,
    "identities": [
        {
            "connection": "consumer-users",
            "provider": "auth0",
            "user_id": "5e02f961877c520e6e6b6ae6",
            "isSocial": false
        }
    ],
    "name": "minaminameatan@gmail.com",
    "nickname": "minaminameatan",
    "picture": "https://s.gravatar.com/avatar/afd9308810fb397bd697306df95efa0b?s=480&r=pg&d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fmi.png",
    "updated_at": "2019-12-25T05:53:37.443Z",
    "user_id": "auth0|5e02f961877c520e6e6b6ae6",
    "last_ip": "61.21.179.55",
    "last_login": "2019-12-25T05:53:37.442Z",
    "logins_count": 1,
    "blocked_for": [
        {
            "identifier": "minaminameatan@gmail.com",
            "connection": "consumer-users",
            "ip": "3.86.218.37"
        }
    ],
    "guardian_authenticators": []
}
```

## Part2/Breached-password Detection
左ペインの"Anomaly Detection"をクリック、"Breached-password Detection"をクリックします。"Notify User", "Block Login Attempts"フリップスイッチをオンにして”SAVE”を押します。

<img src="https://i.imgur.com/ZoChktx.png" width=70%>

Sample Applicationに擬似漏洩クレデンシャルでログインしてみます。


<img src="https://i.imgur.com/O75jVTe.png" width=70%>
**<font color="DarkOrange">アラートに"セキュリティ事故が発生している可能性があり、アカウントをブロックします。ブロックを解除するにはパスワードを変更して下さい。"とあります。</font>**

"Breached password"というログが出力されていることを確認し、クリックして詳細を見てみます。
**<font color="DarkOrange">Descriptionに"悪意のある誰かがIP address 61.21.179.55から過去に漏洩されたパスワードでログインしようとしています。このログイン試行を遮断しました。"とあります。</font>**

<img src="https://i.imgur.com/06gLdcf.png" width=70%>

# おわりに
Auth0は数億件に上る漏洩したクレデンシャル情報が保管されたDatabaseをバックエンドに持っています。Email/Passwordによるサインアップ・ログインは全てこのDatabaseで照合しており、漏洩されたパスワードと一致した場合は直ちにサインアップ・ログインを遮断することでお客様の社会的企業責任とブランドイメージを守ります。