
9 MITRE ATT&CKにマッピングされたKQL検出ルール(Microsoft Sentinel + Defender XDRのライブ環境:コントロールプレーン、エンドポイント、アイデンティティ)、PRゲート式Detection-as-Codeパイプライン(GitHub Actions、OIDC)、SOARプレイブック、およびSOC 2コントロールマッピング。
私が運用しているライブなMicrosoft SentinelおよびDefender XDR環境での検出エンジニアリング。9つのカスタム分析ルールが3つのプレーンにまたがり、それぞれがMITRE ATT&CKにマッピングされ、エンドツーエンドで実証されています。制御されたアクションがルールをトリガーし、ルールがインシデントを生成し、インシデントが調査および文書化されます。7つはAzure コントロールプレーン(AzureActivity)を監視し、マルチステージ相関とARGバックドコンテンツルールを含みます。1つはエンドポイント(Defender for Endpoint)を監視し、Defender Vulnerability Managementがハンティングライブラリを提供します。1つはID(Entra ID SigninLogs)を監視します。すべて同じPRゲートパイプラインによってデプロイされます。

私がエンドツーエンドで運用するライブなシングルテナント環境。すべてのスクリーンショットでは、テナントID、サブスクリプションID、および個人を特定できる情報は編集されています。
数値は追跡可能です。カバレッジはATT&CKレイヤーへ、検証はRESULTS.mdへ。意図的に誤検知率バッジはありません。シングルテナント環境では意味のあるFP率を生成できないため、リポジトリは架空のパーセンテージではなく、実際の良性バッチでの測定された誤発火を報告しています(metrics.yamlに完全に記載)。
フォーク上で検出単体テストを実行、Azureは不要です。 各ルールの実際のKQLは、ローカルのKustoエミュレータ内の合成フィクスチャに対して実行されるため、テナントなしで検出ロジックを検証できます。
git clone https://github.com/ibondarenko1/azure-sentinel-detection-engineering
cd azure-sentinel-detection-engineering
docker run -d --rm -p 8080:8080 -e ACCEPT_EULA=Y mcr.microsoft.com/azuredataexplorer/kustainer-linux:latest
pip install pyyaml
python tests/run-detection-tests.py
これはCIがすべてのプルリクエストで実行する正確なチェックです(detection-tests)。各ルールが悪意のあるフィクスチャで発火し、良性のフィクスチャでは沈黙することをアサートします。validation/の実際のハーネスはさらに進んで、テナントで実際の良性および攻撃バッチを駆動し、真陽性と誤発火を測定しますが、これには独自のAzureサブスクリプションとaz loginが必要です(validation/READMEを参照)。そのため「ローカル」ではありません。デプロイメントパイプライン:docs/03。ルールの貢献:CONTRIBUTING。
検出は、それが発火することを示せて初めて信頼性があります。このリポジトリは、Azureコントロールプレーン、エンドポイント、IDの3つのプレーンにわたってそのループを閉じます。ルールロジック、制御されたトリガー、生成されたインシデント、調査、MITREマッピング。単一イベントルールを超えて、マルチステージ相関(grant then deploy)と、Azure Resource Graphの姿勢を変更イベントに結合するコンテンツ認識ルールを備えています。合成サンプルではなく、実際のテレメトリに対するSentinel分析ルール、KQL、インシデント対応です。
ルールはポータルでクリックして作成されるわけではありません。これらはバージョン管理されたYAMLであり、PRゲートパイプラインでデプロイされます。検出を編集するにはプルリクエストを開きます。CIが検証し、レビュアーが承認し、mainへのマージがOIDC(保存されたシークレットなし)を使用して、ルールGUID(API 2025-09-01)によって冪等にSentinelにデプロイされます。
flowchart LR
D[Edit rule YAML] --> PR[Pull request] --> V[CI validate] -->|review| M[Merge main] --> CD[OIDC deploy] --> S[Sentinel sc200-ws]
detections/rules/*.yaml · パイプライン:.github/workflows/deploy-detections.yml · デプロイヤー/バリデーター:cicd/ · 詳細:docs/03-cicd.md
実際の変更がこれを通過しました:PR #1 はDET-001のしきい値(10から8に)を厳格化しました。CIが検証し、マージが実際のsc200-wsルールにデプロイされました。ルールがレビューされたPRによってgitから自動的にデプロイされるこのステップが、検出エンジニアとコースを修了したアナリストを区別します。
flowchart LR
subgraph Sources
A[Microsoft Defender XDR<br/>Email · Endpoint]
B[Azure subscription<br/>Activity Log]
C[Entra ID<br/>sign-ins]
end
A --> W[Log Analytics workspace<br/>sc200-ws]
B --> W
C --> W
W --> R[9 scheduled<br/>analytics rules]
R --> I[Incidents]
I --> V[Investigation<br/>+ MITRE mapping]

| ID | 検出 | 重大度 | MITRE戦術 | テクニック |
|---|---|---|---|---|
| DET-001 | 失敗したアクティビティログ操作の急増 | Medium | Discovery | T1087 Account Discovery |
| DET-002 | ネットワークセキュリティグループルールの変更 | Medium | Defense Evasion | T1562 Impair Defenses |
| DET-003 | RBACロール割り当ての変更 | Medium | Privilege Escalation / Persistence | T1098 Account Manipulation |
| DET-004 | 大量リソース削除 | High | Impact | T1485 Data Destruction |
| DET-005 | 非所有者による不審なリソースデプロイメント | Medium | Persistence | T1098 Account Manipulation |
| DET-006 | LSASS資格情報アクセス(エンドポイント) | High | Credential Access | T1003.001 LSASS Memory |
| DET-007 | 特権付与後のデプロイメント(相関) | High | Privilege Escalation / Persistence | T1098 Account Manipulation |
| DET-008 | 連続失敗後の成功したサインイン(ID) | Medium | Credential Access / Initial Access | T1110 Brute Force, T1078 Valid Accounts |
| DET-009 | NSGルール変更によりAnyからのインバウンドが露出(ARGコンテンツ) | High | Defense Evasion | T1562.007 Disable/Modify Cloud Firewall |

各検出は、制御された自己元に戻す管理アクションでトリガーされ、実際のインシデントを生成しました。
