【Q&Aコーナー】カスタムコネクタを作ってCSV形式のログをSentinelに取り込む

皆さんこんにちは。国井です。
今日はMicrosoft  Sentinelのご質問をいただいたので、お答えしていきます。
いただいたご質問はこちらです。

Microsoft  Sentinelで取り込みたいCSV形式のログがあるのですが、
対応するデータコネクタがありません。
この場合、どうやってログを取り込んだらよいですか?

Microsoft Sentinelではログを取り込む場合、データコネクタを利用しますが、データコネクタはあらかじめ決められたフォーマットに対応するデータコネクタしかありません。そのため、例えばオンプレミスのサーバーでCSV形式のログがあるんだけど、Sentinelに取り込みたくてもコネクタがないからムリ!ってケースも出てくるかと思います。
こういう時はカスタムコネクタを作ってあげれば任意のログをSentinelに取り込むことができます。Microsoft のWebサイトによるとカスタムコネクタの作り方はいろいろあるようなのですが、

今回はオンプレミスのCSV形式のログを取り込むという前提でPowerShellから取り込む方法を見てみたいと思います。

スクリプトのインストール

まず最初に行うことはカスタムコネクタを作成するスクリプト(upload-azmonitorlog.ps1)をインストールすることです。インストールは以下のコマンドレットで実行します。
管理者としてPowerShellを実行することをお忘れなく。

Install-Script -Name Upload-AzMonitorLog

カスタムコネクタの作成とCSVファイルの取り込み

インストールが完了したらupload-azmonitorlog.ps1スクリプトを利用してカスタムコネクタの作成とCSVファイルのアップロードを全部まとめて行います。
今回はActive Directoryユーザーの一覧を取り込むカスタムコネクタを作ります。
そこで事前事前としてActive DirectoryでCSVDEコマンドを実行し、以下のようなユーザー一覧が入ったCSVファイルを作っておきました。(見るのもツラい..)

image

ではこちらのCSVファイルを取り込むコマンドレットを実行しましょう。
基本的な構文はこうです。

Import-Csv CSVファイルのパス | upload-azmonitorlog.ps1 –WorksopaceId ワークスペースID -WorkspaceKey ワークスペースキー –LogTypeName スキーマテーブルの名前 –AdditionalDataTaggingName 追加の列名 –AdditionalDataTaggingValue 追加の列に入る値

ワークスペースIDとワークスペースキーというキーワードが登場しましたが、これはSentinelに関連付けられているLog AnalyticsワークスペースのワークスペースIDとワークスペースキーになります。
調べ方はSentinel画面から設定 > ワークスペースの設定 > エージェント の順にアクセスするとご覧いただけます。主キーというのがワークスペースキーです。

image

以上を踏まえて、ご覧のように実行してみました。

Import-Csv C:\logs\users.csv | Upload-AzMonitorLog.ps1 -WorkspaceId "xxxx" -WorkspaceKey "xxxxx" -LogTypeName ADObject -AdditionalDataTaggingName
"ADObjecttype" -AdditionalDataTaggingValue "user"

image

これでADObject という名前のスキーマテーブルとテーブルへのCSVファイルの内容の取り込みが同時に行われます。

結果を確認する

結果を見てみましょう。
Sentinelでカスタムコネクタを作成した場合、スキーマテーブルの名前はADObjectと指定しましたが、ADObject_CL というふうに _CL のサフィックスがついた状態でテーブルが作られます。実際にSentinelからクエリを実行してみると、ご覧のようにCSVファイルの内容がそのまま格納されていることがわかります。(よく見るとCSVファイルの中にユーザー以外のオブジェクト情報を格納していたので、そのまま保存されちゃいました)

image

また

ADObject_CL
| project distinguishedName_s, ADObjecttype_s

のように実行してみると列としてADObjecttypeという列ができていて、値としてuserが入っていることがわかります。これはコマンドレット実行時に
-AdditionalDataTaggingName “ADObjecttype” -AdditionalDataTaggingValue “user”
と実行したところが影響しています。(これらはコマンドレット実行時の必須入力オプションではないので省略することもできます)

image

レコードの追加

一度作成したテーブルにレコードを追加する場合、追加したいレコードが書き込まれたCSVファイルを改めて用意し、先ほどのコマンドレットをもう一度実行すればOKです。
こんな感じのCSVファイルを用意して、

image

前述のコマンドレットを実行すると、

image

ご覧のように新しいレコードが追加されたことがわかります。TimeGenerated列はレコードが追加された日時を表すので他のレコードの日時と異なることから追加したレコードであることがわかります。