SQL Server 監査について
SQL Server のインスタンスや SQL Server データベースの監査では、システムで発生するイベントの追跡およびログ記録が行われます。SQL Server で使用できる監査の方法はいくつかあります (「監査 (データベース エンジン)」を参照)。SQL Server 2008 Enterprise 以降では、SQL Server 監査を使用して自動監査を設定することもできます。
SQL Server では、個々のインストール環境についての政府や標準による要件に応じて、複数のレベルの監査を使用できます。SQL Server 監査には、サーバーおよびデータベースのさまざまなオブジェクトの監査を有効化、保存、および表示するためのツールとプロセスが用意されています。
サーバー監査アクション グループをインスタンスごとに、データベース監査アクション グループまたはデータベース監査アクションをデータベースごとに、それぞれ記録できます。監査可能なアクションが検出されるたびに監査イベントが発生します。
SQL Server 監査のコンポーネント
監査では、複数の要素が、サーバー アクションやデータベース アクションの特定のグループのための 1 つのパッケージに組み合わされています。レポート定義がグラフィックやデータ要素と組み合わされてレポートが生成されるのと同様に、SQL Server 監査の複数のコンポーネントが組み合わされて、監査と呼ばれる出力が生成されます。
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 XP では、セキュリティ ログへの書き込みは実行できません)。定期的にログをレビューおよびアーカイブして、ターゲットに追加のレコードを書き込むための十分なスペースを確保しておく必要があります。
重要 |
---|
Windows アプリケーション イベント ログの読み取りおよび書き込みは、認証されているユーザーならだれでも行うことができます。アプリケーション イベント ログでは、Windows セキュリティ イベント ログほど高いアクセス許可は要求されません。したがって、Windows セキュリティ イベント ログに比べてセキュリティが低くなります。 |
Windows セキュリティ ログへの書き込みを行うには、"セキュリティ監査の生成" ポリシーに SQL Server サービス アカウントを追加する必要があります。既定では、ローカル システム、ローカル サービス、およびネットワーク サービスがこのポリシーに追加されています。この設定は、セキュリティ ポリシー スナップイン (secpol.msc) を使用して構成できます。さらに、"オブジェクト アクセスの監査" セキュリティ ポリシーを、"成功" と "失敗" の両方について有効にする必要があります。この設定は、セキュリティ ポリシー スナップイン (secpol.msc) を使用して構成できます。Windows Vista または Windows Server 2008 では、コマンド ラインから監査ポリシー プログラム (AuditPol.exe) を使用して、より細かい application generated ポリシーを設定できます。Windows セキュリティ ログへの書き込みを有効にする手順の詳細については、「サーバー監査イベントをセキュリティ ログに書き込む方法」を参照してください。Auditpol.exe プログラムの詳細については、サポート技術情報の記事 921469「グループ ポリシーを使用して、Windows Server 2003 ドメインまたは Windows 2000 ドメインにある Windows Vista クライアント コンピューターのセキュリティの監査の詳細設定を構成する方法」を参照してください。Windows イベント ログは、すべての Windows オペレーティング システムで使用できます。Windows イベント ログの詳細については、「イベント ビューアーの概要」を参照してください。監査でより厳密なアクセス許可が必要な場合は、バイナリ ファイル ターゲットを使用します。
改ざんを防止するために監査情報をファイルに保存している場合、次の方法でそのファイルの場所へのアクセスを制限できます。
SQL Server サービス アカウントには、読み取り権限と書き込み権限の両方が必要です。
通常、監査管理者には、読み取り権限と書き込み権限が必要です。これは、監査管理者が監査ファイルを管理 (他の共有への監査ファイルのコピー、監査ファイルのバックアップなど) するための Windows アカウントであることを前提としています。
監査ファイルの読み取りが許可されている監査リーダーには、読み取り権限が必要です。
データベース エンジンがファイルへの書き込みを行っているときでも、他の Windows ユーザーは、権限を持っていれば、監査ファイルを読み取ることができます。排他ロックを取得すると読み取り操作が行われないようになりますが、データベース エンジンでは排他ロックを取得しません。
データベース エンジンは監査ファイルにアクセスできるため、CONTROL SERVER 権限を持っている SQL Server ログインは、データベース エンジンを利用して監査ファイルにアクセスできます。監査ファイルの読み取りを行っているユーザーを記録するには、master.sys.fn_get_audit_file に監査を定義します。これにより、SQL Server を介して監査ファイルにアクセスした、CONTROL SERVER 権限を持つログインが記録されます。
監査管理者が別の場所に監査ファイルをコピーする場合 (アーカイブ用など)、新しい場所に対する ACL は、次の権限に限定する必要があります。
監査管理者 – 読み取り/書き込み
監査リーダー – 読み取り
監査管理者または監査リーダーしかアクセスしない、別の SQL Server インスタンス (SQL Server Express のインスタンスなど) から監査レポートを作成することをお勧めします。レポート作成用に別のデータベース エンジンのインスタンスを使用することで、許可されていないユーザーによる監査レコードへのアクセスを防ぐことができます。
Windows BitLocker ドライブ暗号化または Windows 暗号化ファイル システムを使用して監査ファイルが格納されているフォルダーを暗号化することにより、許可されていないアクセスに対する保護を強化することができます。
ターゲットに書き込まれる監査レコードの詳細については、「SQL Server 監査レコード」を参照してください。
SQL Server 監査の使用の概要
監査は、SQL Server Management Studio または Transact-SQL を使用して定義することができます。監査を作成して有効にすると、ターゲットがエントリを受け取るようになります。
Windows イベント ログを閲覧するには、Windows のイベント ビューアー ユーティリティを使用します。ファイル ターゲットの場合は、SQL Server Management Studio の [ログ ファイルの表示] か、fn_get_audit_file 関数を使用して、対象のファイルを閲覧できます。
監査の作成および使用の一般的な手順は次のとおりです。
監査を作成し、ターゲットを定義します。
監査にマップするサーバー監査の仕様またはデータベース監査の仕様を作成します。その監査の仕様を有効にします。
監査を有効にします。
Windows イベント ビューアー、[ログ ファイルの表示]、または fn_get_audit_file 関数を使用して、監査イベントを閲覧します。
監査機能の使用に関する SQL Server Management Studio および Transact-SQL の例については、「SQL Server 監査の操作方法に関するトピック」を参照してください。
注意事項
監査の開始時にエラーが発生すると、サーバーが起動しなくなります。その場合にサーバーを起動するには、コマンド ラインで –f オプションを使用します。
監査に対して ON_FAILURE=SHUTDOWN が指定されているために監査エラーによってサーバーがシャットダウンしたり起動しなくなったりすると、MSG_AUDIT_FORCED_SHUTDOWN イベントがログに書き込まれます。シャットダウンはこの設定が初めて検出されたときに生じるため、このイベントが書き込まれるのは 1 回だけです。このイベントは、シャットダウンを引き起こした監査のエラー メッセージの後に書き込まれます。監査によって引き起こされるシャットダウンを回避するには、–m フラグを使用して SQL Server をシングル ユーザー モードで起動します。シングル ユーザー モードで起動すると、ON_FAILURE=SHUTDOWN が指定されているすべての監査がダウングレードされて、そのセッションでは ON_FAILURE=CONTINUE として実行されます。–m フラグを使用して SQL Server を起動すると、エラー ログに MSG_AUDIT_SHUTDOWN_BYPASSED メッセージが書き込まれます。
サービスのスタートアップ オプションの詳細については、「SQL Server サービスのスタートアップ オプションの使用」を参照してください。
定義済みの監査を含むデータベースのアタッチ
監査の仕様が含まれていて、サーバーに存在しない GUID が指定されているデータベースをアタッチすると、孤立した監査の仕様が発生します。この場合は、一致する GUID を持つ監査がサーバー インスタンスに存在しないため、監査イベントは記録されません。この状況を修正するには、ALTER DATABASE AUDIT SPECIFICATION コマンドを使用して、孤立した監査の仕様を既存のサーバー監査に関連付けます。または、CREATE SERVER AUDIT コマンドを使用して、指定されている GUID を持つ新しい Server 監査を作成します。
監査の仕様が定義されているデータベースを、SQL Server 監査をサポートしていない別のエディションの SQL Server (SQL Server Express など) にアタッチすることもできますが、監査イベントは記録されません。
データベース ミラーリングと SQL Server 監査
データベース監査の仕様が定義されていて、データベース ミラーリングを使用するデータベースには、そのデータベース監査の仕様が含まれます。ミラー化された SQL インスタンスでも正しく機能するようにするには、以下の項目を構成する必要があります。
データベース監査の仕様が監査レコードを書き込めるようにするには、同じ GUID を持つ監査をミラー サーバーに作成する必要があります。これは、CREATE AUDIT WITH GUID=<GUID from source Server Audit> コマンドを使用して構成できます。
バイナリ ファイル ターゲットの場合は、監査記録が書き込まれる場所に対する適切なアクセス許可がミラー サーバーのサービス アカウントに必要です。
Windows イベント ログ ターゲットの場合は、ミラー サーバーが配置されているコンピューターのセキュリティ ポリシーで、セキュリティ イベント ログまたはアプリケーション イベント ログへのサービス アカウントのアクセスが許可されている必要があります。
管理者の監査
sysadmin 固定サーバー ロールのメンバーは、各データベースの dbo ユーザーとして認識されます。管理者のアクションを監査するには、dbo ユーザーのアクションを監査します。