一覧OP-15-3 · 封じ込め・復旧・報告

証拠に基づくインシデント報告

隔離と復旧の証拠表を使い、報告案の主張を見直します。改善課題も、設定を変えた段階と試験に合格した段階を分け、担当者と確認条件を残す方法を学びます。

説明

報告では、観測した事実、未確認の事項、対応の判断を分けます。証拠に対応しない強い断定は、読み手に実際より広い範囲を確認済みだと思わせてしまいます。

隔離と復旧の証拠表を使い、報告案の主張を見直します。改善課題も、設定を変えた段階と試験に合格した段階を分け、担当者と確認条件を残す方法を学びます。

1報告案の主張を読む

kindはこの演習で根拠の有無を点検した結果です。ラベルだけでなく元の証拠も確認します。

from oplab import * db=connect(15) show(db, 'SELECT報告案の主張を読む * FROM claims ORDER BY id')

r2の「持出しなし」には証拠IDがありません。通信の未収集などがあるなら、断定する範囲を狭める必要があります。

2隔離の根拠へ戻る

報告案が参照するp2とp3を直接開きます。

show(db, 'SELECT隔離の根拠へ戻る * FROM probes WHERE id IN ("p2","p3") ORDER BY id')

確認できたのは時刻20の業務経路拒否と管理経路許可です。他端末や他時点まで隔離済みと広げないようにします。

3復旧の根拠へ戻る

報告案のc1とc2を確認します。

show(db, 'SELECT復旧の根拠へ戻る * FROM checks WHERE id IN ("c1","c2") ORDER BY id')

b1の起動設定検査と業務クエリーが成功しています。全ての業務や全ファイルの検査が終わったという意味ではありません。

4根拠のない断定を抽出する

証拠がない、または点検で未裏付けとなった主張を出します。

show(db, 'SELECT根拠のない断定を抽出する id,statement FROM claims WHERE evidence IS NULL OR kind="unsupported"')

r2は「取得済み資料では送信内容を確認できていない」など、実際の観測範囲に沿った記述へ直す対象です。

5改善の実施と試験を確認する

change_doneとtest_resultを別の完了条件として読みます。

show(db, 'SELECT改善の実施と試験を確認する * FROM actions ORDER BY id')

a2は設定変更済みでも未試験です。a3は変更自体が未完了で、担当者と期限を確認できます。

6未完了と期限超過を一覧する

時刻46時点で、変更と試験の両方がそろっていない課題を出します。

show(db, 'SELECT未完了と期限超過を一覧する id,owner,change_done,test_result,deadline,deadline<46 AS overdue FROM actions WHERE change_done<>1 OR test_result<>"pass" ORDER BY id')

a2は試験待ち、a3は期限超過です。「対策を実施した」と「意図した効果を確認した」を分けて管理します。

まとめ

a2は試験待ち、a3は期限超過です。「対策を実施した」と「意図した効果を確認した」を分けて管理します。

表示された証拠IDと検索条件を残すと、調査結果を元の記録までたどれます。

操作履歴と解説を振り返れます。

Python 3.15 / SQLite・固定の調査記録

1
from oplab import * db=connect(15) show(db, 'SELECT * FROM claims ORDER BY id')
id | statement | evidence | kind
r1 | ws7 isolated | p2,p3 | observed
r2 | no data was taken | NULL | unsupported
r3 | backup b1 is usable | c1,c2 | observed
2
show(db, 'SELECT * FROM probes WHERE id IN ("p2","p3") ORDER BY id')
id | t | host | path | result
p2 | 20 | ws7 | business | blocked
p3 | 20 | ws7 | management | allowed
3
show(db, 'SELECT * FROM checks WHERE id IN ("c1","c2") ORDER BY id')
id | backup | check_name | result
c1 | b1 | startup paths | clean
c2 | b1 | business query | ok
4
show(db, 'SELECT id,statement FROM claims WHERE evidence IS NULL OR kind="unsupported"')
id | statement
r2 | no data was taken
5
show(db, 'SELECT * FROM actions ORDER BY id')
id | owner | change_done | test_result | deadline
a1 | endpoint-team | 1 | pass | 50
a2 | network-team | 1 | not_run | 50
a3 | identity-team | 0 | not_run | 45
6
show(db, 'SELECT id,owner,change_done,test_result,deadline,deadline<46 AS overdue FROM actions WHERE change_done<>1 OR test_result<>"pass" ORDER BY id')
id | owner | change_done | test_result | deadline | overdue
a2 | network-team | 1 | not_run | 50 | 0
a3 | identity-team | 0 | not_run | 45 | 1

演習完了