データベースシステムにおける データガバナンス と 監査 は、企業のセキュリティやコンプライアンスを確保するために不可欠です。特に SQL Server を使用する環境では、SQL Server Audit を導入することで、データベースの操作履歴を詳細に記録し、不正アクセスや意図しないデータ変更を検知できます。
本記事では、SQL Server Audit の基本概念、設定手順、実際の運用方法について解説します。
SQL Server Auditとは?
SQL Server Audit とは、Microsoft SQL Server に組み込まれた監査機能で、データベースの操作履歴を記録し、セキュリティ対策やコンプライアンスの要件を満たすために利用されます。
SQL Server Audit の主な目的
- データガバナンスの強化
- どのユーザーが、どのデータに対して、どのような操作を行ったかを追跡
- コンプライアンス対応
- GDPR(一般データ保護規則)、SOX法(サーベンス・オクスリー法)、HIPAA(医療保険の相互運用性と責任に関する法律)などの規制対応
- セキュリティインシデントの調査
- 不正アクセスやデータ漏洩の調査のための証跡として活用
SQL Server Auditの基本概念
SQL Server Auditは、サーバーやデータベースレベルで発生するイベントを監視・記録する機能です。監査ログには、以下のようなイベントを記録できます。
- 特定のオブジェクトへのアクセス(SELECT含む)
- ログインの成功・失敗
- データベースへのアクセス
- テーブルの変更(INSERT、UPDATE、DELETE)
SQL Server Audit の構成要素
SQL Server Audit は、次の 3 つの主要なコンポーネントで構成されます。
コンポーネント | 説明 |
---|---|
SQL Server Audit | 監査ログの収集を行う親オブジェクト。監査ログの出力先(ファイル、セキュリティログ、アプリケーションログ)を設定する。 |
Server Audit Specification | サーバーレベルの監査対象。サーバーレベルのイベント(ログイン試行、権限変更など)を記録する。 |
Database Audit Specification | データベースレベルの監査対象。特定のデータベース内のイベント(データ変更、アクセスログなど)を記録する。 |
SQL Server Audit の設定手順
SQL Server Audit の設定は、次の 4 つのステップで行います。
ステップ 1: SQL Server Audit の作成
まず、監査データを保存する Audit オブジェクト を作成します。
T-SQL コマンド
USE master;
GO
CREATE SERVER AUDIT Audit_DatabaseOperations
TO FILE (FILEPATH = 'C:\AuditLogs\', MAXSIZE = 10 MB, ROLLOVER = ON);
GO
ALTER SERVER AUDIT Audit_DatabaseOperations WITH (STATE = ON);
GO
- FILEPATH で監査ログの保存先を指定
- MAXSIZE は最大ファイルサイズ(10MB)
- ROLLOVER は監査ログのローテーションを有効化
ステップ 2: Server Audit Specification の作成
サーバーレベルでの監査対象を設定します。
T-SQL コマンド
USE master;
GO
CREATE SERVER AUDIT SPECIFICATION ServerAuditSpec
FOR SERVER AUDIT Audit_DatabaseOperations
ADD (FAILED_LOGIN_GROUP),
ADD (SUCCESSFUL_LOGIN_GROUP);
GO
ALTER SERVER AUDIT SPECIFICATION ServerAuditSpec WITH (STATE = ON);
GO
- ログイン成功/失敗の監査を追加
ステップ 3: Database Audit Specification の作成
データベースレベルの監査対象を設定します。
T-SQL コマンド
USE MyDatabase;
GO
CREATE DATABASE AUDIT SPECIFICATION DatabaseAuditSpec
FOR SERVER AUDIT Audit_DatabaseOperations
ADD (SELECT, INSERT, UPDATE, DELETE ON SCHEMA::dbo BY public);
GO
ALTER DATABASE AUDIT SPECIFICATION DatabaseAuditSpec WITH (STATE = ON);
GO
- SELECT, INSERT, UPDATE, DELETE の監査を追加
- public ユーザー(すべてのユーザー)を対象
ステップ 4: 監査ログの確認
監査ログを確認するには、次のクエリを実行します。
SELECT * FROM sys.fn_get_audit_file ('C:\AuditLogs\*', DEFAULT, DEFAULT);
- 監査ログファイルを取得
演習問題
問題 1
監査ログを SQL Server Management Studio (SSMS) で確認する方法を説明しなさい。
解答例
解答 1
- SSMS を開く
- [セキュリティ] → [監査] に移動
- sys.fn_get_audit_file を使用してログを取得
まとめ
本記事では、SQL Server Audit の基本概念から設定手順、運用管理までを解説 しました。データガバナンスを強化し、コンプライアンス対応を進めるために、適切な監査機能の導入が重要です。
SQL Server Audit を活用し、安全なデータベース管理を実現しましょう!