Azure Active Directory B2C グローバル ID フレームワーク
Azure Active Directory B2C は、1 日あたり何百万ものユーザーと何十億もの認証をサポートできる、顧客 ID アクセス管理 (CIAM) ソリューションです。 認証プラットフォームのスケーリングと安全性が処理され、サービス拒否、パスワード スプレー、ブルート フォース攻撃などの脅威の監視と自動処理が行われます。
Azure Active Directory B2C (Azure AD B2C) は、Microsoft Entra ID とは別のサービスです。 これは Microsoft Entra ID と同じテクノロジに基づいて構築されていますが、目的が異なります。 これにより、企業は顧客向けアプリケーションを構築し、アプリケーションへのセルフサービス サインアップが可能になります。
Azure AD B2C は、以下の複数のコンポーネントで構成されるグローバルに分散されたサービスです。
Azure AD B2C ソリューションを作成する際は、サービスをホストする場所を指定する必要があります。 この場所は、ユーザー プロファイル データが保存されるリージョンのみに関連し、サインインを処理する残りのサービスはグローバルに実行されます。
通常、ユーザー ベースに最も近いリージョンに Azure AD B2C テナントをデプロイします。 これにより、ユーザー プロファイルが選択したリージョンでのみレプリケートされるため、データ所在地の法令に準拠しやすくなります。 また、ネットワーク待機時間がディレクトリ ストアに応じて最適化されるため、サインイン時に最高のパフォーマンスが得られます。
Azure AD B2C ディレクトリで世界中のユーザーにサービスを提供する必要がある場合、リージョン構成が課題となります。 Azure AD B2C テナントを作成する場所を決定する必要があります。 選択したリージョン外のユーザーは、データ所在地の要件に準拠していない可能性があり、資格情報の検証やユーザー プロファイル データの読み取り時に待機時間が長くなる場合があります。
たとえば、オーストラリアと北米のユーザーをサポートするアプリケーションで、Azure AD B2C ディレクトリが北米リージョンに作成されている場合を考えてみましょう。 オーストラリアからサインインしたユーザーは、認証を完了するまでの処理時間が長くなる可能性があります。
データ所在地の要件をより適切に満たし、パフォーマンスの問題を軽減するには、複数の Azure AD B2C テナントをデプロイする必要があります。 ビジネスを展開する各リージョンにテナントを配置することで、ディレクトリへの操作が待機時間に合わせて最適化されます。 ただし、これを行うと、このソリューションでは、各リージョンでこうした機密性の高いテナント リソースを構成、管理、保護するため、その他のオーバーヘッドが発生します。 その他のオーバーヘッドは次のようなものです。
テナント管理
テナントの分離により、グローバルとは感じられないエンド ユーザー エクスペリエンスが生じる
課金
ポリシー/アプリの登録/キーを管理するための CI/CD プロセス
このドキュメントでは、世界中のユーザーにサービスを提供するお客様に最適なソリューションである Azure AD B2C のアーキテクチャを紹介します。 このソリューションには、次の要件があります。
ユーザーが、世界のどこからアプリケーションにアクセスしても、同じ資格情報セットを保持することができる。
ユーザーが認証を行う場所を問わず一貫したパフォーマンスと待機時間。
必要最小限の構成で、顧客がプロセス、フレームワーク、SDK を開発者チームに簡単に提供できるようにする。
ユーザーが世界中を移動していても、ユーザー プロファイルを維持することができる。 これにより、任意のサービスでユーザー操作によって生成される分析に、より大きな価値が生まれます。
顧客ユーザー データが、リージョンのデータ ストアに保存される。
グローバルに展開するビジネス モデルに Azure AD B2C テナントを使用して ID プラットフォームを実装する場合は、以下の 2 つのアプローチを検討する必要があります。
1 つ目のアプローチは、地理的リージョンを境界として用いて、アプリケーションをそのリージョン専用に構成するというものです。
2 つ目のアプローチは、アプリケーションの境界をグローバルにし、追加の Azure AD B2C テナントを使用してリージョン テナント間の操作をオーケストレーションするものです。
リージョン テナント オーケストレーション
このモデルでは、アプリケーションはリージョンごとにホストされるか、リージョンごとに構成され、リージョン テナントに接続されます。 アプリケーションで、ユーザーはリージョン固有のテナントに直接送信されます。 テナント間通信は、ユーザーが別のリージョンに移動した可能性がある場合に、テナント間認証やテナント間のプロファイル更新を実行するために使用されます。
ファネル テナント オーケストレーション
このモデルでは、Azure AD B2C テナントでユーザーがリージョンの Azure AD B2C テナントにファネルされます。 ファネル テナントは、他の Azure AD B2C テナントへのリダイレクト オーケストレーターとして機能します。 これは、Azure AD B2C サービスのグローバルに分散されたコンポーネントによって処理されるため、パフォーマンスに影響はありません。 このリダイレクトは、OpenId Connect ID プロバイダーのフェデレーションを使用して実行されます。
テナント間通信は、テナント間認証や、テナント間のプロファイル更新を実行するために使用されます。 ファネル テナントにより、通信する単一のエンドポイントがアプリケーションに提供されます。
後でソリューションをモデル化することにしたアーキテクチャでは、先述の 2 つのモデル間のトレードオフを踏まえて選択を行う必要があります。 たとえば、ファネル モデルでは、アプリケーションのインスタンスを 1 つだけ保持することができます。 次のセクションでは、選択した設計に影響する可能性のある機能、選択条件、およびパフォーマンスについて説明します。
機能と考慮事項
次の表では、リージョンベースとファネルベースの設計で提供される機能について説明します。
機能 | リージョンベース | ファネルベース |
---|---|---|
ローカル アカウントのサインアップとサインインのサポート | ||
フェデレーション アカウントのサインアップとサインインのサポート | ||
登録済みリージョン外からサインインするユーザーのローカル アカウントの認証のサポート | ||
テナント間 API ベースの参照による、登録済みリージョン外からサインインするユーザーのフェデレーション アカウントの認証のサポート | ||
複数の異なるリージョンからのサインアップの防止 | ||
接続する一連のエンドポイントがある各リージョンのアプリケーション | ||
すべてのアプリケーションの単一エンドポイント セットへの接続 (ホストされているリージョンを問わない) | ||
細かい設定が可能な条件付きアクセス ポリシーのサポート。 | ||
コストの最適化。 |
機能に応じて、次の考慮事項を検討する必要があります。
リージョンベースのアプローチを使用する場合、主な考慮事項は、複数のリージョンにまたがるアプリケーションで、各リージョンの Azure AD B2C テナントに対した構成がそれぞれ必要である点です。
ファネルベースのアプローチを使用する場合
二重のトークン コストが発生します
追加の HTTP リダイレクトが発生します
多くのテナントでカスタム ドメインが必要になります
条件付きアクセスが、アプリケーション レベルではなくテナント レベルで適用されます
複数の IdP によるシングル サインアウトで、問題が生じる可能性があります
アプローチの選択は、ホストするアプリケーションの数と、アプリケーションへのアクセスに関する特定の要件に基づいて行います。
パフォーマンス
複数のテナントをリージョンベースまたはファネルベースの構成で利用することで、グローバルに展開する企業で単一の Azure AD B2C テナントを利用するよりもパフォーマンス上のメリットがより多く得られます。
ファネルベースのアプローチを使用する場合、ファネル テナントは特定の 1 つのリージョンに配置され、グローバルなサービスをユーザーに提供します。 ファネル テナント操作では Azure AD B2C サービスのグローバル コンポーネントを利用するため、ユーザーがどこからログインしたかに関係なく、一貫したレベルのパフォーマンスを維持します。
上の図に示すように、ファネルベースのアプローチにおける Azure AD B2C テナントでは、ポリシー エンジンのみでリージョンの Azure AD B2C テナントへのリダイレクトが実行されます。 Azure AD B2C のポリシー エンジン コンポーネントはグローバルに分散されています。 そのため、Azure AD B2C ファネル テナントがプロビジョニングされている場所を問わず、ファネルはパフォーマンスの観点から制約を受けません。 ファネルベースのアプローチでは、ファネル テナントとリージョン テナント間で余分なリダイレクトが発生するため、パフォーマンスの低下が発生します。
リージョンベースのアプローチでは、各ユーザーはほとんどのローカル Azure AD B2C に送られるので、ログインしているすべてのユーザーにとってパフォーマンスに一貫性があります。
リージョン テナントでは、ファネルベースとリージョンベースの両方のアーキテクチャーでリージョンに特化した唯一のコンポーネントであるディレクトリ ストアへのディレクトリ呼び出しが実行されます。
ユーザーがサインアップしたのとは異なるリージョンで認証を実行した場合にのみ、追加の待機時間が発生します。 これは、認証完了時に、リージョン間での呼び出しが実行されプロファイルが存在するディレクトリ ストアへの到達が行われるためです。