Azure Active Directory の可用性の進化

2019年12月17日 に投稿済み

Chief Technology Officer, Microsoft Azure

「可用性を改善するために実施されている主要なイニシアティブについて、可能な限り詳細な情報をお伝えするための Azure の信頼性に関するシリーズに引き続き、本日は、Azure Active Directory に着目してみたいと思います。Microsoft Azure Active Directory (Azure AD) は 2 億 5000 万人の月間アクティブ ユーザーに対し、セキュリティで保護されたアクセスを提供するクラウド ID サービスで、140 万個を超える固有のアプリケーションを接続し、毎日 300 億回を超える認証要求を処理しています。このことは、Azure AD が最大規模のエンタープライズ ID およびアクセス管理ソリューションであるだけでなく、世界で最も大規模なサービスの 1 つであることも示しています。次の投稿は、この取り組みを先導している Nadim Abdo (Partner Director of Engineering) により記述されたものです。」 - Mark Russinovich (CTO、Azure)


 

Microsoft のお客様は、そのすべてのアプリケーションとサービスへの安全なアクセスの管理に Azure AD を利用しています。これは Microsoft にとって、すべての認証要求がミッション クリティカルな運用であることを意味します。サービスの重要性と規模を考えると、Microsoft の ID チームの最優先事項は、サービスの信頼性とセキュリティです。Azure AD は、真のクラウドネイティブ、ハイパースケール、マルチテナント アーキテクチャを使用して可用性とセキュリティを実現できるように設計されており、Microsoft のチームは信頼性とセキュリティに関するハードルを継続的に上げるプログラムを実施しています。

Azure AD: 中心となる可用性の原則

このスケール、複雑さ、ミッション クリティカルなサービスを、障害が発生する可能性があり、また障害が発生している世界で高度に利用できるよう設計することは、複雑なタスクです。

Microsoft の回復性への投資は、次のような一連の信頼性の原則に基づいて整理されています。

o	Azure AD の回復性への投資は、この一連の信頼性の原則に基づいて整理されています。

Microsoft の可用性への取り組みでは、お客様が目にする障害の可能性をできるだけ減らすために、多層防御アプローチを採用しています。障害が発生した場合は、可能な限りその障害の影響範囲を狭め、最終的には、障害復旧までの時間を短縮して、可能な限り障害を軽減します。

今後数週間、また数か月にわたって、各原則の設計および検証が実際にどのように行われているかについて詳しく説明すると共に、お客様にとって最適な例を紹介します。

高い冗長性

Azure AD は、複数レベルの内部冗長性と自動回復性を備えたグローバル サービスです。Azure AD は、Azure Availability Zones (存在する場合) を活用して世界各地の 30 を超えるデータセンターにデプロイされています。追加の Azure リージョンがデプロイされており、この数は急速に増えています。

持続性を維持するため、Azure AD に書き込まれるデータは、テナントの構成に応じて、少なくとも 4 つから最大 13 のデータセンターにレプリケートされます。各データ センター内では、持続性を維持するためデータは少なくとも 9 回レプリケートされますが、認証の負荷に対応するために容量をスケールアウトすることもできます。これをわかりやすく説明すると、少なくとも 36 のディレクトリ データのコピーが最小リージョンのサービス内で提供されるということです。持続性を維持するため、Azure AD への書き込みは、リージョン外のデータセンターへのコミットが成功するまで完了しません。

このアプローチにより、データの持続性と大規模な冗長性の両方を実現できます。つまり、複数のネットワーク パスとデータセンターにより特定の認証要求が処理され、データセンター内やデータセンター間で発生する障害は両方とも、自動かつインテリジェントに再試行およびルーティングされます。

これを検証するために、Microsoft はフォールト挿入を定期的に実行し、Azure AD が構築されているシステム コンポーネントの障害に対するシステムの回復性を検証しています。これにより、データセンター全体を定期的に確認することができ、顧客にまったく影響を与えることなく、システムがデータセンターの損失に耐えられるかどうかを確認することができます。

単一障害点 (SPOF) なし

前述のように、Azure AD 自体は複数レベルの内部回復性が備わるよう設計されていますが、Microsoft の原則はそれを拡大し、回復力が Microsoft の外部依存関係にまで及ぶようにします。これは、Microsoft の単一障害点 (SPOF) なしの原則として表明されています。

サービスの重要度を鑑み、Microsoft は Distributed Name Service (DNS)、コンテンツ配信ネットワーク (CDN)、SMS や音声を含む Microsoft の多要素認証 (MFA) を転送する通信事業会社などの重要な外部システムでは、SPOF を認めていません。これらの各システムについて、Microsoft は完全なアクティブ - アクティブ構成で構成された複数の冗長システムを使用しています。

この原則における作業の大部分は、昨年度に完成に近づきました。その証拠に、大規模な DNS プロバイダーで最近サービスの停止が発生したときに、Microsoft には代替プロバイダーへのアクティブ - アクティブ パスがあったため、Azure AD はまったく影響を受けませんでした。

弾力的なスケール

Azure AD は、既に 30 万を超える CPU コア上で実行されている大規模システムであり、Azure クラウドの大規模なスケーラビリティを利用して、需要に応じて動的かつ迅速にスケールアップすることができます。これにより、特定のリージョンでの認証における午前 9 時のピークなどのトラフィックの自然増、および世界最大のイベントを開催したり数百万人の新規ユーザーが一斉に利用したりするなど、Azure AD B2C が処理する新しいトラフィックの急激な上昇の両方に対応することができます。

さらなる追加の回復力のレベルとして、Azure AD はその容量をオーバープロビジョニングします。設計のポイントは、データセンター全体のフェールオーバーについて、再分散された負荷を処理するための容量の追加プロビジョニングが不要になることです。つまり、緊急時でも必要なすべての容量が既に準備されていることを把握しておくことができます。

安全なデプロイ

安全なデプロイにより、内部自動化 - 内部 - Microsoft の自己ホスト型リング - 運用環境という変更の段階 (コードまたは構成) が徐々に進められます。運用環境内では、自動正常性チェックを使用して、変更による影響があるユーザーの割合を非常に段階的かつゆっくりと増やしており、デプロイの 1 つのリングから次のリングへの進行をゲートで制御しています。この運用環境全体に変更を完全にロールアウトするプロセス全体は 1 週間以上にわたって行われ、最後の正しい正常性状態へのロールバックはいつでもすばやく行うことができます。

このシステムでは、潜在的な障害を Microsoft 社内の "早期リング" (Microsoft 社内での呼称) で定期的に捕捉し、お客様や運用環境のトラフィックに影響を与える可能性があるリングへのロールアウトを防ぎます。

最新の検証

ゲート セーフなデプロイの正常性チェックをサポートし、Microsoft のエンジニアリング チームがシステムの正常性についての分析情報を得られるようにするため、Azure AD では、システムの正常性を監視するために使用される大量の内部テレメトリ、メトリック、シグナルが生成されます。Microsoft の規模では、これは毎週 11 ペタバイトを超えるシグナルとなり、それが Microsoft の自動正常性監視システムに提供されます。これらのシステムでは次に自動化に対してアラートがトリガーされ、また Microsoft の 24 時間年中無休のエンジニア チームが可用性またはサービス品質 (QoS) の潜在的な低下に対応します。

Microsoft は、サービスの正常性についての見解だけではなく、特定のテナントに対する特定のシナリオのエンドツーエンドの正常性を正しく表すメトリクスを提供できるよう、テレメトリを拡張しています。Microsoft のチーム内部ではこれらのメトリックに対するアラートを既に発行しており、このテナントごとの正常性データを Azure Portal で直接お客様に公開する方法について評価を行っています。

パーティション分割と詳細に設定された障害ドメイン

より理解を深めるためのたとえ話ですが、Azure AD は潜水艦内の区画のようなもので、他の区画や艦全体の健全性に影響を与えることなく湛水できるように設計されています。

Azure AD でこれが相当するのは、障害ドメインです。障害ドメイン内の一連のテナントを処理するスケール ユニットは、他の障害ドメインのスケール ユニットから完全に切り離されるように設計されています。このような障害ドメインにより、さまざまなレベルの障害を物理的に分離することができるため、障害の "対象範囲" が特定の障害ドメイン内部に封じ込められます。

これまで、Azure AD は 5 つの別々の障害ドメインから構成されていました。この数は去年から増え続け、そして次の夏までには 50 の障害ドメインにまで増加します。また、Azure Multi-Factor Authentication (MFA) などの多くのサービスが、これらの同じ障害ドメインで完全に分離されるように移行されています。

このハードパーティション分割は、サービスの停止または障害がユーザーの 1/50 または最大 2% を超えないようにするための最後の砦となるよう設計されています。Microsoft の目標は、次年度に障害ドメインの数を数百にまで増加させることです。

次の展望

上記の原則は、中心の Azure AD サービスを強化することを目的としています。Azure AD に課せられた重要な役割があるため、Microsoft は立ち止まりません。今後の投稿では、運用環境でのすばやいロールアウトや、プライマリ Azure AD サービスでエラーが発生した場合でもシームレスにフォールバック認証を行うことができる、障害から完全に切り離された ID サービスについて説明します。

これは、主要な送電網が影響を受けた場合にカバレッジと保護を提供できる、バックアップの発電機や無停電電源装置 (UPS) システムに相当するものと考えてください。これは完全に透明性が保たれたエンド ユーザーにとってシームレスなシステムであり、運用環境で一連の M365 ワークロードに対する重要な認証フローの部分を保護しています。さらに多くのシナリオやワークロードに対応するため、Microsoft はその適用範囲を急速に拡大しています。

今後、Azure Active Directory ID ブログでさらに詳細な情報をお知らせします。ご質問や、今後の投稿で関心のあるトピックについてのご意見をお寄せください。