SQL Server Audit (Database Engine)
- 01/01/2020
- 13 minutes to read
-
- D
- v
- M
- M
- D
-
+8
Applies to: SQL Server(サポートされているすべてのバージョン)Azure SQLマネージインスタンス
SQL Serverデータベースエンジンまたは個々のデータベースのインスタンスの監査には、デー SQL Server監査では、サーバーレベルのイベントのサーバー監査仕様と、データベースレベルのイベントのデータベース監査仕様を含むサーバー監査を作成できます。 監査されたイベントは、イベントログまたは監査ファイルに書き込むことができます。
重要
Azure SQLマネージインスタンスでは、このT-SQL機能には特定の動作が変更されています。 すべてのT-SQL動作の変更の詳細については、「Azure SQL Managed Instance T-SQLとSQL Serverの違い」を参照してください。
インストールの政府または標準の要件に応じて、SQL Serverの監査にはいくつかのレベルがあります。 SQL Server Auditには、さまざまなサーバーおよびデータベースオブジェクトの監査を有効化、保存、および表示するために必要なツールとプロセスが用意されています。
インスタンスごとにサーバー監査アクショングループを記録し、データベース監査アクショングループまたはデータベース監査アクショ Auditイベントは、監査可能なアクションが発生するたびに発生します。
すべてのエディションのSQL Serverでは、サーバーレベルの監査がサポートされています。 すべてのエディションでは、SQL Server2016以降のデータベースレベルの監査がサポートされています(13.エックス)”を発表しました。 それ以前は、データベースレベルの監査はEnterprise edition、Developer edition、およびEvaluation editionに限定されていました。 詳細については、”SQL Server2016のエディションでサポートされている機能”を参照してください。
注
このトピックはSQL Serverに適用されます。 SQLデータベースについては、”SQLデータベース監査の概要”を参照してください。
SQL Server監査コンポーネント
監査は、サーバーアクションまたはデータベースアクションの特定のグループに対して、複数の要素を単一のパッケージに組み合 SQL Server auditのコンポーネントは、グラフィックス要素とデータ要素を組み合わせたレポート定義がレポートを生成するのと同じように、監査と呼ばれる出力を
SQL Server auditでは、拡張イベントを使用して監査を作成します。 拡張イベントの詳細については、”拡張イベント”を参照してください。
SQL Server監査
SQL Server監査オブジェクトは、サーバーレベルまたはデータベースレベルのアクションの単一インスタンスと、監視するアクションのグループを収集します。 監査はSQL Serverインスタンスレベルです。 SQL Serverインスタンスごとに複数の監査を行うことができます。
監査を定義するときは、結果の出力の場所を指定します。 これが監査の宛先です。 監査は無効な状態で作成され、アクションは自動的に監査されません。 監査が有効になると、監査宛先は監査からデータを受信します。
サーバー監査仕様
サーバー監査仕様オブジェクトは監査に属します。 両方ともSQL Serverインスタンススコープで作成されるため、監査ごとに1つのサーバー監査仕様を作成できます。
サーバー監査仕様では、拡張イベント機能によって生成された多くのサーバーレベルのアクショングループが収集されます。 サーバー監査仕様に監査アクショングループを含めることができます。 監査アクショングループは、データベースエンジンで発生するアトミックイベントである、事前定義されたアクショングループです。 これらのアクションは監査に送信され、監査はそれらをターゲットに記録します。
サーバーレベルの監査アクショングループについては、”SQL Server監査アクショングループとアクション”を参照してください。
データベース監査仕様
データベース監査仕様オブジェクトは、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 Server2008では、監査ポリシープログラム(AuditPol.exe)。 Windowsセキュリティログへの書き込みを有効にする手順の詳細については、”SQL Server監査イベントをセキュリティログに書き込む”を参照してください。 Auditpolの詳細については。exeプログラムについては、サポート技術情報の記事921469″グループポリシーを使用して詳細なセキュリティ監査を構成する方法”を参照してください。 Windowsイベントログは、Windowsオペレーティングシステムに対してグローバルです。 Windowsイベントログの詳細については、”イベントビューアーの概要”を参照してください。 監査に対するより正確な権限が必要な場合は、バイナリファイルターゲットを使用します。
監査情報をファイルに保存するときに、改ざんを防ぐために、次の方法でファイルの場所へのアクセスを制限できます:
-
SQL Serverサービスアカウントには、読み取り権限と書き込み権限の両方が必要です。
-
監査管理者には、通常、読み取りおよび書き込み権限が必要です。 これは、監査管理者が、異なる共有へのコピー、バックアップなどの監査ファイルの管理のためのWindowsアカウントであることを前提としています。
-
監査ファイルの読み取りを許可されている監査リーダーには、読み取り権限が必要です。
データベースエンジンがファイルに書き込んでいる場合でも、他のWindowsユーザーが権限を持っていれば、監査ファイルを読み取ることができます。 データベースエンジンは、読み取り操作を防止する排他ロックを取りません。
データベースエンジンはファイルにアクセスできるため、CONTROL SERVER権限を持つSQL Serverログインでは、データベースエンジンを使用して監査ファイルにアクセスで 監査ファイルを読み取っているユーザーを記録するには、masterで監査を定義します。シスオ…fn_get_audit_file. これにより、SQL Serverを介して監査ファイルにアクセスしたCONTROL SERVER権限を持つログインが記録されます。
監査管理者が(アーカイブなどのために)ファイルを別の場所にコピーする場合は、新しい場所のAclを次のアクセス許可に減らす必要があります:
-
監査管理者-読み取り/書き込み
-
監査リーダー-読み取り
監査管理者または監査リーダーのみがアクセスできるSQL Server Expressのインスタンスなど、SQL Serverの別のインスタンスから監査レポートを生成することをお勧めし レポートにデータベースエンジンの別のインスタンスを使用することで、権限のないユーザーが監査レコードへのアクセスを取得できないようにできます。
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関数を使用して、監査イベントを読み取ります。
詳細については、”サーバー監査およびサーバー監査の仕様の作成”および”サーバー監査およびデータベース監査の仕様の作成”を参照してください。
考慮事項
監査の開始中に障害が発生した場合、サーバーは起動しません。 この場合、コマンドラインで-fオプションを使用してサーバーを起動できます。
監査にON_FAILURE=SHUTDOWNが指定されているために監査エラーが発生してサーバーがシャットダウンまたは起動しない場合、MSG_AUDIT_FORCED_SHUTDOWNイベントがログに書き込まれます。 シャットダウンはこの設定の最初の検出時に発生するため、イベントは一度に書き込まれます。 このイベントは、シャットダウンの原因となっている監査の失敗メッセージの後に書き込まれます。 管理者は、-mフラグを使用してSQL Serverをシングルユーザーモードで起動することで、監査によるシャットダウンを回避できます。 シングルユーザーモードで起動すると、ON_FAILURE=SHUTDOWNがそのセッションで実行するように指定されている監査は、ON_FAILURE=CONTINUEとしてダウングレードされます。 -Mフラグを使用してSQL Serverを起動すると、MSG_AUDIT_SHUTDOWN_BYPASSEDメッセージがエラーログに書き込まれます。
サービスの起動オプションの詳細については、”データベースエンジンサービスの起動オプション”を参照してください。
監査が定義されたデータベースのアタッチ
監査仕様を持ち、サーバー上に存在しないGUIDを指定するデータベースのアタッチは、孤立した監査仕様を引き起こ 一致するGUIDを持つ監査はサーバーインスタンスに存在しないため、監査イベントは記録されません。 この状況を修正するには、ALTER DATABASE AUDIT SPECIFICATIONコマンドを使用して、孤立した監査仕様を既存のサーバー監査に接続します。 または、CREATE SERVER AUDITコマンドを使用して、指定したGUIDを使用して新しいサーバー監査を作成します。
監査仕様が定義されているデータベースを、SQL Server ExpressなどのSQL Server監査をサポートしていないが監査イベントは記録されない別のエディションのSQL Serverに
データベースミラーリングとSQL Server監査
データベース監査仕様が定義され、データベースミラーリングを使用するデータベースには、データベース監査仕様が含まれます。 ミラー化されたSQLインスタンスで正常に動作するには、次の項目を構成する必要があります:
-
データベース監査仕様が監査レコードを書き込むためには、ミラーサーバーに同じGUIDを持つ監査が必要です。 これは、CREATE AUDIT WITH GUID=<GUID from source Server Audit>コマンドを使用して構成できます。
-
バイナリファイルターゲットの場合、ミラーサーバーのサービスアカウントには、監査証跡が書き込まれる場所に対する適切な権限が必要です。
-
Windowsイベントログターゲットの場合、ミラーサーバーが配置されているコンピューター上のセキュリティポリシーで、セキュリティまたはアプリケーショ
監査管理者
sysadmin固定サーバーロールのメンバーは、各データベースでdboユーザーとして識別されます。 管理者のアクションを監査するには、dboユーザーのアクションを監査します。
Transact-SQLを使用した監査の作成と管理
DDLステートメント、動的管理ビューと関数、およびカタログビューを使用して、SQL Server監査のすべての側面を実装できます。
データ定義言語文
次のDDL文を使用して、監査仕様を作成、変更および削除できます:
DDL文 | の説明 |
---|---|
ALTER AUTHORIZATION | は、セキュリティ保護可能なオブジェクトの所有権を変更します。 |
ALTER DATABASE AUDIT SPECIFICATION | は、SQL Server監査機能を使用してデータベース監査仕様オブジェクトを変更します。 |
ALTER SERVER AUDIT | は、SQL Server監査機能を使用してサーバー監査オブジェクトを変更します。 |
ALTER SERVER AUDIT SPECIFICATION | は、SQL Server監査機能を使用して、サーバー監査仕様オブジェクトを変更します。 |
CREATE DATABASE AUDIT SPECIFICATION | SQL Server監査機能を使用して、データベース監査仕様オブジェクトを作成します。 |
CREATE SERVER AUDIT | SQL Server Auditを使用してサーバー監査オブジェクトを作成します。 |
CREATE SERVER AUDIT SPECIFICATION | SQL Server監査機能を使用して、サーバー監査仕様オブジェクトを作成します。 |
DROP DATABASE AUDIT SPECIFICATION | SQL Server監査機能を使用して、データベース監査仕様オブジェクトを削除します。 |
DROP SERVER AUDIT | SQL Server監査機能を使用して、サーバー監査オブジェクトを削除します。 |
DROP SERVER AUDIT SPECIFICATION | SQL Server監査機能を使用して、サーバー監査仕様オブジェクトを削除します。 |
動的ビューと関数
次の表に、SQL Server監査に使用できる動的ビューと関数の一覧を示します。
動的ビューと関数 | 説明 |
---|---|
シスオ…dm_audit_actions | は、監査ログに報告できるすべての監査アクションと、SQL Server監査の一部として構成できるすべての監査アクショングループの行を返します。 |
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監査に使用できるカタログビューを示します。
カタログビュー | 説明 |
---|---|
シスオ…database_audit_specifications | には、サーバーインスタンスのSQL Server監査のデータベース監査仕様に関する情報が含まれています。 |
シスオ…database_audit_specification_details | には、すべてのデータベースのサーバーインスタンスでのSQL Server監査のデータベース監査仕様に関する情報が含まれています。 |
シスオ…server_audits | には、サーバーインスタンスのSQL Server監査ごとに1つの行が含まれています。 |
シスオ…server_audit_specifications | には、サーバーインスタンスのSQL Server監査におけるサーバー監査の仕様に関する情報が含まれています。 |
シスオ…server_audit_specifications_details | には、サーバーインスタンスのSQL Server監査のサーバー監査仕様の詳細(アクション)に関する情報が含まれています。 |
シスオ…server_file_audits | には、サーバーインスタンスのSQL Server監査のファイル監査の種類に関する拡張情報が格納されています。 |
権限
SQL Server監査の各機能とコマンドには、個々の権限要件があります。
サーバー監査またはサーバー監査の仕様を作成、変更、または削除するには、サーバープリンシパルにALTER ANY SERVER AUDITまたはCONTROL SERVER権限が必要です。 データベース監査仕様を作成、変更、または削除するには、データベースプリンシパルにALTER ANY DATABASE AUDIT権限、またはデータベースに対するALTERまたはCONTROL権限が必要です。 また、プリンシパルには、データベースに接続する権限、またはサーバー監査または制御サーバー権限を変更する権限が必要です。
VIEW ANY DEFINITION権限は、サーバーレベルの監査ビューを表示するアクセス権を提供し、VIEW DEFINITIONは、データベースレベルの監査ビューを表示するアクセス権を提供します。 これらの権限を拒否すると、プリンシパルがALTER ANY SERVER AUDITまたはALTER ANY DATABASE AUDIT権限を持っている場合でも、カタログビューを表示する機能が上書きされます。
権限とアクセス許可を付与する方法の詳細については、”GRANT(Transact-SQL)”を参照してください。
注意
Sysadminロールのプリンシパルは任意の監査コンポーネントを改ざんでき、db_ownerロールのプリンシパルはデータベース内の監査仕様を改ざんできます。 SQL Server Auditでは、監査仕様を作成または変更するログオンに少なくともALTER ANY DATABASE AUDIT権限があることが検証されます。 ただし、データベースを接続するときには検証は行われません。 すべてのデータベース監査仕様は、sysadminロールまたはdb_ownerロールのプリンシパルと同じくらい信頼できるものであると想定する必要があります。
サーバー監査とサーバー監査仕様の作成
サーバー監査とデータベース監査仕様の作成
SQL Server監査ログの表示
SQL Server監査イベントをセキュリティログに書き込む
サーバーのプロパティ(セキュリティページ)
SQL Serverのログイン監査を有効にする方法について説明します。 監査レコードは、Windowsアプリケーションログに格納されます。
c2監査モードサーバー構成オプション
は、SQL ServerのC2セキュリティコンプライアンス監査モードについて説明します。
セキュリティ監査イベントカテゴリ(SQL Server Profiler)
SQL Server Profilerで使用できる監査イベントについて説明します。 詳細については、”SQL Server Profiler”を参照してください。
SQL Trace
は、SQL Server Profilerを使用するのではなく、独自のアプリケーション内からSQL Traceを使用してトレースを手動で作成する方法について説明します。
DDLトリガー
は、データ定義言語(DDL)トリガーを使用してデータベースへの変更を追跡する方法について説明します。
Microsoft TechNet:SQL Server TechCenter: SQL Server2005のセキュリティと保護
は、SQL Serverのセキュリティに関する最新の情報を提供します。
関連項目
SQL Server監査アクショングループおよびアクション
SQL Server監査レコード