本文へ移動
Operations

隔離と管理機能/ Quarantine & Ops

検査結果を「見えなくする」だけでなく、感染ファイルをどう保管し、必要なときにどう扱うか。そして、うまく検査できなかったものをどう拾い直すか。定期処理と管理者向けの機能をまとめて説明します。

01

状態による可視性制御Visibility

検査結果はファイルの状態として記録されます。この状態を使い、データベースのアクセス制御(RLS=行単位で「誰がどの行を読めるか」を DB 自身が強制する仕組み)で、検査済み(clean)以外は一般利用者から見えないようにしています。

状態一般利用者管理者DL・プレビュー・共有・Drive 同期
検査済み(clean)見える見えるできる
未検査・検査中見えない見えるできない
感染(infected)見えない隔離画面で見えるできない
失敗(failed)見えない見えるできない(再スキャンを促す)
検証不能(skipped)見えない(本人のみ状態確認可)見えるできない(再アップロードを案内)

アクセス制御を DB 層で強制しているのが要点です。仮にアプリ側の表示制御をすり抜けても、データベースが検査済み以外の行を返さないため、未検査・感染ファイルが利用者に露出しません。

(画面の画像は掲載していません)
図 · アップロード直後、検査が終わるまでの利用者側の表示
02

隔離処理と隔離台帳Quarantine

感染が確定すると、matsuba-scanner はファイルを隔離バケットへ移し、同時に隔離台帳(レジストリ)へ記録を残します。台帳には、Box 名・ファイル名・脅威名・検出日時・アップロード者などを、その時点のスナップショットとして保存します。

図 06 · 隔離の取り扱い — 記録して保管し、取り出し/恒久削除で終える
感染検出①②で隔離へ隔離バケット + 隔離台帳ファイルを退避しBox 名・脅威名等をスナップショット記録取り出し(調査用)専用 SA・短時間だけ有効な署名付き URL恒久削除二重確認 → 物理削除・台帳から削除調査破棄

感染したファイルの扱いは、そのファイルに過去の検査済み版があるかで変わります。

ケース何が起きるか利用者に見える「現在版」
初回アップロードが感染
clean 版が無い
元のファイルの行を即時に撤去し、名前を解放する(記録は台帳が保持)その名前のファイルは残らない
差し替えで感染
clean 版がある
感染した新しい版だけを隔離扱いにする元の検査済み版のまま(利用は継続できる)

差し替えの失敗で壊れた版が残っても、正常な旧版があれば通常どおり使える、という考え方です。台帳に記録を残すことで、行を撤去したケースでも「いつ・何が・どの Box で」検出されたかを後から追跡できます。

03

取り出しと恒久削除Extract & Delete

隔離したファイルに対して管理者が行える操作は 2 つです。どちらも重大操作として、監査記録と管理者全員へのメール通知を伴います。

取り出し(調査用)

マルウェア解析などのために、隔離ファイルを安全に取り出す操作です。通常のダウンロード経路とは経路を分離しています。隔離バケットを読めるのは専用のサービスアカウント(隔離読取専用 SA)だけで、通常はどのサービスにも紐付けていません。取り出しのときだけ、アプリ本体がこのアカウントを一時的に借りて(impersonation)、短時間だけ有効な署名付き URL を発行します。

  • 理由の入力(10 文字以上)と、取り扱いリスクの誓約チェックを必須にしています。
  • 取り出したファイルはブラウザで開かず、必ずダウンロードされます(マルウェアがブラウザ内で実行されるのを防ぐため)。
  • 2 人が同時に取り出そうとした場合は、1 件だけを通します。
  • 誰が・いつ・なぜ取り出したかを監査に記録し、管理者全員にメールで知らせます。

恒久削除

隔離ファイルを完全に消す操作です。取り消せないため、二重の確認(理由の入力+確認欄に「削除」と入力)を求めます。削除は、削除だけしかできない権限(読み取りは持たない)で実行し、ストレージから物理削除するとともに台帳の行も消します。削除後も、監査記録にファイル名・脅威名を残すことで追跡できます。

90 日経過の扱い: 90 日以上隔離されたファイルは「削除候補」として管理画面で目立たせますが、自動では削除しません(一括の自動削除は事故が大きいため、人の判断を挟みます)。
(画面の画像は掲載していません)
図 · 隔離ファイルの取り出しダイアログ
(画面の画像は掲載していません)
図 · 恒久削除の二重確認ダイアログ
04

再スキャンと滞留・失敗の検知Rescan & Detection

スキャンが何らかの理由で完了しないことがあります。それを検知し、拾い直す仕組みです。

  • 滞留の検知: 5 分以上「検査中」のまま止まっているものを検知します。5 分間隔のジョブが件数を集計し、一定件数を超えたら管理者へ警告します。
  • 失敗: タイムアウトや接続エラーで検査できなかった場合、すぐには「失敗」にせず「検査中」のまま残し、3 回連続で失敗して初めて「失敗」に確定させます(「失敗=復旧不能」と誤解させないため)。
  • 再スキャン: 滞留・失敗したものを、個別または一括(最大 100 件)で再検査に回せます。状態を「未検査」に戻し、専用の再スキャン用イベント経由で matsuba-scanner に再投入します。
滞留・失敗・シグネチャの状態は、次の管理画面「スキャンキュー」で一覧できます。通常運用では、これらがすべて 0 件・最新であることが「健康な状態」です。
05

管理画面Admin Screens

管理者向けに 2 つの画面を用意しています。どちらもシステム管理者だけがアクセスでき、それ以外の利用者には存在ごと見えません(アクセスすると 404)。

スキャンキュー

スキャンの稼働状況を運用する画面です。滞留・失敗・シグネチャ・EICAR の 4 つの健康指標カード、シグネチャ DB の詳細、検査サービスの処理件数やレイテンシ、滞留一覧・失敗一覧、そして検証不能ファイルの一覧を表示します。30 秒ごとに自動更新され、異常が出るとカードの色が変わります。

(画面の画像は掲載していません)
図 · スキャンキュー ― 滞留・失敗・シグネチャ・EICAR の状態を一望

隔離ファイル

隔離台帳を一覧する画面です。脅威名・検出日時・所属 Box・アップロード者・サイズを表示し、90 日経過を強調します。各行から詳細・取り出し・恒久削除を行えます。

(画面の画像は掲載していません)
図 · 隔離ファイル ― 検出されたファイルの一覧と操作