公開日: 2025 年 5 月 1 日
Chrome 137 以降、ドキュメント分離ポリシーは、crossOriginIsolation の導入を容易にする新しい機能です。COEP(Cross-Origin-Embedder-Policy)とは異なり、ドキュメント分離ポリシーはフレームごとに適用され、サブフレームの要件はありません。crossOriginIsolation
を有効にすると、ドキュメント分離ポリシーで、SharedArrayBuffers や WebAssembly スレッドなどの強力なウェブ機能にアクセスできるようになります。
クロスオリジン分離とは何ですか?
クロスオリジン分離では、ブラウザのプロセス内でドキュメントとその同じオリジンの関連ドキュメントに厳格な境界が引かれます。これにより、ドキュメントがグループ化され、異なるオリジンのドキュメントとリソースや情報を共有する可能性がなくなります。クロスオリジン分離は、デフォルトで、基盤となるブラウザ エンジンのサイト分離またはクロスオリジン分離のサポートのステータスに関係なく、オリジンを独自のプロセスで読み込めるようにすることで、このことを実現します。これにより、Spectre などの推測実行攻撃から保護できます。
ドキュメント分離ポリシーとは
ドキュメント分離ポリシーは、COOP(Cross-Origin-Opener-Policy)や COEP(Cross-Origin-Embedder-Policy)と比較して、crossOriginIsolation を実装するより簡単な方法です。これにより、フレーム単位で分離できるため、COEP をサポートするために埋め込み iframe を使用する必要がなくなります。
ドキュメント分離ポリシーの仕組み
ドキュメント分離ポリシーを使用すると、ウェブ アプリケーション内の特定のフレームを分離できます。ドキュメントに Document-Isolation-Policy ヘッダーを送信すると、ドキュメントは SharedArrayBuffers などの強力な機能にアクセスできるようになります。これらの機能は、セキュリティ上の懸念から制限されています。COOP や COEP とは異なり、ドキュメント分離ポリシーでは、ドキュメントが通信できるページや、埋め込むことができる子フレームに制限を課しません。ドキュメント分離ポリシーが適用されたドキュメントは、クロスオリジンのポップアップを開いて通信できます。通常どおり iframe を埋め込むこともできます。
ドキュメント分離ポリシーには、COEP と同様に、isolate-and-require-corp
と isolate-and-credentialless
の 2 つのモードがあります。これらのモードは、クロスオリジン リソース シェアリング(CORS)なしで読み込まれるクロスオリジン サブリソースの処理方法を管理します。isolate-and-require-corp
モードでは、クロスオリジン リソースは Cross-Origin-Resource-Policy
ヘッダーを使用してクロスオリジン リソース ポリシーを明示的に宣言する必要があります。宣言しない場合、リソースはブロックされます。これにより、リソースが意図的に共有されます。逆に、isolate-and-credentialless
モードでは、CORS ヘッダーなしでクロスオリジン リソースを読み込むことができますが、リクエストから認証情報(Cookie や HTTP 認証など)が削除され、リソースが匿名であるかのように効果的に処理されます。このモードでは、制限が緩和されながらも、CORS 以外のリソースを安全に処理できます。
ドキュメント分離ポリシーで分離された iframe は、分離されていない同一オリジンの iframe に同期 DOM アクセスできません。ただし、これらの分離された iframe は、postMessage などのクロスオリジン Window メソッドを使用して、分離されていないフレームと通信できます。また、ストレージ API への完全アクセス権を保持するため、分離が有効になっている場合でも、同じオリジン内でのデータの永続化と共有が可能です。