SQL Server 監査ログ
SQL Server の監査ログを取得し、Azure Log Analytics に転送することになった。
その流れをまとめてみる。
1.セキュリティログへの書き込みを許可する
今回、監査ログはイベントログの「セキュリティ」、つまりはセキュリティログに書き込みこととする。
アプリケーションログにも書き込めるんだけど、調べた感じ SQL Serverに関するログは割と重要とのことで、セキュリティを担保するという意味でそうした。手順は下記マイクロソフトのサイトに書かれてある。
セキュリティ ログへの SQL Server 監査イベントの書き込み – SQL Server | Microsoft Learn
1-1.auditpol(監査ポリシー)を使用した Windows のオブジェクト アクセスの監査の設定
以下をコマンドプロンプト(管理者)で実行する。
auditpol.exe /set /subcategory:{0CCE9222-69AE-11D9-BED3-505054503030} /failure:enable /success:enable
1-2.secpol を使用した “セキュリティ監査の生成” 権限のアカウントへの許可
ローカルセキュリティポリシーを開いて「セキュリティ監査の生成」を編集する。

SQL Server インスタンスを実行しているユーザーを追加する。
先に「SQL Server 構成マネージャー」を開いて SQL Server の「ログオン」列にある実行ユーザーを確認し、そのユーザーを「セキュリティ監査の生成」に追加する。終わったらサーバーを再起動すること。

2.監査を作る
監査ログの出力先をセキュリティログに向ける。あとは適当に設定。


終わったら監査を右クリックして有効化する。

3.サーバー監査の仕様
3-1.設定
サーバーに関する監査ログの設定。以下から設定する。

ここで何のアクションをログに出すかを決める。「監査」は2で作った監査を指定。

監査アクションの項目と説明を、いろんなサイトやCopilotの力を借りてExcelにまとめてみた。よかったらどうぞ。
3-2.動作確認
試しに「FAILED_LOGIN_GROUP」(ログインの失敗)で動作確認してみる。
SQL Server 認証で適当なパスワードを入れ、認証に失敗させる。

するとセキュリティログに書かれる。
「action_id : LGIF」がアクションの種類らしい。「LoGIn Failed」(大文字の部分)ということか?

4.データベース監査の仕様
4-1.設定
データベース監査ログはサーバー監査ログと違い、データベースごとに設定する必要がある。
監査したいデータベースのセキュリティから設定する。

設定はサーバー監査の仕様と似ている。データベースなので「INSERT」や「UPDATE」といったコマンドレベルの実行ログが取れる。
他はサーバー監査の仕様と同じアクションが並ぶが、これは監査ログが「サーバー」>「データベース」という階層構造で管理されているのが理由らしいがよくわからん。とりあえず「INSERT」や「DELETE」といったテーブルに対するアクションを監査することにする。

作成したら有効化


4-2.動作確認
行を追加してみる

INSERTされたログが出力される。

4-3.めんどくさいところ
データベース監査の仕様を追加するとき、一見、複数のデータベースが指定できるように見える。

でもログに出力されるのは、最初にチェックしたデータベースだけ。
つまり複数のデータベースに対して設定できず、個別に1行ずつデータベースを指定しなければならない。

