銀行エンジニアリング 14:監視ルールとアラート(誤検知とのつきあい方)
ルールを厳しくすれば見逃しは減りますが、確認が必要なアラートが増えます。MiniBankの4つのルールと、アラートが重複しない仕組み、証拠の残し方を学びます。
v8以降に実装した台帳・記帳エンジンなどを実際に動かし、正常時と異常時の両方から銀行システムの構造を学ぶ。
Prerequisite: BANKING SYSTEMLEARNING GOALS
このページで学ぶこと
- 4つの監視ルールと閾値
- アラートの重複排除
- 見逃しと誤検知のトレードオフ
PLAIN LANGUAGE
まず、ここだけつかむ
4つのルールが、高頻度・新規口座・入金直後の転送・普段と違う金額を検知します。
閾値はデータとして保存され、アラートに根拠の取引が残ります。
同じ兆候は何度検査しても1件のアラートにしかなりません。
DIFFICULT PARTS, STEP BY STEP
難しいポイントを、順番にほどく
専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。
Threshold(閾値)
検知する境目の値です。
何を兆候とみなすかを明確にするためです。
aml.rules.params。
Dedupe Key
同じ兆候を1件にまとめる識別子です。
検査のたびにアラートが増えないようにするためです。
ルール+口座+時間枠、またはルール+仕訳。
False Positive
問題のない取引を検知してしまうことです。
避けられない前提で手順を設計するためです。
判断 FALSE_POSITIVE でケースを閉じます。
Level 2 銀行業務:MiniBankの監視ルール
閾値はコードではなく aml.rules の params に保存されています。どの値で検知したかがアラートと一緒に残るため、後から「なぜ検知されたか」を説明できます。
| ルール | 内容 | 重要度 | 架空の例 |
|---|---|---|---|
| HIGH_FREQUENCY_OUTFLOW | 60分以内に5回以上の出金・送金 | MEDIUM | 短時間に少額の他行送金を5回 |
| NEW_ACCOUNT_LARGE_OUTFLOW | 開設7日以内の口座から30万円以上 | HIGH | 口座開設当日に40万円を他行へ送金 |
| RAPID_PASS_THROUGH | 10万円以上の入金から24時間以内にその90%以上を出金 | HIGH | 他行から50万円入金、直後に48万円を送金 |
| UNUSUAL_AMOUNT | 過去30日の平均出金額の5倍以上(過去3件以上) | MEDIUM | 普段2万円の送金が続く口座で15万円 |
Level 3 システム:MiniBankでの実装
- aml.scan(期間) が全ルールを台帳上の取引に適用し、新しいアラートの件数を返す。実行記録は aml.scan_runs に残る
- アラートには dedupe_key(ルール+口座+時間枠、またはルール+仕訳)が付き、同じ兆候を何度Scanしても1件にしかならない
- アラートの evidence には、検知の根拠になった取引(仕訳ID・金額・日時)が保存される
異常時:大量のアラートが発生した
| 段階 | 内容 |
|---|---|
| 症状 | Scan後、未対応アラートが急増した |
| 調査 | ルール別・口座別に件数を見る。1つの口座に同じルールが集中していないか、閾値の変更がなかったか |
| 考えられる原因 | 閾値の設定ミス、給与日など正当な取引が集中する日、実際の不審な動き |
| 対応 | スコアの高いものからケース化する。1つのケースは1つの口座にまとまるので、同じ口座の複数アラートを一度に調べられる |
| 再発防止 | 閾値の変更は記録を残して行い、誤検知の割合を見て調整する(MiniBankには閾値変更の画面や自動調整はない) |
Level 4 アーキテクチャ:見逃しと誤検知
検知ルールは必ず「見逃し(False Negative)」と「誤検知(False Positive)」のどちらかを抱えます。誤検知ゼロを目指すと見逃しが増えるため、銀行は誤検知を前提に、調査の手順と記録を整えることで全体の品質を保ちます。
どこを確認すればよいか
- 管理画面「AML・不正検知」→ 監視ルールの閾値、アラートの「根拠」
CHECK YOUR UNDERSTANDING
3問で理解チェック
答えを頭の中で考えてから、各項目を開いて確認してください。
Q1開設当日に40万円を送金すると、どのルールに当たりますか?
NEW_ACCOUNT_LARGE_OUTFLOW です。
Q2同じ期間を2回検査するとアラートは2件になりますか?
なりません。
Q3閾値を下げると何が起きやすくなりますか?
誤検知(確認が必要なアラート)が増えます。
完全に暗記する必要はありません。大切な考え方を説明できそうなら押してください。
SOURCE TRAIL
根拠と関連教材
CURRENT IMPLEMENTATIONは確認したrepository内の実装です。HISTORICAL IMPLEMENTATIONは導入・修正の履歴で、後続migrationによる再定義があり得ます。RELATED LESSONは教材への案内で、実装の一次Sourceではありません。ASSUMPTIONは仮定、UNKNOWNは未確認を表します。
確認基点: d02eae8914f39cbf06bfe422dc39c71886f82b3e / 2026-09-11。稼働環境への適用確認: UNKNOWN。パス実在の自動検査と、記述した技術的事実の確認は別です。
Implementation Status: IMPLEMENTED IN MINIBANK(この教材が扱うコードの範囲)
- RELATED LESSON/docs/be-fraud-aml-basicsFraudとAMLの全体像
- CURRENT IMPLEMENTATION
supabase/migrations/20260924130000_v11_aml_simulator.sqlaml.scan / aml.scoreルールによる検知とアラートの重複排除 - CURRENT IMPLEMENTATION
scripts/banking/v11-aml.test.mjs4ルールの検知、アラート≠判断、ケースの手順・二次確認・上申のDBテスト