SQL Server データベース エンジンまたは個々のデータベースのインスタンスを監査するには、データベース エンジンで発生するイベントを追跡し、ログに記録します。 SQL Server 監査では、サーバー レベルのイベントのためのサーバー監査仕様とデータベース レベルのイベントのためのデータベース監査仕様を含めることができる、サーバー監査を作成できます。 監査イベントは、イベント ログまたは監査ファイルへ書き込むことができます。
インストールに対する政府や標準の要件に応じて、SQL Server には複数のレベルの監査があります。 SQL Server 監査では、さまざまなサーバーおよびデータベース オブジェクトで監査を有効化、格納、表示するために必要なツールとプロセスが提供されます。
サーバー監査アクション グループをインスタンスごとに、データベース監査アクション グループまたはデータベース監査アクションをデータベースごとに、それぞれ記録できます。 監査イベントは、監査可能なアクションが発生するたびに発生します。
SQL Server のすべてのエディションでサーバー レベルの監査がサポートされます。 データベース レベルの監査は、Enterprise、Developer、Evaluation の各エディションに限定されます。 詳しくは「 Features Supported by the Editions of SQL Server 2014」をご覧ください。
SQL Server 監査コンポーネント
監査 では、複数の要素が、サーバー アクションやデータベース アクションの特定のグループのための 1 つのパッケージに組み合わされています。 レポート定義がグラフィックやデータ要素と組み合わされてレポートが生成されるように、SQL Server 監査の複数のコンポーネントが組み合わされて、監査と呼ばれる出力が生成されます。
SQL Server 監査では、拡張イベント を使用して監査を作成します。 拡張イベントの詳細については、「 拡張イベント」を参照してください。
SQL Server 監査
SQL Server 監査 オブジェクトは、監視するサーバー レベルまたはデータベース レベルのアクションおよびアクションのグループの 1 つのインスタンスを収集します。 監査は SQL Server インスタンス レベルで行われます。 SQL Server のインスタンスごとに複数の監査を使用できます。
監査を定義する場合、結果を出力する場所を指定します。 これが監査の対象です。 監査は 無効 な状態で作成され、アクションは自動的には監査されません。 監査を有効にすると、監査先が監査データを受け取るようになります。
サーバー監査の仕様
サーバー監査の仕様 オブジェクトは監査に属しています。 サーバー監査の仕様は監査ごとに 1 つ作成できます。これは、サーバー監査の仕様も監査も SQL Server インスタンスのスコープで作成されるためです。
サーバー監査の仕様は、拡張イベント機能によって発生するさまざまなサーバー レベルのアクション グループを収集します。 サーバー監査の仕様には、 監査アクション グループ を含めることができます。 監査アクション グループとは、データベース エンジン で発生するアトミック イベントであるアクションの定義済みのグループです。 これらのアクションは監査に送信されて、ターゲットに記録されます。
サーバー レベルの監査アクション グループについては、「 SQL Server 監査アクション グループとアクション」を参照してください。
データベース監査の仕様
Database Audit Specification オブジェクトも、SQL Server 監査に属しています。 各監査では、SQL Server データベースごとに 1 つのデータベース監査の仕様を作成できます。
データベース監査の仕様は、拡張イベント機能によって発生するデータベース レベルの監査アクションを収集します。 データベース監査の仕様には、監査アクション グループまたは監査イベントを追加できます。 監査イベントとは、SQL Server エンジンで監査できるアトミックなアクションです。 監査アクション グループ とは、アクションの定義済みのグループです。 これらはいずれも、SQL Server データベースのスコープにあります。 これらのアクションは監査に送信されて、ターゲットに記録されます。 システム ビューなどのサーバー スコープ オブジェクトは、ユーザー データベース監査仕様には含めないでください。
データベース レベルの監査アクション グループと監査アクションについては、「 SQL Server 監査アクション グループとアクション」のトピックで説明されています。
目標
監査の結果はターゲットに送信されます。ターゲットには、ファイル、Windows セキュリティ イベント ログ、または Windows アプリケーション イベント ログを使用できます。 ターゲットが追加のレコードを書き込むのに十分な領域があることを確認するには、ログを定期的に確認してアーカイブする必要があります。
重要
Windows アプリケーション イベント ログの読み取りおよび書き込みは、認証されているユーザーならば、だれでも行うことができます。 アプリケーション イベント ログでは、Windows セキュリティ イベント ログほど高いアクセス許可は要求されません。したがって、Windows セキュリティ イベント ログに比べてセキュリティが低くなります。
Windows セキュリティ ログに書き込むには、SQL Server サービス アカウントをセキュリティ監査の生成ポリシーに追加する必要があります。 既定では、ローカル システム、ローカル サービス、およびネットワーク サービスがこのポリシーに追加されています。 この設定は、セキュリティ ポリシー スナップイン (secpol.msc) を使用して構成できます。 さらに、 オブジェクト アクセスの監査 セキュリティ ポリシーを、 成功 と 失敗の両方について有効にする必要があります。 この設定は、セキュリティ ポリシー スナップイン (secpol.msc) を使用して構成できます。 Windows Vista または Windows Server 2008 では、監査ポリシー プログラム (AuditPol.exe)
を使用して、コマンド ラインからより詳細なアプリケーション生成ポリシーを設定できます。 Windows セキュリティ ログへの書き込みを有効にする手順の詳細については、「 セキュリティ ログへの SQL サーバー監査イベントの書き込み」を参照してください。 Auditpol.exe プログラムの詳細については、 グループ ポリシーを使用して詳細なセキュリティの監査を構成する方法に関するサポート技術情報の記事 921469 を参照してください。 Windows イベント ログは、すべての Windows オペレーティング システムで使用できます。 Windows イベント ログの詳細については、「 イベント ビューアーの概要」を参照してください。 監査でより厳密なアクセス許可が必要な場合は、バイナリ ファイル ターゲットを使用します。
監査情報をファイルに保存する場合、改ざんを防ぐために、次の方法でファイルの場所へのアクセスを制限できます。
SQL Server サービス アカウントには、読み取り権限と書き込み権限の両方が必要です。
通常、監査管理者には、読み取り権限と書き込み権限が必要です。 これは、監査管理者が監査ファイルを管理 (他の共有への監査ファイルのコピー、監査ファイルのバックアップなど) するための Windows アカウントであることを前提としています。
監査ファイルの読み取りが許可されている監査リーダーには、読み取り権限が必要です。
データベース エンジンがファイルへの書き込みを行っているときでも、他の Windows ユーザーは、権限を持っていれば、監査ファイルを読み取ることができます。 データベース エンジンは、読み取り操作を妨げる排他ロックを受け取りません。
データベース エンジンはファイルにアクセスできるため、CONTROL SERVER 権限を持つ SQL Server ログインはデータベース エンジンを使用して監査ファイルにアクセスできます。 監査ファイルを読み取っているユーザーを記録するには、master.sys.fn_get_audit_file の監査を定義します。 これにより、SQL Server を介して監査ファイルにアクセスした、CONTROL SERVER 権限を持つログインが記録されます。
監査管理者がファイルを別の場所にコピーする場合 (アーカイブ目的など)、新しい場所の ACL を次のアクセス許可に減らす必要があります。
監査管理者 - 読み取り/書き込み
監査リーダー - 読み取り
監査管理者または監査閲覧者のみがアクセスできる SQL Server Express のインスタンスなど、SQL Server の別のインスタンスから監査レポートを生成することをお勧めします。 レポート作成用に別のデータベース エンジン のインスタンスを使用することで、許可されていないユーザーによる監査レコードへのアクセスを防ぐことができます。
Windows BitLocker ドライブ暗号化または Windows 暗号化ファイル システムを使用して、監査ファイルが格納されているフォルダーを暗号化することで、承認されていないアクセスに対する追加の保護を提供できます。
ターゲットに書き込まれる監査レコードの詳細については、「 SQL Server Audit Records」を参照してください。
SQL Server 監査の使用の概要
監査は、SQL Server Management Studio または Transact-SQL を使用して定義できます。 監査を作成して有効にすると、ターゲットがエントリを受け取るようになります。
Windows イベント ログを閲覧するには、Windows の イベント ビューアー ユーティリティを使用します。 ファイル ターゲットの場合、SQL Server Management Studio のログ ファイル ビューアーまたは fn_get_audit_file 関数を使用してターゲット ファイルを読み取ることができます。
監査の作成および使用の一般的な手順は次のとおりです。
監査を作成し、ターゲットを定義します。
監査にマップするサーバー監査の仕様またはデータベース監査の仕様を作成します。 監査仕様を有効にします。
監査を有効にします。
Windows イベント ビューアー、 ログ ファイル ビュー、または fn_get_audit_file 関数を使用して監査イベントを読み取ります。
詳細については、「 サーバー監査およびサーバー監査の仕様を作成する 」および「 サーバー監査およびデータベース監査の仕様を作成する」を参照してください。
考慮事項
監査の開始時にエラーが発生した場合、サーバーは起動しません。 その場合にサーバーを起動するには、コマンド ラインで -f オプションを使用します。
監査に ON_FAILURE=SHUTDOWN が指定されているために、監査エラーによってサーバーがシャットダウンされるか起動しない場合、MSG_AUDIT_FORCED_SHUTDOWN イベントがログに書き込まれます。 シャットダウンは、この設定の最初の検出時に発生するため、イベントは 1 回書き込まれます。 このイベントは、シャットダウンを引き起こした監査のエラー メッセージの後に書き込まれます。 管理者は、-m フラグを使用して SQL Server をシングル ユーザー モードで起動することで、監査に伴うシャットダウンを回避することができます。 シングル ユーザー モードで開始する場合は、ON_FAILURE=CONTINUE としてそのセッションで実行するように ON_FAILURE=SHUTDOWN が指定されている監査をダウングレードします。 -m フラグを使用して SQL Server を起動すると、MSG_AUDIT_SHUTDOWN_BYPASSED メッセージがエラー ログに書き込まれます。
スタートアップ オプションの詳細については、「 データベース エンジン サービスのスタートアップ オプション」を参照してください。
定義済みの監査を含むデータベースのインポート
監査仕様を持ち、サーバー上に存在しない GUID を指定するデータベースをアタッチすると、 孤立した 監査仕様が発生します。 GUID が一致する監査はサーバー インスタンスに存在しないため、監査イベントは記録されません。 この状況を修正するには、ALTER DATABASE AUDIT SPECIFICATION コマンドを使用して、孤立した監査の仕様を既存のサーバー監査に関連付けます。 または、CREATE SERVER AUDIT コマンドを使用して、指定されている GUID を持つ新しい Server 監査を作成します。
監査仕様が定義されているデータベースを、SQL Server Express などの SQL Server 監査をサポートしていない別のエディションの SQL Server にアタッチできますが、監査イベントは記録されません。
データベース ミラーリングと SQL Server 監査
データベース監査の仕様が定義されていて、データベース ミラーリングを使用するデータベースには、そのデータベース監査の仕様が含まれます。 ミラー化された SQL インスタンスでも正しく機能するようにするには、以下の項目を構成する必要があります。
データベース監査の仕様が監査レコードを書き込めるようにするには、同じ GUID を持つ監査をミラー サーバーに作成する必要があります。 これは、ソース サーバー監査からの CREATE AUDIT WITH GUID
=
<GUID> コマンドを使用して構成できます。バイナリ ファイル ターゲットの場合は、監査記録が書き込まれる場所に対する適切なアクセス許可がミラー サーバーのサービス アカウントに必要です。
Windows イベント ログ ターゲットの場合、ミラー サーバーが配置されているコンピューター上のセキュリティ ポリシーでは、セキュリティまたはアプリケーション イベント ログへのサービス アカウント アクセスが許可されている必要があります。
監査管理者
sysadmin
固定サーバー ロールのメンバーは、各データベースの dbo ユーザーとして識別されます。 管理者のアクションを監査するには、 dbo ユーザーのアクションを監査します。
Transact-SQL を使用した監査の作成と管理
DDL ステートメント、動的管理ビューと関数、およびカタログ ビューを使用して、SQL Server 監査のすべての機能を実装できます。
データ定義言語ステートメント
以下の DDL ステートメントを使用して、監査の仕様を作成、変更、および削除することができます。
権限の変更 | CREATE SERVER AUDIT |
ALTER DATABASE AUDIT SPECIFICATION | サーバー監査仕様の作成 |
ALTER SERVER AUDIT | データベース監査仕様を削除 |
サーバー監査仕様の変更 | DROP SERVER AUDIT サーバー監査を削除する |
データベース監査仕様を作成 | サーバー監査仕様の削除 |
動的ビューと関数
次の表に、SQL Server 監査に使用できる動的ビューと関数の一覧を示します。
動的ビューと関数 | 説明 |
---|---|
sys.dm_audit_actions | 監査ログで報告される可能性のあるすべての監査アクション、および SQL Server 監査の一部として構成できるすべての監査アクション グループに対して 1 つの行を返します。 |
sys.dm_server_audit_status | 監査の現在の状態に関する情報を提供します。 |
sys.dm_audit_class_type_map | 監査ログのclass_type フィールドをsys.dm_audit_actionsのclass_desc フィールドにマップするテーブルを返します。 |
fn_get_audit_file | サーバー監査で作成された監査ファイルからの情報を返します。 |
カタログ ビュー
次の表に、SQL Server 監査に使用できるカタログ ビューの一覧を示します。
カタログ ビュー | 説明 |
---|---|
sys.database_監査仕様 | サーバー インスタンス上の SQL Server 監査に含まれるデータベース監査仕様に関する情報を含みます。 |
sys.database_audit_specification_details | すべてのデータベースについてサーバー インスタンス上の SQL Server 監査に含まれる、データベース監査仕様に関する情報を含みます。 |
sys.server_audits | サーバー インスタンス内の各 SQL Server 監査に関する行が 1 つ含まれています。 |
sys.server_audit_specifications | サーバー インスタンス上の SQL Server 監査に含まれるサーバー監査仕様に関する情報を含みます。 |
sys.server_audit_specifications_details | サーバー インスタンス上の SQL Server 監査に含まれるサーバー監査仕様の詳細 (アクション) に関する情報を含みます。 |
サーバーファイル監査 | サーバー インスタンス上の SQL Server 監査に含まれるファイル監査の種類に関する拡張情報を含みます。 |
権限
SQL Server 監査の各機能とコマンドには、個別の権限要件があります。
サーバー監査またはサーバー監査の仕様を作成、変更、削除する場合、サーバー プリンシパルには、ALTER ANY SERVER AUDIT または CONTROL SERVER の権限が必要です。 データベース監査の仕様を作成、変更、削除する場合、データベース プリンシパルには、ALTER ANY DATABASE AUDIT 権限、またはデータベースに対する ALTER 権限か CONTROL 権限が必要です。 さらに、プリンシパルには、データベースに接続する権限、または ALTER ANY SERVER AUDIT 権限か CONTROL SERVER 権限が必要です。
特に指定しない限り、カタログ ビューを表示するには、プリンシパルに次のいずれかが必要です。
sysadmin 固定サーバーロールのメンバーシップ。
サーバー制御権限。
VIEW SERVER STATE 権限について。
ALTER ANY AUDIT 権限。
VIEW AUDIT STATE 権限 (sys.server_audits カタログ ビューへのプリンシパル アクセス権のみを付与します)。
動的管理ビューを使用するには、プリンシパルに VIEW SERVER STATE または ALTER ANY AUDIT 権限が必要です。
アクセス権および権限を付与する方法の詳細については、「GRANT (Transact-SQL)」を参照してください。
注意事項
sysadmin ロールのプリンシパルによって監査コンポーネントが勝手に書き換えられることも、db_owner ロールのプリンシパルによってデータベース内の監査の仕様が勝手に書き換えられることもないとはいえません。 SQL Server 監査では、監査の仕様を作成または変更するログオンが、ALTER ANY DATABASE AUDIT 以上の権限を持っているかどうかが検証されます。 ただし、データベースにアタッチするときには検証は行われません。 すべてのデータベース監査の仕様は、sysadmin ロールまたは db_owner ロールのプリンシパルと同等の信頼性しかないと見なす必要があります。
関連タスク
セキュリティ ログへの SQL Server 監査イベントの書き込み
監査に密接に関連するトピック
[サーバーのプロパティ] ([セキュリティ] ページ)
SQL Server のログインの監査をオンにする方法について説明します。 監査レコードは Windows アプリケーション ログに格納されます。
c2 audit mode サーバー構成オプション
SQL Server の C2 セキュリティ準拠の監査モードについて説明します。
セキュリティ監査イベントカテゴリ (SQL Server Profiler)
SQL Server Profiler で使用できる監査イベントについて説明します。 詳細については、「 SQL Server Profiler」を参照してください。
SQL トレース (SQL Trace)
SQL トレースを使用して、SQL Server Profiler からではなく、ユーザー独自のアプリケーションからトレースを手動で作成する方法について説明します。
DDL トリガー
データ定義言語 (DDL) トリガーを使用してデータベースの変更を追跡する方法について説明します。
Microsoft TechNet: SQL Server TechCenter: SQL Server 2005 - セキュリティと保護
SQL Server セキュリティに関する最新の情報を提供します。