Azure VM上のSQL Serverの監査ログをLog Analyticsワークスペースに収集する方法を調べる機会があったのですが、一連の設定方法が書かれた記事が調べた限り見つからなかったので、本記事で自分なりにまとめてみました。
結論
必要な操作は以下の2つになります。
- SQL AuditログをWindowsセキュリティログに書き出す
- セキュリティログをLog Analyticsワークスペースに転送する
1と2ではそれぞれいくつか必要な設定があるので、SQL Serverでの設定と、Azureでの設定に分け、検証した際の画面キャプチャとともに解説していきます。
検証の前提
今回は以下の環境で検証を行いました。
- VM:Windows Server 2022
- SQL Server:Microsoft SQL Server 2019 Standard
- VMにはAzure Monitor Agentを導入済み
Azure Monitorでの設定
SQL Serverが構成されているVMに接続し、管理者権限でコマンドプロンプトを開き、以下のコマンドを実行します。
※ アプリケーションが(SQL Server)が生成するイベントの成功と失敗に対して監査を有効にするコマンドです。ローカルセキュリティポリシー(secpol.msc)を開き、「セキュリティ監査の生成」ポリシーに対し、SQL Serverの起動ユーザーへ権限を付与します。 ※本手順実施後、サーバの再起動が必要となります。
SSMSで対象のSQL Serverに接続し、オブジェクトエクスプローラーにて、[Security]-[Audits]を展開し、新しい監査オブジェクトを作成します。
その後[Audit destination]で「Security Log」を選択します。
※既に監査オブジェクトが作成済みの場合、一度監査オブジェクトを無効化し、上記の設定に変更します。
※監査オブジェクトの作成後は有効化が必要です。[Audit]-[Server Audit Specifications]にてサーバー監査の仕様を作成します。
[Create Server Audit Specification]-[Audit]では、手順3 で作成した監査オブジェクトを選択します。
※既にサーバー監査の仕様が作成済みの場合、本手順はスキップしてください。
※サーバー監査の仕様を作成後は有効化が必要です。イベントビューアを開き、SQL AuditログがWindows セキュリティイベントとして書き込まれていることを確認します。
SQL Serverでの設定
[Azure Monitor]-[データ収集ルール]-[+作成]をクリックし、データ収集ルールを作成します。
リソースタブでは、スコープとして対象のAzure VMを選択します。
収集と配信タブでは、以下のパラメータを入力します。
・データソースの種類:Windows イベントログ
・ イベントログの収集:基本
・ セキュリティ
・ 監査の成功:チェック
・ 監査の失敗:チェック
確認と作成タブでは、検証に成功したことを確認し、作成をクリックします。
[Azure Monitor]-[ログ]にて、SQL ServerのAuditログが送信されていることを確認します。
おわりに
Azure SQL Databaseであれば診断設定で容易に設定できるのですが、SQL Serverだと少々作りこみが必要になります。
「SQL Serverを使用しており、かつ全てのログを保管・分析のためLog Analyticsワークスペースに集約している」という環境も少なくないかと思われますので、同じ様に悩んだ方の参考になれば幸いです。