Microsoft Sentinel data lakeのコスト制限とは?KQLとNotebookの予算超過を防ぐ運用設計

Microsoft Sentinel data lakeのコスト管理で最も重要な変化は、KQLクエリやNotebookの利用がしきい値を超えたときに、通知するだけでなく新しい実行をブロックできるようになった点です。2026年4月16日時点の注目アップデートとして、MicrosoftはMicrosoft Sentinel data lakeのKQL queries and notebooksに対するcost limits、正確にはthreshold enforcementの追加を発表しました。従来の「気づくためのアラート」から、「止めるためのガードレール」へ進化したと考えると分かりやすいでしょう。(TECHCOMMUNITY.MICROSOFT.COM)

特にSentinel adminsやFinOps-aware security teamsにとって、この更新は単なる節約機能ではありません。大規模な脅威ハンティング、長期ログ調査、Jupyter Notebookによる高度分析を進めながら、予算超過・暴走クエリ・新人アナリストの誤操作を抑えるためのdata-lake governance設計そのものに関わる変更です。

目次

Microsoft Sentinel data lakeのhard cost limitsとは

Microsoft Sentinel data lakeのhard cost limitsとは、データレイクに対するKQLクエリやNotebook実行について、設定したしきい値を超えたあとに新規のクエリ、ジョブ、Notebookセッションをブロックする運用上の仕組みを指します。

Microsoftの表現では「threshold enforcement」です。これまでのConfigure Policiesでは、データレイク使用量がしきい値に近づいたときにメール通知を受け取ることはできました。しかし、通知後も処理は継続できたため、重いクエリや頻繁なNotebook実行による予期しないコスト増を完全には防げませんでした。今回の更新では、Enforcementを有効化すると、しきい値超過後の新規実行が「Limit exceeded」エラーで失敗します。(TECHCOMMUNITY.MICROSOFT.COM)

観点従来のしきい値通知今回のEnforcement付きcost limits
主な目的使用量の増加に気づくしきい値超過後の新規利用を止める
予算超過リスク通知を見逃すと継続利用される新規クエリやジョブをブロックできる
アナリストへの影響基本的に実行は継続超過後はLimit exceededエラーが表示される
運用上の意味監視・通知予算統制・ガバナンス
向いている用途使用量の可視化本番SOC、マルチチーム利用、FinOps管理

重要なのは、これは「Microsoft Sentinel全体の請求を完全に止める機能」ではないことです。対象はMicrosoft Sentinel data lakeの特定カテゴリにおけるKQLクエリやNotebook関連の利用です。Azure全体の予算管理、Log Analyticsの取り込み量管理、Microsoft SentinelのAnalytics tierの費用管理は、引き続きAzure Cost ManagementやSentinelの既存のコスト管理と組み合わせる必要があります。(Microsoft Learn)

対象になるのはData Lake QueryとAdvanced Data Insights

Enforcementの対象は、Microsoft Sentinel data lakeの次の2カテゴリです。

カテゴリ対象になる主な処理管理上のポイント
Data Lake QueryData lake explorerでの対話型KQLクエリ、スケジュールまたはアドホックのKQLジョブ履歴調査や大規模検索でデータスキャンが増えやすい
Advanced Data InsightsVS Code拡張機能経由のNotebook実行、バックグラウンドまたはスケジュールされたNotebookジョブSparkプール、機械学習、集計処理でコンピュート消費が増えやすい

Microsoftの発表では、対話型KQL、KQLジョブ、Microsoft Sentinel VS Code extensionから実行されるNotebookクエリ、スケジュール実行されるNotebookジョブに対して一貫した制御が適用されると説明されています。すでに実行中のクエリやジョブは途中で止められず、新しいクエリ、ジョブ、Notebookセッションがブロックされる点も押さえておきましょう。(TECHCOMMUNITY.MICROSOFT.COM)

この仕様は、SOCの現場ではかなり重要です。インシデント対応中に長時間ジョブが突然中断されるリスクは下がる一方で、しきい値超過後に追加調査を始めようとするとブロックされる可能性があります。つまり、コスト制限は「安全装置」ですが、設計を誤ると調査のボトルネックにもなります。

なぜdata-lake governanceが変わるのか

Microsoft Sentinel Data Lakeは、大量のセキュリティデータを長期間保持し、KQLやJupyter Notebookで分析できる基盤です。Microsoftのドキュメントでは、Data Lake tierは長期保存やPythonベースの高度分析に向いた層として説明され、保持期間は設定やデータ種別に依存しつつ最大12年まで扱える設計になっています。(Microsoft Learn)

この利点は、同時にガバナンス上の課題にもなります。長期データに対して広い期間で検索できるほど、誤って巨大な範囲をスキャンするリスクが高まるためです。Notebookでは、Sparkプールの選択やセッションの稼働時間によってコスト影響が変わります。VS CodeのNotebookにはSmall、Medium、Largeのランタイムプールがあり、Microsoftの説明では選択するプールがパフォーマンス、コスト、実行時間に影響します。(Microsoft Learn)

これまでのdata-lake governanceは、主に次のような管理に寄りがちでした。

  • 誰がデータにアクセスできるか
  • どのテーブルをAnalytics tierに置くか、Data Lake tierに置くか
  • どのデータをどれくらい保持するか
  • どのジョブをスケジュール実行するか

hard cost limitsの追加後は、ここにどの分析ワークロードに、どれだけの消費上限を認めるかという実行時ガバナンスが加わります。これはFinOpsとSOC運用の接点です。セキュリティチームだけで「必要だから使う」と判断するのではなく、使用量、調査優先度、予算、例外承認をセットで扱う必要があります。

Sentinel adminsが最初に決めるべき3つの設計項目

Enforcementを有効化する前に、いきなりしきい値を入力するのはおすすめできません。先に、次の3点を決めておくと運用が安定します。

しきい値は「月額予算」ではなくワークロード単位で考える

Microsoft Sentinel data lakeのコストは、Data Lake tierの各機能の使用量に基づいて発生します。Microsoftの課金ドキュメントでは、Data lake ingestion、data processing、data lake storage、Notebook関連のコンピュート利用など、複数の要素が説明されています。(Microsoft Learn)

そのため、しきい値は「Sentinel全体で月いくらまで」という大ざっぱな決め方ではなく、少なくとも次のように分けて考えるべきです。

管理対象しきい値設計の考え方
対話型KQL日常調査・脅威ハンティングで使うため、過去実績に少し余裕を乗せる
KQLジョブスケジュール実行があるため、ジョブ単位で所有者と目的を明確にする
Notebook実行実験・ML・集計で消費が膨らみやすいため、利用者とプール選択を管理する
緊急調査平常時とは別に、一時的な上限引き上げやEnforcement解除の承認手順を用意する

最初の運用では、過去30日程度の使用傾向を見て、通常運用のピークに一定の余裕を持たせる方法が現実的です。新規導入で実績がない場合は、いきなり厳しいブロックを入れるより、まず通知しきい値で利用パターンを観察し、その後にEnforcementを有効化する方が失敗しにくくなります。

アラート率は「気づくため」ではなく「止まる前に動くため」に設定する

Configure Policiesでは、total threshold valueに加えて、しきい値に対するalert percentageを設定できます。Microsoftのドキュメントでは、しきい値に対するメール通知と、しきい値超過後のEnforcementを設定できる流れが説明されています。(Microsoft Learn)

実務では、アラート率を単なる通知として扱わないことが大切です。例えば、70%到達でSentinel adminに通知、85%到達でジョブ所有者に確認、95%到達で緊急時以外のNotebookジョブを停止する、といった内部ルールに落とし込みます。

アラート段階推奨アクション
70%前後使用量の増加要因を確認する
85%前後大きなKQLジョブやNotebookジョブの実行予定を見直す
95%前後不要な探索・実験系ジョブを止め、緊急調査の余地を残す
100%超過Limit exceededの問い合わせ対応と、必要に応じた一時的な上限変更を判断する

数値は組織ごとに変えて構いません。大切なのは、アラートを受け取った人が「何を判断し、誰に連絡し、何を止めるか」まで決まっていることです。

例外対応を先に決める

Microsoftの発表では、侵害対応などで追加の余力が必要になった場合、しきい値の調整、Enforcementの一時無効化、ポリシー変更によってSOCの対応を止めない運用が示されています。(TECHCOMMUNITY.MICROSOFT.COM)

これは非常に現実的なポイントです。セキュリティ分析では、平常時に抑えるべきコストと、重大インシデント時に必要な調査コストが一致しません。たとえば、ランサムウェア調査で過去180日分の認証ログ、EDRログ、プロキシログを横断検索する場合、通常より大きなKQL処理が必要になることがあります。

例外対応では、次の項目を事前に決めておきましょう。

項目決めておく内容
承認者SOC manager、Security Administrator、FinOps担当など
解除条件重大インシデント、監査対応、法務調査など
解除範囲Data Lake Queryのみか、Advanced Data Insightsも含めるか
解除時間4時間、24時間、週末対応など期限を明確にする
記録チケット番号、理由、変更前後のしきい値、戻し作業の予定

Enforcementは強力ですが、緊急時の調査を止めると本末転倒です。平常時は厳格に、緊急時は承認付きで柔軟に、という二段構えが現実的です。

Cost limitsの設定手順

設定はMicrosoft Defender portalのMicrosoft Sentinel > Cost management > Configure Policiesから行います。Microsoftのドキュメントでは、Data Lake tier向けのコスト管理ページにアクセスするにはBilling AdministratorとSecurity Administratorの両方のロールが必要とされています。(Microsoft Learn)

手順作業内容確認ポイント
1Microsoft Defender portalでMicrosoft Sentinel > Cost managementを開く対象テナント、対象ワークスペースを間違えない
2Configure Policiesを選択するCost management画面の右上から設定する
3Data Lake QueryまたはAdvanced Data Insightsのポリシーを選ぶKQL系とNotebook系を混同しない
4total threshold valueを入力する過去実績、予算、緊急時の余力を考慮する
5alert percentageを入力する通知後の対応手順とセットで決める
6Enforcementを有効化する超過後に新規実行がブロックされることを周知する
7Submitで保存する変更内容をチケットや運用台帳に記録する

注意点として、Microsoft LearnではEnforcementはリアルタイムではなく、しきい値到達後に適用されるまで最大4時間かかる場合があると説明されています。つまり、これは完全な瞬間停止スイッチではありません。高頻度ジョブや大きなNotebook処理がある環境では、通知、使用量監視、ジョブ管理も併用してください。(Microsoft Learn)

どのようにしきい値を決めるべきか

しきい値設計で失敗しやすいのは、「全チーム共通の上限」をいきなり設定することです。Microsoft Sentinel data lakeは、調査、検知開発、フォレンジック、機械学習、レポート集計など、利用目的によって使用量の波が大きく変わります。

小規模SOCの場合

小規模SOCでは、まずData Lake Queryのしきい値を低めに設計し、Notebook側は利用者を限定する方法が扱いやすいです。Notebookは便利ですが、Sparkプールの選択やセッション時間によって消費が読みにくくなります。MicrosoftのNotebookドキュメントでも、プール選択がコストや実行時間に影響すると説明されています。(Microsoft Learn)

おすすめの運用は次の通りです。

  • 日常調査はKQL中心にする
  • Notebook利用はTier 3 analystや検知開発担当に限定する
  • Largeプール利用はチケット承認制にする
  • 月初からの消費推移を週次で確認する
  • Limit exceededが出た場合の問い合わせ先をSOC内に明示する

大規模SOCの場合

大規模SOCでは、複数チームが同じデータレイクを使うため、Enforcementだけでは不十分です。ジョブ所有者、実行目的、実行頻度、想定消費を台帳化し、Data Lake QueryとAdvanced Data Insightsを別々に管理します。

特に注意したいのは、スケジュールジョブです。対話型クエリは利用者が気づきやすい一方、スケジュールジョブは誰も見ていない時間帯に継続実行されることがあります。月次レポート、週次集計、MLモデル検証、過去ログの再処理などは、コスト増の原因になりやすい処理です。

MSSPやグローバル組織の場合

MSSPやグローバル組織では、テナント、リージョン、顧客、事業部ごとにコスト責任が分かれることがあります。この場合、しきい値は単なる技術設定ではなく、チャージバックやショーバックの前提になります。

次のようなルールを定めると、後から揉めにくくなります。

ルール具体例
所有者を必須にするすべてのKQLジョブ、Notebookジョブにowner、purpose、cost centerを付ける
実験と本番を分ける検知開発用Notebookと本番集計ジョブを同じ予算枠に入れない
例外の期限を決めるインシデント対応で上限を上げる場合も、終了日時を必ず設定する
月次レビューを行う上位消費ジョブ、失敗ジョブ、Limit exceeded件数を確認する

Microsoft Sentinel data lakeは複数のデータソースを統合して長期分析できるため、使い始めると自然に利用範囲が広がります。だからこそ、最初から「誰が、何のために、どれだけ使ってよいか」を運用ルールに落とし込むことが重要です。

KQLクエリでコストを増やさない実務ルール

Cost limitsは最後の安全装置です。日常運用では、そもそも重すぎるクエリを減らす設計が必要です。MicrosoftのKQLドキュメントでは、Data lakeに対するKQLクエリはAnalytics tierよりパフォーマンスが低く、履歴データの探索やData Lake onlyのテーブルを扱う場合に使うべきと説明されています。(Microsoft Learn)

実務で守りたいルールは次の通りです。

ルール悪い例良い例
時間範囲を必ず絞るいきなり12か月分を検索するまず24時間、次に7日、必要なら30日へ広げる
フィルターを早く適用する全件取得後に条件を絞るwhereで対象ホスト、ユーザー、IP、期間を先に絞る
列を絞るすべての列を返すprojectで調査に必要な列だけ返す
ジョブ化する前に検証する未検証クエリをスケジュール化する小さい期間で結果と消費傾向を確認する
Analytics tierと使い分ける直近調査もData Lakeに投げるリアルタイム性が必要な調査はAnalytics tierを優先する

Microsoft Sentinel data lakeのKQLには、結果サイズ、行数、タイムアウトなどのサービス制限もあります。Microsoft Learnでは、対話型KQLの結果データ64MB、結果行数50万行、クエリタイムアウト4分などの制限が示されています。(Microsoft Learn)

この制限は単なる仕様ではなく、コスト管理のヒントでもあります。50万行を返すクエリを頻繁に実行しているなら、多くの場合、調査設計を見直す余地があります。検知・調査で必要なのは「大量の生データ」ではなく、「判断に必要な最小限の証拠」です。

Notebook利用で失敗しやすいポイント

Advanced Data Insights側で特に注意したいのが、Jupyter Notebookです。Notebookは、Python、Spark、可視化、機械学習を組み合わせられるため、脅威ハンティングやフォレンジックに非常に有効です。一方で、実験的なコードを何度も実行したり、Largeプールを使い続けたりすると、コストが膨らみやすくなります。

MicrosoftのNotebookドキュメントでは、Smallは開発・テスト・軽量な探索、MediumはETLや結合・集計・MLモデル学習、Largeは深層学習、大規模結合、時間重視の処理に向くと説明されています。(Microsoft Learn)

利用シーン推奨する考え方
初回探索Smallで開始し、対象期間と列を絞る
中規模の集計Mediumを使う前に、入力データ量と出力先を確認する
ML・大規模結合Large利用の理由、想定時間、終了条件を記録する
定期実行Notebookジョブとして所有者と実行頻度を管理する
調査終了後不要なセッションやジョブが残っていないか確認する

Notebookでは、対話型セッションの無操作タイムアウトやジョブタイムアウト、同時実行数にも制限があります。Microsoft Learnでは、Notebook job timeoutは8時間、同時Notebookジョブは最大3で、それ以降はキューに入ると説明されています。(Microsoft Learn)

つまり、Notebookのガバナンスでは「誰に許可するか」だけでなく、「どのプールを選ぶか」「どれだけ実行するか」「ジョブ化してよいか」まで管理対象になります。Cost limitsは、その運用ルールを破ったときの最後の防波堤です。

Limit exceededが出たときの対応フロー

Enforcementを有効化すると、しきい値超過後の新しいクエリやジョブ、Notebookセッションは失敗します。現場の混乱を避けるには、Limit exceededエラーを見たアナリストが次に何をすればよいかを明確にしておく必要があります。

状況アナリストの対応管理者の対応
日常調査で発生クエリ範囲を短くする、列を絞る、既存結果を再利用する使用量上位のクエリやジョブを確認する
スケジュールジョブで発生ジョブ所有者に連絡する不要ジョブの停止、頻度変更、しきい値見直しを行う
重大インシデント中に発生インシデント番号を添えて例外申請する一時的な上限変更またはEnforcement無効化を判断する
Notebookで発生プールサイズ、対象データ、実行回数を見直すAdvanced Data Insights側の消費傾向を確認する

ここで避けたいのは、管理者がその場の判断で恒久的にしきい値を引き上げてしまうことです。一時的な例外であれば、必ず期限を設定し、調査後に元へ戻します。変更理由と変更前後の値を記録しておけば、後日のコストレビューや監査にも対応しやすくなります。

Cost limitsだけに頼ってはいけない注意点

Microsoft Sentinel data lakeのcost limitsは強力ですが、万能ではありません。特に次の点は、導入前に関係者へ共有しておくべきです。

実行中の処理は止まらない

Microsoftの発表では、Enforcementは実行中の処理を遡って止めるものではなく、すでに走っているクエリやジョブは通常どおり完了するとされています。(TECHCOMMUNITY.MICROSOFT.COM)

そのため、非常に大きなジョブがすでに開始されている場合、Enforcementだけで即座に消費を止めることはできません。ジョブ設計、スケジュール管理、レビューが引き続き必要です。

適用に時間差がある

Microsoft Learnでは、Enforcementはリアルタイムではなく、しきい値到達後に適用されるまで最大4時間かかる場合があると説明されています。(Microsoft Learn)

高頻度のクエリやNotebookジョブが短時間に集中する環境では、この時間差を前提にアラート率を早めに設定する必要があります。

RBACとコスト制限は別物

Microsoft Sentinelでは、SIEM側はAzure RBAC、data lake側はMicrosoft Entra ID RBACやDefender XDR unified RBACなど、用途に応じた権限管理が関わります。Microsoftのロールドキュメントでは、最小権限の利用が推奨され、data lakeの読み取りや書き込み、ジョブ管理に必要なロールも整理されています。(Microsoft Learn)

Cost limitsは「使いすぎ」を防ぐ仕組みであり、「見てはいけないデータを見せない」仕組みではありません。データアクセス制御、テーブル単位の権限、職務分掌は別途設計してください。

Azure全体の予算管理は別途必要

Microsoft SentinelのコストはAzure請求の一部であり、他のAzureサービスや関連リソースの費用も発生します。Microsoft Learnでも、SentinelのコストはAzure請求全体の一部であると説明されています。(Microsoft Learn)

Data lakeのKQLやNotebookにEnforcementを入れても、データ取り込み、保存、他サービス、Logic Apps、Azure Functionsなどのコスト管理が不要になるわけではありません。FinOps観点では、Azure Budgets、Cost Analysis、タグ設計、月次レビューと組み合わせる必要があります。

導入時のチェックリスト

最後に、Sentinel adminsとFinOps-aware security teamsが実際に進めるためのチェックリストをまとめます。

チェック項目確認内容
対象ワークロードData Lake QueryとAdvanced Data Insightsのどちらを制限するか
権限Billing AdministratorとSecurity Administratorを持つ担当者がいるか
ベースライン過去の使用量、ピーク、上位ジョブを確認したか
しきい値通常運用、余裕枠、緊急時の上限を分けて考えたか
アラート率通知後の対応者と対応手順が決まっているか
例外対応重大インシデント時の一時解除・引き上げ手順があるか
ジョブ台帳KQLジョブ、Notebookジョブの所有者と目的を記録しているか
利用者教育Limit exceeded時の問い合わせ先とクエリ最適化ルールを共有したか
月次レビュー消費傾向、失敗ジョブ、例外対応を定期確認する予定があるか

Microsoft Sentinel data lakeのhard cost limitsは、セキュリティ分析を抑制するための機能ではありません。むしろ、長期ログ分析やNotebookによる高度な調査を、予算面の不安を減らしながら広げるための仕組みです。

最初に行うべきことは、Enforcementをオンにすることではなく、現在のKQLクエリ、KQLジョブ、Notebook利用を棚卸しすることです。そのうえで、Data Lake QueryとAdvanced Data Insightsを分けてしきい値を設計し、アラート時の対応と緊急時の例外ルールを決めます。ここまで準備してからEnforcementを有効化すれば、Microsoft Sentinel data lakeは「便利だがコストが読みにくい分析基盤」から、「大規模分析を安心して運用できるセキュリティデータ基盤」へ近づきます。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次