【テクニカル・上級編】Datadog RumとSession Replayにおけるプライバシー保護とPⅡデータのクライアントサイド難読化設定ガイド – 運用監視・オブザーバビリティ活用バイブル

Datadog RUM & Session Replay 完全防御マニュアル:クライアントサイド難読化の極限最適化

オブザーバビリティの究極形は、「ユーザー体験の完全な可視化」と「プライバシーの絶対的な死守」という、一見して矛盾する二律背反の調停にある。

Session Replayは、DOMの変異(Mutation)をミリ秒単位でキャプチャし、あたかもビデオのように再現する魔術的なツールだ。しかし、その裏で何が起きているか? ログインフォームのパスワード、クレジットカードのCVV、セッションアクセストークン、あるいは個人的なチャットの内容——これらが暗号化されずにペイロードに乗れば、一瞬にして法規制違反(GDPR、CCPA、APPI)および致命的なセキュリティインシデントへと直結する。

デフォルトのマスク機能に依存しているうちは、ジュニアエンジニアの域を出ない。本稿では、Datadog RUMとSession Replayの内部アーキテクチャを解剖し、パフォーマンスを1バイトたりとも犠牲にせず、PⅡ(個人識別情報)を完全にハント・無害化するクライアントサイド難読化の極限設定を叩き込む。

—

1. 内部アーキテクチャの理解:なぜデフォルト設定では不十分なのか

DatadogのSession Replayは、ブラウザ上でDOMツリーをシリアライズし、`rrweb`をベースにしたエンジンで差分をDatadogへストリーミングしている。

ここで知るべき最大のハードウェア/ネットワークの制約は、「難読化(Masking)はサーバーサイドではなく、クライアントサイド(ブラウザのメインスレッド)で実行される」という点だ。

[DOM Mutation] -> [Client-side Masking (CPU)] -> [Payload Compression] -> [HTTPS POST to Datadog]
↑
ここに負荷をかけすぎるとメインスレッドがブロックされ、
FID (First Input Delay) や INP (Interaction to Next Paint) が悪化する
正規表現ベースの総当たりマスクはブラウザを殺す。CSSセレクターと属性を活用した「O(1)に近い特定要素の直撃マスク」こそが唯一の正解だ。

—

2. マスク戦略のレイヤー構造

Datadogはデフォルトで以下のマスクレベルを提供している。

1. `mask-all-inputs` (デフォルト): すべての入力フィールド(``, `