Azure Cosmos DBのreferrer修正とは?Firefox 150+でData Explorerが開けない場合の確認ポイント

Azure Cosmos DBの公式更新情報「Fix the empty string referrer for firefox 150+」は、データベース本体やSDKの仕様変更ではなく、Azure Cosmos DB Data ExplorerがAzure Portal内で読み込み中のまま止まる可能性を減らすUI側の修正です。特に、Firefox 150+や厳格なプライバシー設定、コンテンツブロック拡張機能、制限の強いReferrer-Policyによってdocument.referrerが空になる環境では確認しておきたい内容です。PRでは、空のreferrerによりpostMessageの送信先オリジンを決められず、ログ処理が再帰して「too much recursion」が発生し、Data Explorerの準備完了ハンドシェイクが送られない問題が説明されています。(GitHub)

管理者がまず見るべきポイントは、Cosmos DBアカウントのネットワーク設定やRU、インデックス、アプリケーションコードではありません。Azure Portal上のData Explorer表示、ブラウザポリシー、拡張機能、そして自社でCosmos Explorerを組み込んでいる場合のiframe連携です。

目次

今回の変更で何が変わるのか

Azure Cosmos DB Data Explorerは、Azure Cosmos DBに格納されたデータを表示・管理するためのWebベースのインターフェイスです。Microsoft Learnでも、Azure Portal内のData Explorer体験と、専用のData Explorerを使う方法が案内されています。(Microsoft Learn)

今回の修正対象は、そのData ExplorerがAzure Portal内のiframeとして動作するときのメッセージ送信処理です。Azureのcosmos-explorerリポジトリは、Azure Portal、専用Data Explorer、Cosmos DB EmulatorのUIを支えるプロジェクトとして公開されています。(GitHub)

確認項目内容
修正対象Azure Cosmos DB Data ExplorerのpostMessage送信処理
主な発生条件document.referrerが空になるブラウザ環境、厳格なプライバシー設定、コンテンツブロック、制限の強いReferrer-Policy
修正前の問題送信先オリジンを決められず、ログ処理が同じ送信経路に入り直して再帰し、Data Explorerが読み込み中のままになる可能性があった
修正後の挙動document.referrerが空の場合、iframe URLに含まれるtrustedAuthorityをフォールバックとして使い、厳密なoriginに正規化する
利用者側の移行通常、Cosmos DBのデータ移行、SDK更新、スキーマ変更は不要
開発者側の確認自社でcosmos-explorerをビルド・埋め込み利用している場合は、該当修正を取り込んでテストする

関連PR #2486は2026年5月20日にmasterへマージされ、変更ファイルはsrc/Common/MessageHandler.tsです。差分では、document.referrerだけに依存せず_getPortalTargetOriginで送信先を決定する処理と、失敗時にLogger経由ではなくApplication Insightsへ直接送る処理が追加されています。(GitHub)

問題の原因:空のdocument.referrerでpostMessageの送信先を決められない

window.postMessage()は、iframeと親ページなど、異なるWindow間で安全にオリジン間通信を行うためのWeb APIです。targetOriginには送信先のオリジンを指定でき、意図しない相手にメッセージを渡さないための重要な制御になります。MDNも、*ではなく具体的なtargetOriginを指定する重要性を説明しています。(MDN 웹 문서)

Azure Portal内のData Explorerはiframeとして読み込まれるため、Data Explorer側から親のAzure Portalへメッセージを送る必要があります。従来の処理では、その送信先としてdocument.referrerを利用していました。しかし、ブラウザがreferrer情報を空にすると、送信先オリジンを取得できません。

referrerが空になる理由は、Firefox 150+だけに限定して考えるべきではありません。PR本文では、Firefoxの動的な状態分離やETP Strict、コンテンツブロック拡張機能、制限の強いReferrer-Policyヘッダーなどが例として挙げられています。(GitHub)

Referrer-Policyは、リクエスト時に送信されるreferrer情報の量を制御するHTTPヘッダーです。no-referrerではreferrer情報が送られず、same-originではクロスオリジンのリクエストにreferrerが送られません。つまり、セキュリティやプライバシーを強める設定が、iframe連携の前提を崩すことがあります。(MDN 웹 문서)

影響範囲:Cosmos DB本体ではなく管理UIが中心

今回の変更は、Azure Cosmos DBのデータプレーンではなく、Data Explorerの表示・操作体験に関わる修正です。アプリケーションからの読み取り、書き込み、クエリ、SDK接続、RU消費、インデックス設定、バックアップ、変更フィードなどが直接変更されるわけではありません。

影響を受けやすいケース起きやすい現象確認ポイント
Azure Portal内でData Explorerを開く読み込みスピナーのまま止まるFirefoxのバージョン、プライバシー設定、拡張機能
社内標準ブラウザでreferrerを抑制している一部ユーザーだけData Explorerが開けないグループポリシー、ブラウザ管理ポリシー
コンテンツブロッカーを利用しているポータル内iframe通信が失敗する拡張機能の無効化で再現性が変わるか
自社でCosmos Explorerを組み込んでいるiframe連携や親画面との通信が不安定trustedAuthorityの付与、origin検証、エラー処理
E2EテストでPortal埋め込みを検証している特定ブラウザだけテストが落ちるreferrerpolicy="no-referrer"相当のテスト追加

一方で、Cosmos DBアカウントのファイアウォール、プライベートエンドポイント、ロール割り当て、CORS、接続文字列、API種別を最初に変更するのは避けるべきです。Data Explorerが開けない症状だけを見てネットワークや権限を緩めると、根本原因から外れた変更になりやすく、セキュリティリスクも増えます。

管理者が確認すべき設定と運用ポイント

まずブラウザ起因かを切り分ける

Data ExplorerがAzure Portal上で読み込み中のまま止まる場合は、次の順で切り分けると無駄な設定変更を避けられます。

手順確認内容判断基準
1同じユーザー・同じCosmos DBアカウントを別ブラウザで開く特定ブラウザだけで起きるならブラウザ設定の可能性が高い
2Firefoxのプライバシー設定を確認する厳格な追跡防止や企業管理ポリシーの影響を見る
3コンテンツブロック拡張機能を一時的に無効化する無効化で改善するなら拡張機能がreferrerやiframe通信に干渉している可能性がある
4専用Data Explorerを試すAzure Portal内のiframe固有の問題かを分離できる
5開発者ツールのConsoleを確認するtoo much recursionpostMessage関連のエラーがないかを見る

専用のAzure Cosmos DB Data Explorerは、Azure Portal内のData Explorerとは別の利用経路として案内されています。Microsoft Learnでは、専用Data Explorerが全画面表示やクエリ結果共有などの利点を持つと説明されています。(Microsoft Learn)

セキュリティ設定を安易に弱めない

今回の問題は、referrerが空になることでUI連携が崩れるケースです。ただし、だからといって組織全体のReferrer-Policyを緩めたり、unsafe-urlのような設定へ変更したりするのは慎重に判断すべきです。MDNは、unsafe-urlがHTTPSリソースURLの潜在的にプライベートな情報を安全でないオリジンへ漏らす可能性があると警告しています。(MDN 웹 문서)

恒久対応として優先すべきなのは、ブラウザのプライバシー制御を弱めることではなく、Data Explorer側がreferrerなしでも安全に親Portalのoriginを決定できる状態にすることです。今回の修正はまさにその方向の変更です。

問い合わせ対応では情報を絞って集める

社内ヘルプデスクやAzure管理者は、「Data Explorerが開けない」という問い合わせに対して、次の情報をテンプレート化して収集すると原因特定が早くなります。

収集項目
ブラウザ名とバージョンFirefox 150+、Edge、Chromeなど
プライバシー設定標準、厳格、企業管理ポリシー適用あり
拡張機能コンテンツブロック、広告ブロック、セキュリティ製品のブラウザ拡張
発生場所Azure Portal内のData Explorer、専用Data Explorer、Emulator、独自埋め込み
エラーConsole上のtoo much recursionpostMessage、origin関連メッセージ
再現条件特定端末のみ、特定テナントのみ、特定ブラウザのみ

この切り分けを行うと、Cosmos DBアカウント側の障害なのか、ポータルUI・ブラウザ・拡張機能の問題なのかを早い段階で分けられます。

開発者が確認すべき移行・展開ポイント

自社でcosmos-explorerを利用している場合は修正取り込みを確認する

Microsoftが管理するAzure Portalを通常利用しているだけなら、利用者側でData Explorerのコードを直接入れ替えることはできません。一方、自社環境でAzure/cosmos-explorerをビルドしている、独自ポータルにData Explorerを埋め込んでいる、Emulatorや検証環境で独自ホストしている場合は、今回のPR相当の修正が含まれているか確認が必要です。

PRの差分では、document.referrerが存在する場合はそれを使い、空の場合はURLクエリのtrustedAuthorityを読み取ってnew URL(...).originでoriginへ正規化する流れが追加されています。さらに、送信先originが取得できない場合はpostMessageを呼ばず、Loggerを経由しない直接のTelemetry記録で再帰を避ける実装になっています。(GitHub)

実装方針としては、次の3点を満たしているかを確認してください。

確認項目よい状態避けるべき状態
送信先originの決定document.referrerが空でも信頼済みパラメーターからoriginを復元できるreferrerが常に存在すると仮定する
originの扱いスキーム、ホスト、ポート単位のoriginへ正規化するURL全体や未検証の文字列をそのまま使う
エラー記録壊れたpostMessage経路に入らないTelemetryを使うエラー時に同じ送信関数へ戻るLoggerを呼ぶ

trustedAuthorityは「便利な抜け道」ではなく信頼境界として扱う

今回の修正で使われるtrustedAuthorityは、Azure Portalがiframe URLに埋め込む信頼済みAuthorityとして説明されています。ここで重要なのは、任意の送信先を許すためのパラメーターではなく、referrerが空でも正しいPortal originを復元するためのフォールバックとして扱うことです。(GitHub)

独自実装で同様の考え方を取り入れる場合は、次のようなルールを設けるべきです。

  • targetOrigin*を使わない
  • trustedAuthorityをそのまま文字列連結しない
  • 許可済みのPortal originと照合する
  • パスやクエリではなくoriginだけを使う
  • malformed URLの場合は送信せず、Telemetryに残す
  • 受信側でもevent.originとメッセージ形式を検証する

MDNは、postMessageでメッセージを受信する側がoriginsourceで送信者を検証する必要があると説明しています。送信側のtargetOriginだけでなく、受信側の検証も合わせて実装してください。(MDN 웹 문서)

テストでは「referrerがある状態」だけを見ない

今回の不具合は、通常の開発環境では見落としやすい典型例です。多くのローカルテストではdocument.referrerが存在するか、そもそもPortal埋め込みの条件を再現していません。PRでは、referrerpolicy="no-referrer"を使ったラッパーページでローカル再現し、修正前は即座に「too much recursion」、修正後は正常に起動することを確認したと説明されています。(GitHub)

テストケース期待する結果
通常のreferrerあり従来通り親Portalへメッセージを送れる
referrerpolicy="no-referrer"のiframetrustedAuthorityからoriginを復元し、Data Explorerが起動する
trustedAuthorityが不正なURLpostMessageを呼ばず、再帰せずにTelemetryへ記録する
trustedAuthorityがない無限再帰せず、失敗を安全に扱う
Firefoxの厳格なプライバシー設定読み込みスピナーで止まらない
コンテンツブロック拡張機能あり少なくとも再帰エラーでUI全体が固まらない
受信側originが不正メッセージを処理しない

開発者は、正常系だけでなく「ブラウザがセキュリティ・プライバシーのために情報を渡さない」ケースをE2Eテストに含めるべきです。iframe、Portal、埋め込みUIを扱う場合、referrerやcookie、storage、third-party contextの前提は今後も変わる可能性があります。

展開時の注意点:触るべき設定と触らない方がよい設定

Azure Portal利用者はDB設定を先に変えない

Azure PortalのData Explorerだけが開けない場合、最初にCosmos DBアカウントの本番設定を変更するのは避けてください。特に、次の変更は今回の修正内容と直接関係しない可能性が高いです。

変更しがちな設定今回の問題との関係
ファイアウォール許可範囲の拡大iframeのreferrer問題とは別
プライベートエンドポイントの変更Data ExplorerのUI通信とは原因が異なる可能性が高い
RBACやキーの再発行認証・認可エラーではなくUI読み込みエラーの場合は優先度が低い
RU/sの増減読み込みスピナーやpostMessage再帰とは無関係
CORS設定Azure Portal内iframeの親子通信とは別の論点になりやすい

まずはブラウザ条件、Portal内Data Explorerか専用Data Explorerか、Consoleエラーの有無を確認しましょう。

自社ホスト版はキャッシュとロールバックも考慮する

自社でCosmos Explorerを配布している場合、コード修正を取り込むだけでは不十分です。フロントエンド資産がブラウザやCDNにキャッシュされていると、修正後もしばらく古いJavaScriptが実行されることがあります。

展開時は、次の点を確認してください。

項目確認内容
ビルドPR #2486相当のMessageHandler.ts修正が含まれる
配布CDN、App Service、静的ホスティングのキャッシュを更新する
互換性既存Portal埋め込み、専用画面、Emulator表示で動作確認する
監視no target origin系のTelemetryが急増していないか見る
ロールバック修正後に別のorigin判定問題が出た場合の戻し手順を用意する

特に、独自PortalでData Explorerをiframeに入れている場合は、trustedAuthorityに相当する値を正しく付けているか、許可リストと一致しているかを事前に確認してください。

よくある疑問

Azure Cosmos DBのデータやアプリケーションコードに影響する?

通常は影響しません。今回の修正はData Explorerのiframe通信に関するものであり、Cosmos DBの保存データ、クエリ結果、パーティションキー、インデックス、SDKのAPI仕様を変えるものではありません。アプリケーションからCosmos DBへ直接アクセスしている処理で問題が出ていないなら、まずData Explorer UIの問題として切り分けるのが現実的です。

Firefox 150+以外では関係ない?

Firefox 150+はPRタイトルに含まれる重要な条件ですが、問題の本質は「ブラウザや設定によりdocument.referrerが空になること」です。PR本文でも、FirefoxのETP Strictだけでなく、コンテンツブロック拡張機能や制限の強いReferrer-Policyヘッダーが例として挙げられています。(GitHub)

そのため、EdgeやChromeでも、拡張機能や企業管理ポリシーによってreferrerが抑制される環境では似た症状が起きる可能性があります。

セキュリティ修正として緊急対応すべき?

PRの説明を見る限り、主眼はData Explorerが読み込み中のまま止まる問題と、失敗時の再帰を防ぐ堅牢性改善です。データ漏えい、認証バイパス、CVE対応として説明されているわけではありません。とはいえ、postMessageのorigin指定はセキュリティ上重要な実装ポイントです。*で送る、受信元を検証しない、未検証のURLをtargetOriginに使う、といった実装が自社コードにないかはこの機会に確認すべきです。

一時回避策はある?

Azure Portal内のData Explorerでだけ問題が出る場合は、次の順で試すとよいでしょう。

回避策注意点
別ブラウザで開く恒久対応ではなく切り分け用として使う
専用Data Explorerを使う権限や共有方法がPortal内利用と異なる場合がある
拡張機能を一時停止する組織のセキュリティポリシーに反しない範囲で行う
ブラウザのプライバシー設定を一時的に変更する恒久的に弱める前に管理者へ相談する
Microsoft管理側の更新反映を待つ自社でPortal本体のコードを直接更新することはできない

実務でのチェックリスト

対象者今日確認すべきこと完了の目安
Azure管理者Data Explorerが開けない問い合わせがUI起因かを切り分ける別ブラウザ・専用Data Explorer・Consoleエラーで分類できている
セキュリティ管理者referrer抑制ポリシーやブラウザ拡張機能の影響を確認するセキュリティ設定を弱めずに回避・説明できる
開発者自社のiframe実装やcosmos-explorer取り込み状況を確認するtrustedAuthority相当のfallbackとorigin検証がある
QA担当referrerpolicy="no-referrer"相当のE2Eテストを追加するreferrerなしでも再帰せず起動できる
ヘルプデスク問い合わせテンプレートを整備するブラウザ、拡張機能、発生場所、Consoleエラーを収集できる

まとめ:UI不具合として切り分け、必要な環境だけ更新する

今回の「Fix the empty string referrer for firefox 150+」は、Azure Cosmos DBのデータベース機能そのものの変更ではなく、Azure Cosmos DB Data ExplorerがAzure Portal内のiframeから安全にメッセージを送るための修正です。document.referrerが空になっても、trustedAuthorityから送信先originを復元し、失敗時にも再帰しないようにする点が中心です。(GitHub)

管理者は、Data Explorerが開かないという症状を見ても、すぐにCosmos DBのネットワークや権限を変えないことが重要です。まずブラウザ、拡張機能、Portal内表示か専用Data Explorerかを切り分けてください。

開発者は、自社でCosmos Explorerを埋め込み利用している場合に、referrerが存在する前提の実装を見直しましょう。postMessageでは具体的なtargetOriginを指定し、受信側でもoriginとメッセージ形式を検証する。この基本を守ることが、今後のブラウザプライバシー強化にも耐える実装につながります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次