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行ずつデータベースを指定しなければならない。

\ 最新情報をチェック /