Microsoft DefenderのLogstash/DCR連携とは?Sentinelログ取り込みの変更点と確認ポイント

結論から言うと、2026年5月14日時点で確認すべきポイントは「Microsoft Defender本体の検出ロジックが変わったか」ではなく、LogstashとDCRベースAPIを使ってMicrosoft Sentinelへログを送っている環境があるかです。該当の公式情報は、Logstash出力プラグインを使い、外部ログをLog AnalyticsまたはMicrosoft Sentinelのカスタムテーブル/標準テーブルへ取り込む手順を扱っています。Microsoft Learn上の該当ページは、表示上は2026年4月30日最終更新となっています。(Microsoft Learn)

Microsoft DefenderとMicrosoft Sentinelを組み合わせてSOC運用している組織では、今回の内容を「Defenderの緊急パッチ」として扱うより、Sentinelのログ取り込み設計、DCR、認証方式、ネットワーク要件、内部Runbookの見直しポイントとして整理するのが現実的です。特にLogstash、DCR、Logs Ingestion API、Syslog、CommonSecurityLog、カスタムログを使っている管理者は、設定値を見直す価値があります。

目次

Microsoft Defenderの「Stream Logs to Microsoft Sentinel via Logstash and DCR-Based API」とは

「Stream Logs to Microsoft Sentinel via Logstash and DCR-Based API」は、LogstashのMicrosoft Sentinel向け出力プラグインを使い、外部データソースのログをMicrosoft SentinelまたはLog Analyticsへ送るための公式手順です。

ポイントは、従来の単純なログ転送ではなく、DCR(Data Collection Rules)を使って取り込み時のスキーマ、変換、出力先テーブルを制御する点です。公式ドキュメントでは、このプラグインにより、列名と型の制御、取り込み時のフィルターやエンリッチメント、カスタムテーブルまたは一部の標準テーブルへの取り込みが可能と説明されています。(Microsoft Learn)

ただし、この機能は公式ドキュメント上でパブリックプレビューとされています。プレビュー機能は一般提供機能と同じSLAが付かない場合があるため、本番環境へ展開する場合は、検証環境でのテスト、変更承認、ロールバック手順を用意してから進めるべきです。(Microsoft Learn)

今回の変更点は「Defender本体の仕様変更」ではなく、Logstash/DCR手順の確認が中心

GitHub上のMicrosoftDocs/defender-docsリポジトリでは、updates2というコミットでsentinel/connect-logstash-data-connection-rules.mdが更新されています。差分として確認できるのは1ファイル、7行追加、7行削除で、複数のLogstash設定例に付いていたrubyのコードフェンス指定が、通常のコードブロックへ変更された点です。(GitHub)

つまり、少なくともこの差分を見る限り、次のような変更とは読み取れません。

  • Microsoft Defender for Endpointの検出エンジン変更
  • Defenderポリシーの既定値変更
  • Sentinelのインシデント生成ルール変更
  • Logstashプラグインの必須パラメーター変更
  • DCR、DCE、Logs Ingestion APIのエンドポイント変更
  • 既存環境への即時の設定変更要求

実務上は、「Microsoft Defender関連の公式ドキュメント更新」という見出しだけで判断せず、実際に変更されたファイルと差分を見ることが重要です。今回の対象はMicrosoft SentinelのLogstash/DCR連携手順であり、Defender本体の機能変更として社内アラートを出すより、Sentinelログ取り込み運用の確認項目として扱うのが適切です。

確認項目今回の見方管理者が取るべき対応
対象ファイルSentinelのLogstash/DCR連携手順Sentinel運用チーム、SOC、基盤チームで確認
変更の性質コードブロック表記の修正が中心内部ドキュメントやRunbookの表記差分を確認
Defender本体への影響差分だけでは直接変更とは判断しにくいDefenderポリシーを変更しない
既存パイプラインへの影響設定値変更は確認されない実データ取り込みが継続しているかだけ確認
優先度Logstash/DCRを使う環境では中程度設定棚卸しと証跡記録を実施

影響を受ける環境と優先順位

今回の内容は、すべてのMicrosoft Defender利用者に影響するものではありません。影響を受けやすいのは、Microsoft DefenderとMicrosoft Sentinelを組み合わせ、外部ログの取り込みにLogstashやDCRを使っている組織です。

環境影響度確認ポイント
LogstashからMicrosoft Sentinelへログを送信している高プラグイン、DCR、DCE、認証、出力先テーブルを確認
SyslogをLogstash経由でSentinelへ送っている高Microsoft-Syslogなど標準テーブル向けのoutputStreamを確認
カスタムテーブルへログを送っている高_CLテーブル、スキーマ、transformKqlを確認
Service principalで認証している中〜高シークレット保管、期限、ローテーションを確認
Managed identityを使っている中〜高AKS、Azure Arc、Azure VM/VMSSごとの認証方式を確認
Microsoft Defenderのみ利用しSentinel連携がない低今回の差分による直接影響は限定的
内部Wikiや手順書に公式コード例を転載している中ruby表記の有無、Markdownレンダリング、説明文を確認

特に注意したいのは、SOCのRunbookやIaCテンプレート、社内Wikiに公式ドキュメントのコード例をコピーしているケースです。設定内容が変わっていなくても、コードブロックの言語指定が変わると、社内ドキュメントの見た目や自動生成ツールの処理に影響することがあります。

管理者が最初に確認すべき設定

LogstashとDCRベースAPIでSentinelへログを送る構成では、設定項目が複数のレイヤーに分かれます。トラブル時に原因を切り分けにくいため、次の順番で確認すると効率的です。

レイヤー確認するもの失敗しやすいポイント
Logstash対応バージョン、入力プラグイン、フィルター、出力プラグインLogstash 8利用時のECS設定、プラグイン未更新
出力プラグインmicrosoft-sentinel-log-analytics-logstash-output-pluginサードパーティ製プラグインと混同する
DCRstreamDeclarations、dataFlows、transformKql、outputStream入力スキーマとDCR定義の不一致
テーブルカスタムテーブルまたは標準テーブル_CLサフィックス、Custom-/Microsoft-プレフィックスの誤り
認証Service principalまたはManaged identityシークレット期限切れ、権限不足、IDの指定漏れ
ネットワークAzureMonitor、AzureActiveDirectory、443番 outboundプロキシ、TLS検査、ファイアウォールで遮断
検証KQL、Logstashログ、DCRメトリック「送信したつもり」でテーブル未確認

公式ドキュメントでは、Microsoftがサポートするのは当該のMicrosoft Sentinel提供Logstash出力プラグインであり、Microsoft Sentinel向けのサードパーティ製Logstash出力プラグインはサポート対象外とされています。運用環境で別プラグインを使っている場合は、サポート範囲の整理が必要です。(Microsoft Learn)

DCRベースAPIでログを送る基本構成

この構成では、Logstashが外部ログを受け取り、必要に応じてフィルターで整形し、Microsoft Sentinel向け出力プラグインからLogs Ingestion APIへ送信します。Logs Ingestion APIは、DCRを参照して受信データの構造、変換、宛先ワークスペース、宛先テーブルを判断します。(Microsoft Learn)

基本的な流れは次のとおりです。

手順作業実務上の注意
1Logstashでサンプルデータを生成または受信する本番ログに近い形式でサンプルを作る
2サンプルファイルを作成するcreate_sample_file => trueはサンプル作成用
3カスタムテーブルまたは標準テーブルを決める標準テーブルは対応テーブルに限定される
4DCRを作成するstreamDeclarationsと実データの列名・型を合わせる
5transformKqlを設定する必要な列を落としすぎない
6認証方式を設定するService principalかManaged identityを選ぶ
7Logstashを再起動する再起動後にテーブルで着信確認する
8KQLで検証する件数、時刻、送信元、重大度を確認する

本番送信に切り替えるときは、サンプルファイル作成用のcreate_sample_file => trueを残さないように注意してください。公式手順でも、実際に取り込む設定へ進む際はcreate_sample_fileをfalseに変更する流れが示されています。(Microsoft Learn)

カスタムテーブルと標準テーブルの使い分け

DCRベースAPIでは、カスタムテーブルにも一部の標準テーブルにもログを送れます。ただし、どちらを選ぶかで、後続の分析、コスト、ルール整備、運用負荷が変わります。

選択肢向いているケース注意点
カスタムテーブル独自形式の製品ログ、業務アプリログ、標準スキーマに合わないログ分析ルール、ハンティングクエリ、Workbookを自分で整備する必要がある
標準テーブルSyslog、CommonSecurityLogなど既存のSentinel運用に乗せたいログLogs Ingestion APIで対応している標準テーブルに限られる
既存コネクタ対象製品向けの公式コネクタやAMA連携があるログLogstashを使うより保守が簡単な場合がある

Logs Ingestion APIでは、カスタムテーブルは事前に存在している必要があり、カスタムテーブル名には_CLサフィックスが必要です。標準テーブルへ送る場合は、対応しているAzureテーブルに限定されます。(Microsoft Learn)

また、Microsoft Sentinelのベストプラクティスでは、Logstashでログ内容をフィルターするとログがカスタムログとして取り込まれ、無料枠や分析機能、課金、ルール整備に影響する場合があると説明されています。カスタムログは分析ルール、脅威ハンティング、Workbookへ自動的に組み込まれるわけではないため、取り込み後の検出設計まで含めて判断する必要があります。(Microsoft Learn)

Service principalとManaged identityの選び方

Logstash出力プラグインでは、Service principalによるクライアント資格情報認証と、Managed identityによるパスワードレス認証が示されています。(Microsoft Learn)

認証方式メリット注意点
Service principalオンプレミスや任意のサーバーでも使いやすいclient_app_secretの保管、期限管理、漏えい対策が必要
System-assigned managed identityAzure VMなどでシークレット管理を減らせる実行環境がManaged identityに対応している必要がある
User-assigned managed identity複数リソースで同じIDを使いやすい複数IDがあるVMではObject ID指定が必要になる場合がある
AKS Workload IdentityKubernetes環境でシークレットレスにしやすい環境変数やOIDC連携の前提を満たす必要がある
Azure Arc managed identityオンプレミスやハイブリッドサーバーで使えるLogstashプロセスの実行ユーザー権限に注意が必要

公式ドキュメントでは、Managed identity有効時にAKS Workload Identity、Azure Arc、IMDSの順に適切なIDメカニズムを検出すると説明されています。また、Azure Arcを使う場合、Logstashプロセスはチャレンジトークンを読むためにhimdsグループのメンバーであるユーザーとして実行する必要があります。(Microsoft Learn)

セキュリティ面では、client_app_secretのような機密値をLogstash設定ファイルへ平文で書かないことが重要です。公式ドキュメントでも、Logstash KeyStoreなどを使った機密情報の保管が推奨されています。(Microsoft Learn)

設定例を見るときの注意点

今回のGitHub差分では、Logstash設定例のコードブロックからruby指定が外されています。これは実務的にも自然な修正です。Logstashの設定ファイルはRubyそのものではなく、Logstash pipeline configurationとして扱うべきだからです。(GitHub)

社内ドキュメントに例を書く場合も、次のように通常のコードブロックとして扱うと誤解が少なくなります。

output {
  microsoft-sentinel-log-analytics-logstash-output-plugin {
    managed_identity => true
    data_collection_endpoint => "<DCEまたはDCRのlogsIngestion URI>"
    dcr_immutable_id => "<DCR immutableId>"
    dcr_stream_name => "<stream name>"
  }
}

Service principalを使う場合は、設定値をファイルに直書きしない運用が前提です。

output {
  microsoft-sentinel-log-analytics-logstash-output-plugin {
    client_app_Id => "<application client ID>"
    client_app_secret => "<secret value>"
    tenant_id => "<tenant ID>"
    data_collection_endpoint => "<logsIngestion URI>"
    dcr_immutable_id => "<DCR immutableId>"
    dcr_stream_name => "<stream name>"
    create_sample_file => false
  }
}

この例をそのまま本番に貼り付けるのではなく、自社のDCR、DCE、テーブル、認証方式、プロキシ要件に合わせて置き換えてください。

DCR設定で失敗しやすいポイント

DCRは便利ですが、入力データ、変換、出力先テーブルを結び付けるため、設定ミスの影響が大きくなります。

失敗例原因対策
データが入らないdcr_stream_nameとDCR内のstream名が一致しないDCRのJSONビューで実際のstream名を確認する
標準テーブルへ入らないoutputStreamのプレフィックスを誤る標準テーブルはMicrosoft-、カスタムはCustom-を使う
カスタムテーブルが見つからない_CL付きテーブルを作成していない取り込み前にLog Analytics側でテーブルを用意する
変換後に時刻が不正TimeGeneratedを適切に作っていないtransformKqlでイベント時刻を明示する
DCR作成に失敗する列名が@や_で始まる入力列名は英字で始まるように変換する
監査で困る不要に見える列を削除しすぎたIP、ホスト名、ログソース、重大度、元イベント時刻は残す

公式ドキュメントでは、streamDeclarations内の入力ストリーム列名は文字で始まる必要があり、TimeGeneratedのdatetimeフィールドが必須とされています。これらは本番展開前のチェックリストに入れておくべき項目です。(Microsoft Learn)

ネットワークとプロキシの確認ポイント

LogstashサーバーからMicrosoft Sentinelへログを送るには、認証先とログ取り込み先へ到達できる必要があります。公式ドキュメントでは、Azure virtual network service tagsとしてAzureMonitorとAzureActiveDirectoryの両方が必要とされています。サービスタグを使えない環境では、Microsoft Entra IDの認証エンドポイントとData Collection Endpointへの443番アウトバウンド通信が必要です。(Microsoft Learn)

確認すべき観点は次のとおりです。

項目確認内容
通信方向LogstashサーバーからAzure側へのOutbound 443
認証先Microsoft Entra IDのログインエンドポイント
取り込み先DCEまたはDCRのlogsIngestionエンドポイント
プロキシproxy、proxy_aad、proxy_endpointの使い分け
TLS検査公式要件に沿って例外設計が必要か確認
高スループットcompress_dataの利用可否を検討
429対策retransmission_delayを増やして再試行頻度を調整

大量ログを送る環境では、送信失敗時の再送、圧縮、プロキシ経由の遅延、APIスロットリングを考慮する必要があります。公式ドキュメントでは、compress_dataは高スループットパイプラインで推奨され、HTTP 429のようなスロットリング時にはretransmission_delayを増やすことでリクエスト率を下げられると説明されています。(Microsoft Learn)

展開前に実施したい検証手順

本番環境へ適用する前に、最低限次の検証を行ってください。

検証具体的な確認方法合格基準
サンプル生成create_sample_file => trueでサンプルファイルを作る想定列と型が確認できる
DCR変換サンプルを使ってtransformKqlを確認宛先テーブルのスキーマに合う
認証Service principalまたはManaged identityで送信トークン取得エラーがない
ネットワークLogstashサーバーから認証先とDCEへ接続443番通信が成功する
取り込みSentinelのLogsでKQL確認最新イベントが表示される
運用ログLogstashログを確認出力プラグインのエラーがない
監査変更記録を残す実施者、日時、設定、結果が残る

KQLでの確認例は次のようにシンプルで構いません。

CustomTable_CL
| where TimeGenerated > ago(24h)
| summarize Events=count() by bin(TimeGenerated, 1h)
| order by TimeGenerated desc

Syslogへ送っている場合は、次のように送信元や重大度ごとに確認できます。

Syslog
| where TimeGenerated > ago(24h)
| summarize Events=count() by Computer, SeverityLevel
| order by Events desc

検証では「データが入ったか」だけでなく、どのテーブルに、どの時刻で、どの列名で、どの件数が入ったかまで確認してください。ログ取り込みは成功していても、時刻や重大度がずれていると、後続の分析ルールやインシデント調査で問題になります。

2026年以降の移行計画で見落とせない点

今回の更新そのものは小さな文書差分ですが、Sentinelのログ取り込みを運用している組織は、周辺の移行スケジュールも合わせて確認すべきです。

Microsoft Sentinelのデータコネクタに関する公式情報では、2026年9月14日以降、従来のHTTP Data Collector APIはサポートされなくなるため、該当するデータソース、カスタム統合、コネクタはサポートされる代替方式へ移行する必要があると説明されています。(Microsoft Learn)

また、Microsoft Sentinelは2027年3月31日以降、Azure portalではサポートされず、Microsoft Defender portalでのみ利用可能になる予定です。現在Azure portalでSentinelを運用している組織は、Defender portalへの移行計画も並行して進める必要があります。(Microsoft Learn)

さらに、Azure MonitorのLogs Ingestion APIでは、2026年3月1日からTLS 1.2以上の接続が強制されると説明されています。古いプロキシ、レガシーOS、古いJava実行環境を経由するLogstash環境では、TLS要件も確認しておくべきです。(Microsoft Learn)

期限・時期内容取るべき対応
2026年3月1日以降Logs Ingestion APIでTLS 1.2以上が必要古いTLS設定、プロキシ、証明書検査を確認
2026年9月14日以降HTTP Data Collector APIがサポート外へLogs Ingestion APIやCCFなどへ移行計画を作る
2027年3月31日以降SentinelはDefender portalのみで利用SOC手順、教育、権限、画面キャプチャを更新

よくある誤解と回避策

Microsoft Defenderの検出機能が変わったと早合点する

今回のGitHub差分だけを見ると、変更対象はSentinelのLogstash/DCR連携手順です。Defender for Endpointの検出ルール、EDR設定、インシデント生成ロジックが変更されたとは判断できません。社内通知では「Defender本体の仕様変更」ではなく、「Sentinelログ取り込み手順の文書更新」と表現すると誤解を避けられます。

公式サンプルをそのまま本番へ貼り付ける

公式サンプルは理解を助けるための例です。本番環境では、テナントID、アプリケーションID、DCR immutableId、DCE URI、stream名、テーブル名、プロキシ設定、認証方式を自社環境に合わせる必要があります。

特にcreate_sample_file => trueはサンプル作成用です。本番送信時に残すと、期待した送信動作にならない可能性があります。

標準テーブルとカスタムテーブルの違いを軽視する

標準テーブルに入れれば既存の分析ルールやWorkbookに乗りやすくなりますが、対応テーブルに限られます。カスタムテーブルは柔軟ですが、後続の検出、検索、可視化を自分で整備する必要があります。

DCRで必要な列を削りすぎる

取り込み量を減らすために列を削るのは有効ですが、インシデント調査で必要になる列まで落とすと後悔します。最低限、元イベント時刻、送信元ホスト、送信元IP、ログソース、重大度、メッセージ本文、相関IDに相当する項目は残すか、削除理由を記録してください。

Azure portal前提の手順を更新しない

Sentinelの運用はMicrosoft Defender portalへ移行していきます。画面操作手順、スクリーンショット、権限設計、SOC教育資料がAzure portal前提のままだと、将来の移行時に混乱します。

管理者向けチェックリスト

今回の更新を受けて、次のチェックリストを順に確認してください。

チェック確認内容
利用有無LogstashからSentinelへログを送っているか
プラグインMicrosoft Sentinel公式の出力プラグインを使っているか
Logstash対応バージョンの範囲に入っているか
DCRstreamDeclarations、dataFlows、transformKqlが実データと一致しているか
テーブルカスタムテーブルと標準テーブルの使い分けが妥当か
認証Service principalのシークレット管理またはManaged identityの設定が適切か
権限DCRへのアクセス権限が正しく付与されているか
ネットワークEntra IDとDCE/DCR endpointへ443番で到達できるか
コストカスタムログ化による課金・機能影響を把握しているか
検出分析ルール、ハンティング、Workbookが取り込み後のテーブルを参照しているか
移行HTTP Data Collector APIやAzure portal前提の手順が残っていないか
証跡更新確認日、対象ファイル、判断、対応内容を記録したか

今回の更新をどう扱うべきか

今回の「Stream Logs to Microsoft Sentinel via Logstash and DCR-Based API」は、Microsoft Defender本体の緊急変更としてではなく、Microsoft Sentinelのログ取り込み運用を見直すきっかけとして扱うのが適切です。

LogstashとDCRを使っていない環境では、影響は限定的です。一方で、外部ログをLogstash経由でSentinelへ送っている環境では、DCR、テーブル設計、認証方式、ネットワーク、コスト、分析ルールまで一通り確認してください。

次に取るべき行動は明確です。まず、社内のRunbookやIaCリポジトリでmicrosoft-sentinel-log-analytics-logstash-output-plugin、dcr_stream_name、data_collection_endpointを検索します。該当があれば、公式手順との差分、実際の取り込み状況、移行計画を確認します。該当がなければ、「対象構成なし」として記録し、Sentinelの将来移行スケジュールだけ継続的に監視しましょう。

この記事を書いた人

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

コメント

コメントする

目次