Azure で Windows ファイルサーバーの監査ログのクラウド分析&アーカイブ基盤を作ってみる

Azure で Windows ファイルサーバーの監査ログのクラウド分析&アーカイブ基盤を作ってみる

今回は Windows 監査イベントログをクラウドにエクスポートして分析でき、かつ自動でアーカイブ管理できる基盤を作ってみます。プレビュー版機能も含んでいるのでご利用の際は自己責任で実施ください。

構成の説明

構成に使うコンポーネントは次の通りです。

  • Windows ファイルサーバー
  • Azure セキュリティセンター
  • Log Analytics ワークスペース
  • Azure ストレージアカウント

VM から Log Analytics に送信されたログデータを、プレビュー機能を使ってストレージアカウントへエクスポートします。Windows Server のセキュリティログをエクスポートするには Azure Security Center が必要になります。

保存されたログはストレージアカウントのライフサイクル管理を用いて長期間保存した後に自動削除するような仕組みです。追加 BLOB となるので現在はホットストレージ→削除の2段階しかサイクルを踏めない点に注意です。もちろん 30 日間は Log Analytics に取り込んだデータを分析できます。

事前準備

事前に Log Analytics ワークスペースとストレージアカウントを作成しておきます。また、Windows 仮想マシン1台を作成し、ファイル共有の有効化と Log Analytics ワークスペースへ接続しておきます。

Windows 監査ログの有効化

Windows 仮想マシンで監査ログを取得を有効化します。

Windows 仮想マシンにサインインし、[コントロールパネル] を開き、[システムとセキュリティ]>[管理ツール]>[ローカル セキュリティ ポリシー] を起動します。

[ローカル セキュリティ ポリシー] にて、[セキュリティの設定]>[ローカル ポリシー]>[監査ポリシー] を開き、[オブジェクト アクセスの監査] をダブルクリックします。

[オブジェクト アクセスの監査のプロパティ] にて、[成功][失敗] を有効化して [OK] をクリックします。

監査ログを取得するフォルダでプロパティを開き、[セキュリティ] タブで [詳細設定] をクリックします。[監査] タブを開き、[追加] をクリックします。

[プリンシパルの選択] [Everyone] を選択します。また、[基本のアクセス許可を表示する] をクリックして追加表示される項目が有効化されていることを確認します。設定したら [OK] をクリックします。

[イベントビューアー][Windows ログ]>[セキュリティ] で共有ファイルに対する操作ログが出力されることを確認します。(以下はファイルを削除した時のログ)

監査ログの取得構成

Azure セキュリティセンターで Windows のセキュリティログを取得できるように構成します。

Azure ポータルにて、[セキュリティ センター] を開き [価格と設定] をクリックします。一覧から、ログデータを収集するワークスペースをクリックします。

[Azure Defender] [オン] にし、[サーバー] [プラン] [オン] にして [保存] をクリックします。

[データ収集] をクリックし、[すべてのイベント] を選択して [保存] をクリックします。

ストレージのライフサイクル構成

事前にストレージアカウントで取得したファイルのライフサイクル管理構成を構成します。

ストレージアカウントを選択し、[ライフサイクル管理] をクリックします。

[詳細] タブで次の通り設定し、[次へ] をクリックします。

  • [規則名]:(ライフサイクル管理規則のルールを入力)
  • [規則の範囲][ストレージアカウントのすべての BLOB にルールを適用します]
  • [BLOB の種類][ブロック BLOB], [BLOB の追加]
  • [BLOB のサブタイプ][基本 BLOB]

[基本 BLOB] タブにて、次の画像のように設定します。2ヶ月間はアクセスしやすいストレージ、半年後にはアーカイブ、5年後にデータの削除という管理サイクル例です。条件の追加は [if-then ブロックの追加] をクリックします。

※BLOB の追加では現在削除操作のみサポートされています。 (2020/12/31 追記)

番号条件結果
160日間クールストレージに移動する
2180日間アーカイブストレージに移動する
31825日間BLOB の削除

Log Analytics ワークスペースのデータエクスポート構成

ワークスペースデータのエクスポート構成は現状 Azure CLI か REST API からしか行えません。次のコマンドで設定します。変数のところは適宜環境に合わせて変更してください。

# 変数の定義
resourceGroupName="<リソースグループ名>"
workspaceName="<ワークスペース名>"
ruleName="<エクスポートルール名>"
storageAccountId="<ストレージアカウントの ID>"

# Security Event エクスポートルールの作成
az monitor log-analytics workspace data-export create --resource-group $resourceGroupName --workspace-name $workspaceName --name $ruleName --tables SecurityEvent --destination $storageAccountId

しばらくするとワークスペースにログが出力されます。(セキュリティイベントは 「SecurityEvent」 でクエリできます)

ストレージアカウントを確認すると、時間別にフォルダ分けされてワークスペースログが保存されています。

中身は次のような JSON 形式のログになっています。可読性を上げるのなら Azure Sentinel などの活用も必要でしょう。

データの削除期間を三日後に設定し、数日後に再度見てみるとログデータがコンテナーから削除されていました。