レッスン 5-4
測れない
読み終えたら測ってはいけない
この頁の流れ
MTTR (平均修復時間) と、
出典を確かめた日 2026年10月27日
なぜ通るのか
ある
数は、
MTTR とは
MTTR は、
| 名前 | 意味 | 式 |
|---|---|---|
| MTTR | 故障してから | 修復に |
| MTBF | 直ってから | 動いていた |
| 稼働率 | 動いていた | MTBF ÷ (MTBF + MTTR) |
たとえば、
セキュリティでの「気づくまで」と「直すまで」
セキュリティでは、
| 数 | 始まり | 終わり |
|---|---|---|
| 気づくまでの | 侵入や | 自分たちが |
| 対応の時間 | 気づいた時刻 | 封じ込めた時刻 |
| 穴を | 穴を | 直す版を |
| 変更の | 出した | 元に |
最後の
測る数の 4 つの種類
NIST SP 800-55 Vol. 1 (2024年12月) は、
| 種類 | 何を見るか | 例 |
|---|---|---|
| 実施の数 | 決めた | 多要素認証が |
| 効果の数 | 対策が | 自分たちで |
| 効率の数 | どれだけ | 重大な |
| 影響の数 | 事業の | 対応に |
同じ
測ってはいけない数
数を
| 目標にした数 | 起きること | 代わりに |
|---|---|---|
| 見つけた | 軽い | 外から |
| 処理した | 調べずに閉じる | 自分たちで |
| 研修の受講率 | 流し見で 100% になる | 訓練の |
| 直すまでの平均 | 直らない | 中央値、 |
件数を
脆いコードと直したコード
穴の
直った物だけの平均か、直っていない物も入れるか
Python
def mttr(items):
days = [i["fixed"] - i["found"] for i in items
if i["fixed"] is not None]
return sum(days) / len(days)Python
from statistics import median
def fix_report(items, today, due_days):
open_ = [i for i in items if i["fixed"] is None]
ages = [(today if i["fixed"] is None else i["fixed"]) - i["found"]
for i in items]
overdue = [i for i in open_ if today - i["found"] > due_days]
return {"median": median(ages), "max": max(ages),
"overdue": len(overdue)}脆い方は、
件数を足すか、決めるための数を分けるか
Python
def score(team):
return team["findings"] + team["alerts_closed"]Python
def report(team):
n = team["incidents"]
return {
"overdue_high_external": team["overdue_high_external"],
"found_by_us": team["found_internally"] / n if n else None,
}脆い方は、
ログでの見え方と検知
同じ
記録
直すまでの平均 6.0 日記録
直すまでの中央値 6 日
直すまでの最大 160 日
期限を過ぎた件数 1 件 (重大、外から届く)脆い
| 見る物 | 何の兆しか |
|---|---|
| 平均と | 一部の |
| 期限を | 直す |
| 外の | 検知の |
| 数の | 良く |
直し方と、直ったことの確かめ方
自分の
- 手で
台帳を 作る。 直った 穴を 数件と、 直っていない 重大な 穴を 1 件、 長い 日数で入れる - 脆い
mttrに渡し、 直っていない 穴が 結果に 何の 影響も 与えない ことを 確かめる - 直した
fix_reportに渡し、 最大と 期限の 超過の 数に、 直っていない 穴が 出る ことを 確かめる - 測る
数ごとに、 下の 定義の 1 枚を 書く。 始まりと 終わりの 時刻、 式、 データの 出どころ、 使う 判断を埋める - 下の
試験を 足し、 直す前の コードに 戻すと 試験が 落ちる ことも 確かめる - 月の
報告は、 決めるのに 使う 数を 先に、 様子を 見る 件数を 後ろに並べる
Python
def ledger():
items = [{"found": 0, "fixed": 6} for _ in range(20)]
items.append({"found": 40, "fixed": None})
return items
def test_open_item_shows_in_max_and_overdue():
r = fix_report(ledger(), today=200, due_days=30)
assert r["max"] == 160
assert r["overdue"] == 1
def test_no_incidents_gives_no_ratio():
team = {"incidents": 0, "found_internally": 0,
"overdue_high_external": 0}
assert report(team)["found_by_us"] is None1 つ目の
測る数の定義を 1 枚にまとめる
記録
名前 重大な穴を直すまでの日数
始まり 穴を知った日 (作り手の公表、届出、自社の検査の早い方)
終わり 直す版を当て、版の番号を読み直して確かめた日
式 中央値と最大、直っていない物は今日までの日数で入れる
出どころ 穴の台帳と、資産の一覧
使う判断 人と時間を、外から届く所の期限切れへ回すか
期限 重大で外から届く物は 14 日
見るだけ 見つけた件数 (目標にしない)期限の
関わる事例
測っていなかった
同じ
Marriott が
英国会計検査院によると、
First American では、
確認クイズ
1 問目
「直すまでの
答えだと思う選択肢を押すと、その場で正誤と理由が開きます。
答え ア
直った
2 問目
チームの
答えだと思う選択肢を押すと、その場で正誤と理由が開きます。
答え ウ
アと
説明課題
次の
- 測ってはいけない
数と、 決めるのに 使う 数の 例を 1 つずつ 挙げ、 なぜそう 分けるか
模範解答を見る
見つけた
一次資料
どれも
- SP 800-55 Vol. 1 Measurement Guide for Information Security, Identifying and Selecting Measures (NIST、
英語、 。2024年12月) 実施、 効果、 効率、 影響の 4 つの 種類、 文脈なしの 報告が 意図しない 結果を 招きうること - DORA's software delivery performance metrics (DORA、英語)。
変更の リードタイム、 デプロイの 頻度、 失敗した 変更から 戻すまでの 時間などの指標 - Known Exploited Vulnerabilities Catalog (CISA、英語)。
悪用が 確かめられた 脆弱性ごとの、 追加の 日と 直す期日 - The Equifax Data Breach (米下院 監視・
政府改革委員会、 。英語、 2018年12月) 145 日の 放置、 76 日の 侵入、 300 を 超える 切れた証明書 - Marriott International Inc, Penalty Notice (ICO、
英語、 。2020年10月30日) 2014年からの 侵入と、 見張りの範囲 - Investigation, WannaCry cyber attack and the NHS (英国会計検査院、
英語、 。2017年10月) 2017年3月と 4月の 警告と、 従ったかを 確かめる 仕組みが 無かったこと - In the Matter of First American Financial Corporation (米証券取引委員会、
英語、 。2021年6月14日) 深刻度の 誤った 記録と、 直す期限
次へ
これで
