Windows イベントログを Basic ログ プランのテーブルに格納
はじめに
Windows のイベントログは Sentinel のコネクタを利用して SecurityEvent に格納可能ですが、こちらのテーブルは安価な Basic ログプランに変更ができません。そのため、この記事では Basic プランのカスタムテーブルを作成し、データ収集ルールを使って格納していきます。
参考
スクリプト実行
上記の参考ブログのスクリプトを実行します。こちらは既存のテーブルのスキーマ情報を取得し、コピーのカスタムテーブルを作成してくれるスクリプトです。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 つの列のみが含まれている必要があります」という制約があるため、今回の方法は適用できません。
Discussion