先日 2 /23 (日本時間) に発生致しました Windows Azure ストレージ のサービス中断におきましては、ご利用中のお客様には大変ご迷惑をおかけ致しました。Windows Azure ブログ にて今回のサービス中断の発生および原因についてのレポートが掲載されました。
Windows Azure Blog > Details of the February 22nd 2013 Windows Azure Storage Disruption (→ 日本語訳)
日本時間 2/23, 5:29 AM ~ 17:09 PM (PST 2/22, 12:29 PM ~ 2/23, 0:09 AM) に、Windows Azure ストレージ (ブロブ、テーブル、キュー) に HTTPS によるアクセス中断が発生いたしました。
■ 証明書の管理方法 および HTTPS アクセス中断までの経緯
サービスを稼働させるために必要な証明書は シークレットストア (Secret Store) と呼ばれる 内部管理サービスで安全に管理されています。この内部管理サービスによりストレージの 配置、プラットフォームや証明書を含むアップデートの自動化が行われており、コンプライアンスおよびセキュリティ保持のために管理担当者が直接アクセスすることができなくなっています。
Windows Azure ストレージ で使用されている SSL 証明書は シークレットストア に保管されており、ストレージ の各サービス (ブロブ、テーブル、キュー) のサブドメインごとに共通化されています。(ブロブであれば *.blob.core.windows.net になり、全ての地域が対象になります。) そして、同じ証明書が Windows Azure ストレージの各ノード (サーバー) に格納されています。ブロブ、テーブル、キューの SSL 証明書の期限が 日本時間 2/23, 5:29~5:32 AM (PST 2/22, 12:29~12:32 PM) という同時期に重なっていたため、HTTPS を利用した ストレージ へのアクセスが一斉に中断に至りました。
通常、シークレットストアによる証明書の確認は毎週行われており、期限切れの 180 日前にアラートが担当チームに送信されるようになっています。今回、証明書期限切れのアラートが送信され、担当チームにて証明書の更新作業が行われていました。この作業は、デプロイが予定されているサービスの新しいビルドに更新した証明書を入れた上で、シークレットストアのデータベースにある証明書を更新する、というもので、Windows Azure のサービス更新として毎月何百回と行われている手順と同様です。但し、今回の証明書更新作業において緊急度フラグの設定が行われておらず、他の緊急度 [高] のフラグが設定された更新作業が優先されていました。また、シークレットストア側の証明書は更新済みとなっていたため、再度のアラートは送信されませんでした。
■ HTTPS アクセス の復旧手順
日本時間 2/23, 5:44 AM (PST 2/22,12:44 PM) に通常の管理プロセスにて異常が検出され、証明書の期限切れが原因となっていることが特定されました。日本時間 2/23, 06:15 AM (PST 2/22, 13:15 PM) にサービス復旧のための作業が確認されました。
通常のサービス更新は SLA を順守できるように、新しい証明書が含まれたビルドでサービスを更新し、ファブリックコントローラーにより対象となるドメイン内で全てのノードを配置する、という手順で行われます。この作業は世界規模のサービスで実行されるため、時間を要します。また、ファブリックコントローラーは "望ましい状態 (desired state / goal state)" と呼ばれる定義に沿うようにノードを自動管理しています。
迅速にサービスを復旧させるために、まず SSL 証明書の更新によるサービスの復旧作業を行い、更新された証明書を含むサービスの完全な更新作業を行う、という手順で行われました。手動による証明書更新作業は、ファブリックコントローラーによる管理が働くため、問題なく証明書を更新できるサービス更新プロセスが検証されました。HTTP によるデータアクセスは正常に稼働しており、他のサービスを含めて復旧作業の間も影響がないように進められました。
過去に発生した障害時の経験から、複雑または二次的な障害が発生しないための検証を十分に行うことが必要であり、日本時間 2/23, 11:22 AM (PST 2/22, 18:22 PM) までに証明書を更新するプロセスが開発されたのち、検証が行われました。まずは 日本時間 2/23, 12:20 PM (PST 2/22, 19:20 PM) よりアメリカ西海岸 のデータセンターで更新プロセスが実施され、日本時間 2/23, 13:50 PM (PST 2/22, 20:50 PM) にサービスが復旧しました。その後、全世界のデータセンターでサービス更新が行われ、日本時間 2/23, 15:45 PM (PST 2/22, 22:45 PM) にプロセスが終了、確認が行われたのち、日本時間 2/23, 17:09 PM (PST 00:09) にサービス復旧となりました。
証明書の更新作業と並行して、サービスを完全に更新するためのプランが進められ、日本時間 2/23,16:00 PM (PST 2/22, 23:00 PM) から作業開始、日本時間 2/24, 12:59 PM (PST 2/23,19:59 PM) まで、SLA に沿ってサービス更新が完了しました。
■ 今後の対��
今後同様の問題が再度発生することのないように、問題検出 / 発生防止 / 発生時対応 / 復旧対応 のプロセスにわたって修繕・改善を行います。
- Detection (問題検出)
- シークレットストアだけでなく、運用環境での証明書の確認を行うように監視範囲を拡大します。
- Recovery (復旧対応)
- 配置メカニズムのパフォーマンスや信頼性を向上させ、問題発生時により迅速な対応が行えるように引き続き改善いたします。
- Prevention (発生防止)
- 証明書の更新期限 3 か月前に運用インシデントを作成し、サービスに影響を与える事故 (Service Inpacting Event) と同様に対応とトラッキングを行います。
- 更新作業のトラッキングと重要度の検証を行う手動プロセスを組み込みます。
- 証明書の問題が広範囲にわたる事故とならないように、証明書を分割することを検討します。
- Response (発生時対応)
- サービス中断の間、Windows Azure サービスダッシュボードは予定通りのフェイルオーバーを経て稼働し、重大なアップデートなど経過のレポートを行いました。問題やアップデートの情報をお知らせするレポートの更新を行う、より正確な予定時刻 (ETA) をお知らせできるように改善いたします。
- 把握している情報をリアルタイムにお伝えすることでお客様とのコミュニケーションを改善できるように努めてまいります。
■ 影響範囲とサービスクレジット
このサービス中断により、ご利用中のお客様に多大なるご迷惑をおかけ致しました。サービス中断中に、Windows Azure ストレージ / モバイルサービス / サービスバス / メディアサービス / Web サイトをご利用いただいていたお客様に対して、影響を受けた請求期間におけるご利用料金の 25 % のサービスクレジットを発行しております。ご不明な点は、Windows Azure サポートまでお問い合わせください。