代表的な面接トピック

プロダクトマネージャー面接:セキュリティと非推奨テレメトリにReporting APIを採用すべきか?

プロダクト難しい
Offer.cc 編集チーム公開日 更新日

質問

あなたのチームは、CSP、Permissions-Policy、非推奨機能(deprecation)、介入(intervention)のレポートを一元管理したいと考えています。Reporting APIを採用するかどうかをどのように判断し、ロールアウトをどのように設計しますか?

シナリオ

あなたはマルチサイトのWebプラットフォームを担当しています。セキュリティチームは、インシデントの把握をユーザーのスクリーンショットに依存しないよう、CSP、Permissions-Policy、非推奨、介入のレポートの一元化を求めています。エンジニアリングチームはReporting APIを提案しています。これは、Reporting-Endpoints でエンドポイントを宣言し、application/reports+json を受信し、任意で ReportingObserver を使ってページ内でレポートを監視するというものです。採用の判断基準、段階的なローンチ、および成功指標を説明してください。

面接官が評価するポイント

  • ブラウザで発生する問題の早期検知を、測定可能なユーザーおよびビジネスの成果に結び付けられるか。
  • Reporting APIはベストエフォート型であり、信頼性の高いメッセージングチャネルではないことを理解しているか。
  • ブラウザのサポート状況、エンドポイントのセキュリティ、プライバシー、データガバナンスへの対処能力。
  • 段階的ロールアウト、重複排除、ロールバック基準(ゲート)の設計能力。

前提条件の確認(クラリファイングクエスチョン)

レポートの種類、対象ブラウザ、サイト数、現在のCSP/非推奨のベースライン、データ保持要件、およびアラート対応キャパシティを確認します。エンドポイントにすでに認証があるか、URLフラグメントが送信される可能性があるか、目的がインシデント削減、修復時間の短縮、コンプライアンスの証跡のいずれであるかを質問します。

30秒での回答

低コストでクリティカルではない診断シグナルとして採用します。まずはレポート専用モード(report-only)と少数のサイトサンプルから開始し、承認されたレポートタイプのみを受け入れ、既存のログを保持しながらレート制限、重複排除、マスキング(redaction)を追加します。アクション可能なレポートの割合、初回レポートから修正までの時間、誤検知率、エンドポイントのコスト、古いブラウザのカバレッジを測定します。データ品質とプライバシーのレビュー完了後にのみ対象を拡大します。配信保証を前提としたセキュリティ判断は行いません。

ステップごとの論理的思考

1. 課題と代替案の明確化

Reporting APIは、CSP、Permissions-Policy、COEP、Integrity、非推奨機能、クラッシュ、介入のレポートを転送できます。追加のカバレッジ、クライアント側の負荷・コスト、データの機密性、運用の観点から、既存のRUM SDK、サーバーログ、ブラウザコンソールと比較検討します。

2. 実用最小限のシグナル(MVS)の定義

タイプごとに論理キューを使用し、csp-violationdeprecation から開始します。サーバー側で Content-Type: application/reports+json を検証し、ペイロードサイズ、送信元、フィールドを制限し、サイト、バージョン、フィンガープリント単位で重複排除します。エンドポイントで障害が発生した場合でも、失われるのは診断データのみであり、ページリクエスト自体には一切影響を与えてはなりません。

3. 信頼性と互換性の管理

仕様上、配信は保証されていません。ネットワークやポリシーの状況により、ユーザーエージェントがレポートを破棄する場合があります。MDNでは、サポートは比較的新しいブラウザで最も手厚く、古いデバイスには存在しない可能性があると説明されています。ブラウザのバージョンごとにカバレッジをセグメント化し、サーバーログおよび ReportingObserver を補完として維持します。受信レポートがゼロであることは、違反がゼロであることを証明するものではありません。

4. プライバシー、セキュリティ、ローンチゲートの設定

レポートにはURL、ユーザーエージェント、ポリシーの詳細が含まれる場合があります。HTTPS、認証または推測不可能なパス、クエリパラメータのフィルタリング、保持期間の制限、アクセス監査を活用します。社内サイトおよびトラフィックの1%を対象にレポート専用モードで開始し、エンドポイントの負荷、機密フィールド、アクション可能な割合を監視します。PII(個人を特定できる情報)の漏洩、コストの急増、またはアラートストームが発生した場合は、エンドポイントの設定を無効化します。

質の高い模範解答

これを新しいロギングシステムではなく、ブラウザポリシーと非推奨機能に関する「早期診断レイヤー」として位置付けます。意思決定には3つのゲートを設けます。第1に価値:レポート専用モードで代表的な10サイトをサンプリングし、レポートから既存のチケットが特定できるかを確認し、平均検出時間(MTTD)のベースラインを測定します。第2にリスク:エンドポイントのフィールド、データ保持、クロスサイトの分離、アクセス制御についてセキュリティとプライバシーのレビューを実施します。第3に運用:レポートのバーストに対する負荷テストを実施し、送信元ごとのクォータ、重複排除キー、ドロップ率のモニタリングを設定します。配信はベストエフォートであるため、RUM、サーバーログ、および手動のフォールバックを維持します。ローンチ後は、ブラウザファミリーごとにカバレッジを表示し、アクション可能な割合、MTTR、誤検知、100万ページあたりのレポート数、レポートタイプ別のコストを追跡します。特定のブラウザでカバレッジが低い場合は、結論の適用範囲をカバーされたトラフィックのみに限定します。エンドポイントに異常が発生した場合は、Reporting-Endpoints レスポンスヘッダーを削除することで、コアなページリクエストを変更することなくロールバックします。

よくある間違い

  • Reporting APIを信頼性の高いキューやコンプライアンス監査ログとして扱うこと。
  • ブラウザのカバレッジを補正せずに、レポート数が減少したことだけで成功と判断すること。
  • 未加工のURL、クエリパラメータ、ユーザーエージェントを無期限に保存すること。
  • エンドポイントのレート制限、重複排除、コスト、オーナーシップに触れずにSDKの統合ばかりを議論すること。
  • レポート専用モード、サンプリング、ロールバック基準を設けずに、全サイトで一斉に有効化すること。

フォローアップの質問と回答

「なぜReportingObserverを使わないのですか?」

ページ内での実験やカスタム処理には適していますが、クラッシュしたページでは監視を継続できません。リモートエンドポイントであれば、ページのライフサイクルから独立してレポートを受信できます。両者は補完し合えますが、どちらも配信を保証するものではありません。

「製品が機能していることをどのように証明しますか?」

ブラウザのカバレッジでセグメント化し、確認された問題に対する検出時間、修復時間、アクション可能な割合、誤検知の事前/事後比較を使用します。同時にエンドポイントのコストとプライバシーイベントも監視します。

「サポートされていないブラウザについてはどうしますか?」

サポートマトリクスをプロダクトの制約条件として扱い、サーバーログとRUMを維持し、結論の範囲をサポート対象トラフィックに限定します。カバレッジを一見均一に見せるためだけに、高コストなポリフィルを挿入することは避けます。

公開情報ソース

関連する質問