🌴

Windows イベントログを Basic ログ プランのテーブルに格納

2024/08/31に公開

はじめに

Windows のイベントログは Sentinel のコネクタを利用して SecurityEvent に格納可能ですが、こちらのテーブルは安価な Basic ログプランに変更ができません。そのため、この記事では Basic プランのカスタムテーブルを作成し、データ収集ルールを使って格納していきます。

参考

https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/save-ingestion-costs-by-splitting-logs-into-multiple-tables-and/ba-p/4230861

スクリプト実行

上記の参考ブログのスクリプトを実行します。こちらは既存のテーブルのスキーマ情報を取得し、コピーのカスタムテーブルを作成してくれるスクリプトです。tableCreator.ps1 の以下を修正します。

$workspaceId = "YOUR_WORKSPACE_ID"
$resourceId = "/subscriptions/YOUR_SUBSCRIPTION_ID/resourceGroups/YOUR_RESOURCE_GROUP/providers/Microsoft.OperationalInsights/workspaces/YOUR_WORKSPACE_NAME"

スクリプトを実行します。

./tableCreator.ps1

今回は SecurityEvent を選択し、SecurityEvent_CL を作成します。

データ収集ルールの編集

こちらもブログと同じようにテンプレートのエクスポートを使用して、既存のデータ収集ルールにデータ保存先を追記する形にします。なお、デプロイ時に別リソース名にすることで別のデータ収集ルールとして作成できます。

[テンプレートのエクスポート] > [デプロイ] をクリック


[テンプレートの編集] をクリック


Dataflow にカスタムテーブル用のアウトプットフローを追記

{
    "streams": [
        "Microsoft-SecurityEvent"
    ],
    "destinations": [
        "DataCollectionEvent"
    ],
    "transformKql": "source",
    "outputStream": "Custom-SecurityEvent_CL"
}

この状態でデプロイしてみると、以下のようなエラーになります。おそらくカラムが異なるようです。


作成したテーブルを見てみると、以下が string となっていたので一度削除して guid の型で追加します。なお、元の SecurityEvent では guid になっているのでスクリプトの不具合と思われます。

  • InterfaceUuid
  • LogonGuid
  • SourceComputerId
  • SubcategoryGuid
  • TargetLogonGuid


この修正後、もう一度で再度 [テンプレートのエクスポート] からデプロイすると成功しました。

動作確認

SecurityEvent_CL テーブル
通常は読みやすい順番でカラムが表されますが、カスタムテーブルなのでアルファベット順となっているようです。


SecurityEvent テーブル


上記の通り、同じログが記録されていることを確認できました。

Basic ログプランへ切り替え

作成したカスタム テーブルを Basic ログプランに変更します。
Log Analytics ワークスペースの [テーブル] > SecurityEvent_CL の三点リーダをクリック > [テーブルの管理] でテーブルプランを [基本] に設定します。

補足

Auxiliary ログプランにできればいいですが Azure Monitor エージェントを使用する場合、「カスタム テーブルには、TimeGenerated と RawData (string 型) という 2 つの列のみが含まれている必要があります」という制約があるため、今回の方法は適用できません。
https://learn.microsoft.com/ja-jp/azure/azure-monitor/logs/create-custom-table-auxiliary#send-data-to-a-table-with-the-auxiliary-plan

Microsoft (有志)

Discussion