スマート ロックアウトを使用して Azure AD B2C の資格情報攻撃を軽減する

資格情報攻撃は、リソースへの不正アクセスにつながります。 ユーザーが設定したパスワードには、合理的な複雑さが必要です。 Azure AD B2C は、資格情報攻撃に対する軽減策を備えています。 軽減策には、ブルートフォースの資格情報攻撃とディクショナリ資格情報攻撃の検出が含まれます。 Azure Active Directory B2C (Azure AD B2C) では、さまざまな信号を使用して、要求の整合性を分析します。 Azure AD B2C は、ハッカーやボットネットから目的のユーザーをインテリジェントに区別するように設計されています。

スマート ロックアウトのしくみ

Azure AD B2C では高度な戦略を使用して、アカウントをロックします。 アカウントは、要求の IP と、入力したパスワードに基づいてロックされます。 また、ロックアウト期間は、攻撃されている可能性に応じて長くなります。 パスワードの試行に 10 回 (既定の試行回数のしきい値) 失敗した後、1 分間ロックアウトされます。 アカウントのロックが解除された後 (つまり、ロックアウト期間が過ぎてアカウントのロックがサービスによって自動的に解除された後)、次のログインに失敗すると、さらに 1 分間ロックアウトされ、ログインに失敗するたびにこの状態が続きます。 同じ、または似ているパスワードを繰り返し入力した場合は、複数回失敗したログインとしてカウントされません。

注意

この機能は、ユーザー フロー、カスタム ポリシー、および ROPC フローでサポートされています。 これは既定でアクティブ化されるため、ユーザー フローやカスタム ポリシーで構成する必要はありません。

アカウントのロック解除

最初の 10 回のロックアウト期間は、1 分となります。 次の 10 回のロックアウト期間は若干長くなり、その後、10 回のロックアウト期間ごとに長くなります。 ロックアウト カウンターは、アカウントがロックされていない状態でログインに成功した後、0 にリセットされます。 ロックアウト期間は、最長で 5 時間続く場合があります。 ユーザーはロックアウト期間が期限切れになるまで待つ必要があります。 ただし、ユーザーはセルフサービスのパスワード ユーザー フローを使用してロックを解除できます。

スマート ロックアウトの設定を管理する

ロックアウトしきい値を始めとするスマート ロックアウトの設定を管理するには:

  1. Azure ポータル

  2. ご自分の Azure AD B2C テナントが含まれるディレクトリを必ず使用してください。 ポータル ツールバーの [Directories + subscriptions](ディレクトリ + サブスクリプション) アイコンを選択します。

  3. [ポータルの設定] | [Directories + subscriptions](ディレクトリ + サブスクリプション) ページで Azure AD B2C ディレクトリを [ディレクトリ名] リストで見つけ、 [Switch] を選択します。

  4. 左側のメニューで、 [Azure AD B2C] を選択します。 または、 [すべてのサービス] を選択し、 [Azure AD B2C] を検索して選択します。

  5. [セキュリティ] で、[認証方法 (プレビュー)] を選択し、[パスワード保護] を選択します。

  6. [カスタム スマート ロックアウト] で、目的のスマート ロックアウト設定を入力します。

    • Lockout threshold (ロックアウトしきい値) : アカウントが最初にロックアウトされるまでに許容される、サインインの失敗回数です。ロックアウト後の最初のサインインにも失敗した場合、アカウントは再びロックされます。

    • Lockout duration in seconds (秒単位のロックアウト期間) : 各ロックアウトの最小継続時間 (秒単位)。 アカウントが何度もロックされると、この時間は長くなります。

      Azure portal の Azure AD 設定内パスワード保護ページ
      "[パスワード保護] 設定でロックアウトしきい値を 5 に設定"

  7. [保存] を選択します。

スマート ロックアウトのテスト

スマート ロックアウト機能では、アカウントをロックすべきかどうかを判断するために多くの要素が使用されますが、主な要素はパスワードのパターンです。 スマート ロックアウト機能では、わずかに異なるパスワードのバリエーションを 1 セットとみなし、1 回の試行としてカウントします。 次に例を示します。

  • 「12456!」 や「1234567!」 などのパスワード (または「newAccount1234」や「newaccount1234」) のようなパスワードは非常によく似ているため、アルゴリズムではこれらは人的エラーであると解釈され、1 回の試行としてカウントされます。
  • 「12456!」や 「ABCD2!」のようにパターンが大きく異なる場合は、別の試行としてカウントされます。

スマート ロックアウト機能をテストする場合は、それぞれ特徴的なパスワードのパターンを入力するようにします。 https://passwordsgenerator.net/ などのパスワード生成 Web アプリを使用することを検討してください。

スマート ロックアウトのしきい値に達すると、アカウントがロックされている間に 「承認されていない使用を防ぐためにアカウントが一時的にロックされています。後でもう一度お試しください」 というメッセージが表示されます。 エラー メッセージは、ローカライズできます。

注意

スマート ロックアウトをテストする際、Azure AD 認証サービスの地理的分散および負荷分散の性質により、サインイン要求はさまざまなデータセンターによって処理される可能性があります。 そのシナリオでは、ロックアウトはそれぞれの Azure AD データセンターによって個別に追跡されるため、ロックアウトを発生させるために、定義されたロックアウトしきい値よりも多くの試行回数が必要になる場合があります。 完全にロックアウトされるまでのユーザーの最大不正試行回数は (threshold_limit * datacenter_count) です。詳細については、「Azure グローバル インフラストラクチャ」を参照してください。

ロックアウトされたアカウントの表示

ロックアウトされたアカウントについての情報を取得するには、Active Directory のサインイン アクティビティ レポートを確認します。 [状態] で、[失敗] を選択します。 [サインインのエラー コード]50053 の失敗したサインイン試行は、ロックされたアカウントを示しています。

ロックアウトされたアカウントを示している Azure AD サインイン レポートのセクション

Azure Active Directory でサインイン アクティビティ レポートを表示する方法については、「サインイン アクティビティ レポートのエラー コード」を参照してください。