ケイパビリティ

ユーザーが実際に何をしたかを記録する — 定期的なスナップショットではなく

定期的なスクリーンショットは多くの場合空のフレームを生みます。ZeroLeakは重要な瞬間を捉えます — すべてのクリック、ナビゲーション、フォーム送信、key event、クリップボード操作 — マウスカーソルがマークされ、ページ遷移では前後のペア、そしてkey dumpではなくテキストのように読める単語ベースのキーボードバッファとともに。

コンプライアンス、インサイダーリスク、インシデント調査はいずれも同じ問いに答えなければなりません:このセッションでユーザーは実際に何をしたのか? 定期的なタイミングのスクリーンショットは多くの場合空のフレームの索引を与え、人間のレビュアーに重要な瞬間を見つけるために果てしない空白状態を眺めることを強います。ZeroLeakはこれを逆転させます。セッションは継続的に動画として記録され、スクリーンショットは重要なイベントが発生した瞬間にトリガーされ(クリック、ナビゲーション、key送信、クリップボード操作)、各スクリーンショットにマウス位置が描かれるので何がクリックされたかが見え、ナビゲーションはその前と新しいページの読み込み後の両方を捉え、キーボード入力は個々のkey eventではなく単語にバッファされます — そのため監査はユーザーが入力したテキストのように読め、修正には[BS]マークが付き、すべてのkeydownの無感情なタイムラインとしてではありません。

イベントトリガー
スクリーンショットはタイマーではなくユーザー操作でトリガーされる — 短い索引、高い信号
3ストリーム
イベントトリガーのスクリーンショット、継続的な動画、構造化されたイベント記録 — すべてタイムスタンプで整列
単語バッファ
キーボード入力は[BS]マークとともに読めるテキストとしてフラッシュされる、key key のノイズではなく

定期的なスクリーンショットはノイズを生む。必要なのは重要な瞬間だ

デフォルトのセッション記録アプローチは数秒ごとにスクリーンショットを取ることです。結果は、互いに似たフレームで満たされた索引です — ユーザーがページを読んでいる、ユーザーがページを読んでいる、ユーザーがまだページを読んでいる — その間に散りばめられた本当に重要なイベントは、遅れて到着し結果だけを示す2枚のスナップショットの間のどこかにあります。

定期的なキャプチャはさらに、あらゆる監査や調査にとって最も重要な問いの答えを取りこぼします:ユーザーは何をしたのか? クリックの1.5秒後に取られたスナップショットは何がクリックされたかを示しません。フォーム送信の3秒後に取られたスナップショットは何が入力されたかを示しません。監査記録にはコンテキストのないイベントがあり、スクリーンショットにはイベントのないコンテキストがあります。それらを結びつけるのはセッション数に対して劣悪にスケールする手作業です。

ZeroLeakは異なるアプローチを使います。スクリーンショットはタイマーではなくイベントそのものでトリガーされます。ナビゲーションは2枚のスクリーンショットを捉えます — クリック前のページと新しいページの読み込み後 — そのため原因と結果がペアとして保持されます。各キャプチャにマウス位置が描かれるので何がクリックされたかが見えます。キーボード入力は読める単語にバッファされます。その下で継続的な動画が記録されるので、捉えられたイベント間の隙間も必要であれば依然として再生できます。

イベントトリガーのキャプチャ、継続的な動画、読めるテキスト

各セッションについて3つの記録サブシステムが並行して動作します:重要な瞬間のイベントトリガーのスクリーンショット、構成されたフレームレートでの継続的なFFmpeg動画、そして単語バッファされたキーボード入力と完全なクリップボードアクティビティを伴う構造化されたイベント記録。それぞれが保護対象サービスごとに有効化・無効化できます。デフォルトでは3つが併せて動作するため、再構成は常に可能です。

スクリーンショットはタイマーではなくイベントでトリガーされる

キャプチャはユーザーの実際の操作でトリガーされます — クリック、ページナビゲーション、key送信、フォーム送信、クリップボード操作。ディスクを空のフレームで満たす時間ベースのポーリングはありません。各スクリーンショットは重要な瞬間を捉えます。索引は長くノイジーではなく、短く有益です。

各スクリーンショットにマウスカーソルが描かれる

キャプチャされた各スクリーンショットにはマウス位置が可視のインジケータでマークされます — クリックまたはホバーの正確な座標に赤い点。クリックから生じたページではなく、ユーザーが何をクリックしたかが見えます。複数フレームのパズルではなく、単一フレームでの意図の再構成です。

すべてのナビゲーションで前後のペア

ユーザーがナビゲートすると2枚のスクリーンショットがキャプチャされます — 1枚はクリック前のページ、もう1枚は新しいコンテンツが完全に読み込まれた後のターゲットページ。原因と結果がペアとして保持されます。レビュアーは「ユーザーがXリンクをクリックし、読み込まれた次のページはYだった」と2つの隣接フレームとして見ます。

キーボード入力は読める単語にバッファされる

個々のkey eventはスペース、Enter、Tab、または短い停止でフラッシュされるバッファに蓄積されます。結果は、key key のイベントダンプではなく、ユーザーが入力したテキストのように読めます。Backspaceは[BS]マークとして保持されるので修正が見えます。リピートキー(押しっぱなし)はフィルタリングされます。クリップボード操作は実際の内容とともに別途記録されます。

記録サブシステムが捉えるもの

各キャプチャメカニズムは保護対象サービスごとに独立して構成可能で、ユーザーセッションにパフォーマンス影響を与えずに動作します。3つのストリーム(スクリーンショット、動画、イベント記録)はタイムスタンプで整列しているため、レビュアーはそれらの間をシームレスに移動できます。

イベントトリガーのスクリーンショットトリガー

スクリーンショットはユーザーのクリック、ナビゲーション(前後のペアとともに)、フォーム送信、key送信(Enter)、クリップボード操作(コピー、カット、ペースト)、オペレーターコンソールから手動でトリガーされるキャプチャ、その他いくつかの重要なイベントタイプでトリガーされます。完全なイベントリストは保護対象サービスごとに構成可能です。

ナビゲーションキャプチャのためのnetwork-idle待機

ナビゲーションでは、ターゲットのスクリーンショットは新しいページの読み込みが完了した後にのみキャプチャされます — ネットワークアイドルに加えて短い追加のレンダリング遅延を待ってから。キャプチャされたスクリーンショットは、途中まで読み込まれた中間状態ではなく、ユーザーが実際に見るとおりのページを示します。

構成されたフレームレートでの継続的なFFmpeg動画

イベントトリガーのスクリーンショットの下で、セッションはFFmpegのx11grabを使って継続的に動画として記録されます。フレームレートは構成可能です(コンパクトなファイル向けにデフォルト10 fps、高詳細キャプチャ向けにより高いレートが利用可能)。動画は安全なストリーミングとリプレイのためにセグメントに分割されます。セグメントはスクリーンショットとイベント記録のストリームと整列するためにタイムスタンプ付きです。

単語バッファされたキーボード入力記録

key eventは単語境界(スペース、Enter、Tab)または短い空き停止の後でフラッシュされるバッファに蓄積されます。フラッシュされた文字列はテキストのように読めます — 「こんにちは世界 [BS][BS][BS][BS][BS]やあ世界」 — ユーザーの意図と修正を、すべてのkeydownイベントのノイズなしに保持します。

内容とともにキャプチャされるクリップボードアクティビティ

コピー、カット、ペースト操作が、関連する実際のクリップボード内容を含めて、キーボード入力とは別に記録されます。レビュアーは何がコピーされ何が貼り付けられたかを正確に見られます — クリップボードイベントが発生したという事実だけではありません。

連番付けと検索

スクリーンショットは連番で番号付けされ(0001、0002、…)、タイムスタンプとイベントメタデータとともに保存されます。オペレーターコンソールはそれらをトリガーしたイベントとともにリスト表示するので、レビュアーは関心のある瞬間に直接ジャンプできます — 例えばセッション内のすべてのクリップボードトリガーのキャプチャ、または特定のURL周辺のナビゲーションペア。

イベント記録 — クリックを超えて何が記録されるか

スクリーンショットと動画を超えて、構造化されたイベント記録がユーザーの操作履歴を完全なコンテキストとともに捉えます。各イベントはタイプ、タイムスタンプ、関連するスクリーンショット参照(該当する場合)、関連するペイロードを持ちます。これが、記録を単に視覚的に眺められるだけでなく、検索可能で分析的に有用にするものです。

01

座標とターゲット要素を伴うマウスクリック

各クリックイベントはx/y座標とカーソル下のDOM要素(タグ、クラス、ID、利用可能な場合はテキスト内容)を記録します。レビュアーはセッション記録内で特定のボタンやリンクへのクリックを検索でき、それを探すためにスクリーンショットを眺める必要はありません。

02

スクロールイベント(throttled)

スクロール位置の変化はログスパムを避けるためにthrottleして記録されます。ユーザーが長いページのどこを見ていたかを再構成するのに十分な解像度ですが、1分あたり数千の不要なスクロールイベントを生むことはありません。

03

SPAルート変更を含むナビゲーションイベント

すべてのナビゲーション — フルページ読み込み、シングルページアプリケーションのpushState変更、プログラム的な位置変更 — がソースURL、ターゲットURL、トリガー(リンククリック、手動、プログラム的)、完了時間とともにログされます。従来のロギングが取りこぼすSPAナビゲーションはZeroLeakのURLポーリング層によって捉えられます。

04

フィールド参照を伴うフォーム送信イベント

ユーザーがフォームを送信すると、イベント記録はフォームのaction URL、メソッド、フィールド名を捉えます。実際のフィールド値はキーボード入力記録を通じて捉えられ(そのため入力履歴が保持されます)、フォームイベントでは繰り返されません。

05

アイドルとアクティブの遷移

セッションは入力層でユーザーのアクティビティを監視します。アクティブとアイドル状態の間の遷移がタイムスタンプとともに記録されるので、レビュアーは注意の期間と不活動を見られます — コンプライアンスレビューと時間ベースの監査の問いに役立ちます。

06

セッション終了時のセッションレベルメタデータ

セッション終了時に要約メタデータが記録されます:総時間、アイドル・アクティブの内訳、各タイプの総イベント数、生成されたスクリーンショット、動画ファイル参照、終了理由(タイムアウト、手動終了、エラー)。コーディネーターのWebhookが構成されている場合、この要約はそれにもトリガーされます。

セッション記録が価値を発揮する場所

コンプライアンス監査と規制レビュー

特定のセッションで特定のユーザーが何をしたかを問う規制当局 — 患者記録アクセスのHIPAAレビュー、金融投資デスクのコンプライアンス、政府のデータ処理監査。イベントトリガーのキャプチャは、レビュアーが素早くナビゲートできるセッションごとに短く有益な証跡を生みます。

インサイダー脅威の調査

漏洩やポリシー違反が疑われるとき、調査者はユーザーが正確に何をしたかを知らねばなりません — いつだけではなく。マウスマーク付きの連番スクリーンショット、単語バッファされたキーボード入力、完全なクリップボード内容により、セッションは何時間もの動画を見ずに詳細に再生可能になります。

請負業者およびサードパーティのアクセス監査

お客様の環境に閲覧権限のみを与えられた外部ユーザー。セッションごとの完全な記録 — ユーザーを特定する可視ウォーターマークとともに — が、アクセスウィンドウの間に見たすべてと行ったすべての操作についての説明責任を提供します。

運用インシデント分析

SCADAや運用コンソールで予期しないイベントが起きた後、記録はオペレーターが直前の瞬間に正確に何を見て、どの制御をクリックしたかを示します。ナビゲーションの前後のペアは、連鎖的なエラーの診断をはるかに速くします。

よくある質問

典型的なセッションはどれくらいのストレージを消費しますか?
イベントトリガーのスクリーンショットは重要な瞬間にのみトリガーされるため、セッションごとに小さな索引を生みます — アクティブセッションごとに通常は数千ではなく数十のスクリーンショット。継続的な動画ストリームはフレームレートと解像度で構成可能です。デフォルトの10 fpsとセグメント圧縮により、何時間ものセッション動画も管理可能なファイルサイズに収まります。イベント記録はテキストでわずかなオーバーヘッドしかありません。総ストレージはセッション数ではなくアクティブなユーザー時間でスケールします。
ユーザーは記録されていることを知りますか?
これは保護対象サービスごとのポリシー判断です。一部のコンプライアンス体制はセッション開始時の明示的なユーザー通知を義務付けます。他はインサイダー脅威の範囲のために静かに記録します。いずれのモードもサポートされます。可視ウォーターマーク(フォレンジックウォーターマークも有効な場合)は、両者を組み合わせる構成において記録通知としても二重に機能します。
セッションが突然終了した場合、記録はどうなりますか?
適切なシャットダウンは最終状態を捉え、動画セグメントをクリーンに閉じます。予期しない終了(プロセスクラッシュ、コンテナkill)では、FFmpegのセグメントベースの記録が回復可能なセグメントを残します — せいぜい最後のセグメントが失われるだけで、セッション全体ではありません。イベント記録と以前のスクリーンショットはこうした終了を生き延びます。
レビュアーは記録されたセッションをどうナビゲートしますか?
オペレーターコンソールはセッションのイベントを、トリガーしたイベントタイプ、タイムスタンプ、(利用可能な場合)関連するスクリーンショットの小さなプレビューとともに時系列順にリスト表示します。レビュアーは任意のイベントに直接ジャンプできます — 「すべてのクリップボード操作を表示」「ユーザーをダッシュボードから離れさせたナビゲーションを表示」「フォーム送信を表示」 — 動画を眺めることなく。
これはウォーターマークや分離とどう組み合わさりますか?
ブラウザコンテキスト分離は各セッションに自身のブラウザ環境を与え、ナビゲーション境界を強制します。フォレンジックウォーターマークは各フレームでユーザーを特定します。セッション記録は彼らが何をしたかを捉えます。3つは補完的な層です — 分離が範囲を定義し、ウォーターマークが中にいるのが誰かを特定し、記録が中で何をしたかを捉えます。
保護対象アプリケーションは記録を無効化または干渉できますか?
いいえ。記録サブシステムは保護対象アプリケーションの実行時の外で動作します — アプリケーションのDOMやJavaScriptではなく、ZeroLeakが管理するレンダリングと入力の層で。アプリケーションには、スクリーンショットをブロックしたり、キーボード入力を記録から抑制したり、動画を一時停止したりするAPIはありません。記録はアプリケーションに求められるのではなく、ポリシーによって強制されます。

イベントトリガーの記録をライブデモでご覧ください

セッションを開き、いくつかのリンクをクリックし、いくつかのフォームに入力し、いくつかのコンテンツをコピーします。そして結果として生じるスクリーンショットの索引、キーボード記録、動画セグメントをお見せします — そしてレビュアーがそれらからセッションをどう再構成するかも。