SQL Database 監査ログの形式
適用対象: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics
Azure SQL Database の監査では、データベース イベントを追跡し、それを Azure ストレージ アカウントの監査ログに書き込むか、ダウンストリーム処理および分析のためイベント ハブまたは Log Analytics に送信します。
名前付け規則
BLOB 監査
Azure BLOB ストレージに格納されている監査ログは、Azure ストレージ アカウント内の sqldbauditlogs
と呼ばれるコンテナーに格納されています。 コンテナー内のディレクトリ階層は、<ServerName>/<DatabaseName>/<AuditName>/<Date>/
という形式になります。 BLOB ファイル名の形式は <CreationTime>_<FileNumberInSession>.xel
です。ここで CreationTime
は UTC hh_mm_ss_ms
形式で、FileNumberInSession
はセッション ログが複数の BLOB ファイルにまたがる場合、実行中のインデックスになります。
たとえば、Server1
にあるデータベース Database1
の場合、選択可能な有効なパスは以下のようになります:
Server1/Database1/SqlDbAuditing_ServerAudit_NoRetention/2019-02-03/12_23_30_794_0.xel
読み取り専用レプリカの監査ログは、同じコンテナーに格納されます。 コンテナー内のディレクトリ階層は、<ServerName>/<DatabaseName>/<AuditName>/<Date>/RO/
という形式になります。 BLOB ファイル名は同じ形式を共有します。 読み取り専用レプリカの監査ログは、同じコンテナーに格納されます。
イベント ハブ
監査イベントは、監査の構成中に定義された名前空間とイベント ハブに書き込まれ、Apache Avro イベントの本体に入れられ、UTF-8 エンコードされた JSON の書式設定を使用して格納されます。 監査ログを読み取るために、Avro Tools またはこの形式を処理する同様のツールを使用できます。
Log Analytics
監査イベントは、監査構成中に定義された Log Analytics ワークスペース、カテゴリ SQLSecurityAuditEvents
がある AzureDiagnostics
テーブル、Microsoft サポートの操作用のカテゴリ DevOpsOperationsAudit
があるテーブルに書き込まれます。 Log Analytics 検索言語およびコマンドに関する有用な追加情報については、Log Analytics 検索リファレンスに関するページをご覧ください。
監査ログのフィールド
名前 (BLOB) | 名前 (Event Hubs または Log Analytics) | 説明 | BLOB の種類 | Event Hubs または Log Analytics の種類 |
---|---|---|---|---|
action_id | action_id_s | アクションの ID | varchar (4) | string |
action_name | action_name_s | アクションの名前 | 該当なし | string |
additional_information | additional_information_s | XML として格納されている、イベントに関する追加情報 | nvarchar(4000) | string |
affected_rows | affected_rows_d | クエリによって影響を受ける行の数 | bigint | INT |
application_name | application_name_s | クライアント アプリケーションの名前 | nvarchar(128) | string |
audit_schema_version | audit_schema_version_d | 常に 1 | INT | INT |
class_type | class_type_s | 監査が発生する監査可能なエンティティの種類 | varchar(2) | string |
class_type_desc | class_type_description_s | 監査が発生する監査可能なエンティティの説明 | 該当なし | string |
client_ip | client_ip_s | クライアント アプリケーションのソース IP | nvarchar(128) | string |
connection_id | 該当なし | サーバーの接続の ID | GUID | 該当なし |
data_sensitivity_information | data_sensitivity_information_s | データベースにある分類済みの列に基づく、監査済みクエリが返す情報の種類と機密ラベル。 Azure SQL Database のデータ検出と分類の詳細を参照してください。 | nvarchar(4000) | string |
database_name | database_name_s | アクションが発生したデータベース コンテキスト | sysname | string |
database_principal_id | database_principal_id_d | アクションが実行されるデータベース ユーザー コンテキストの ID | INT | INT |
database_principal_name | database_principal_name_s | アクションが実行されるデータベース ユーザー コンテキストの名前 | sysname | string |
duration_milliseconds | duration_milliseconds_d | クエリ実行時間 (ミリ秒) | bigint | INT |
event_time | event_time_t | 監査可能なアクションが発生する日付と時刻 | datetime2 | DATETIME |
host_name | 該当なし | クライアント ホスト名 | string | 該当なし |
is_column_permission | is_column_permission_s | 列レベルのアクセス許可であるかどうかを示すフラグ。 1 = true、0 = false | bit | string |
該当なし | is_server_level_audit_s | この監査がサーバー レベルであるかどうかを示すフラグ | 該当なし | string |
object_ id | object_id_d | 監査が発生したエンティティの ID。 これには、サーバー オブジェクト、データベース、データベース オブジェクト、およびスキーマ オブジェクトが含まれます。 エンティティがサーバー自体である場合、または監査がオブジェクト レベルで実行されない場合は 0 です。 | INT | INT |
object_name | object_name_s | 監査が発生したエンティティの名前。 これには、サーバー オブジェクト、データベース、データベース オブジェクト、およびスキーマ オブジェクトが含まれます。 エンティティがサーバー自体である場合、または監査がオブジェクト レベルで実行されない場合は 0 です。 | sysname | string |
obo_middle_tier_app_id | obo_middle_tier_app_id_s | OBO アクセスを使用して SQL Database に接続した中間層アプリケーションのアプリケーション ID。 | varchar(120) | string |
permission_bitmask | permission_bitmask_s | 該当する場合、許可、拒否、または取り消されたアクセス許可を表示します。 | varbinary(16) | string |
response_rows | response_rows_d | 結果セットで返された行の数 | bigint | INT |
schema_name | schema_name_s | アクションが発生したスキーマ コンテキスト。 監査がスキーマの外部で発生している場合は NULL です。 | sysname | string |
該当なし | securable_class_type_s | 監査対象の class_type にマップされるセキュリティ保護可能なオブジェクト | 該当なし | string |
sequence_group_id | sequence_group_id_g | 一意識別子 | varbinary | GUID |
sequence_number | sequence_number_d | 大きすぎて監査の書き込みバッファーに収まらなかった 1 つの監査レコード内のレコードの順序を追跡します。 Azure SQL Database と Azure Synapse の監査では、監査レコードの文字フィールドに 4,000 文字のデータが格納されることに注意してください。 4,000 文字を超える場合、最初の 4,000 文字を超えるデータは切り捨てられます | INT | INT |
server_instance_name | server_instance_name_s | 監査が発生したサーバー インスタンスの名前 | sysname | string |
server_principal_id | server_principal_id_d | アクションが実行されるログイン コンテキストの ID | INT | INT |
server_principal_name | server_principal_name_s | 現在のログイン | sysname | string |
server_principal_sid | server_principal_sid_s | 現在のログインの SID | varbinary | string |
session_id | session_id_d | イベントが発生したセッションの ID | smallint | INT |
session_server_principal_name | session_server_principal_name_s | セッションのサーバー プリンシパル | sysname | string |
statement | statement_s | 実行された T-SQL ステートメント (該当する場合) | nvarchar(4000) | string |
succeeded | succeeded_s | イベントをトリガーしたアクションが成功したかどうかを示します。 ログインとバッチ以外のイベントの場合、操作ではなくアクセス許可のチェックが成功したか失敗したかのみを報告します。 1 = 成功、0 = 失敗 | bit | string |
target_database_principal_id | target_database_principal_id_d | 許可、拒否、取り消し操作が実行されるデータベース プリンシパル。該当しない場合は 0 | INT | INT |
target_database_principal_name | target_database_principal_name_s | アクションの対象ユーザー。 該当しない場合は NULL です。 | string | string |
target_server_principal_id | target_server_principal_id_d | 許可、拒否または取り消し操作が実行されるサーバー プリンシパル。 該当しない場合、0 を返します。 | INT | INT |
target_server_principal_name | target_server_principal_name_s | アクションの対象ログイン。 該当しない場合は NULL です。 | sysname | string |
target_server_principal_sid | target_server_principal_sid_s | 対象ログインのセキュリティ ID。 該当しない場合は NULL です。 | varbinary | string |
transaction_id | transaction_id_d | SQL Server のみ (2016 年以降) - Azure SQL Database の場合は 0 | bigint | INT |
user_defined_event_id | user_defined_event_id_d | sp_audit_write に引数として渡されたユーザー定義のイベント ID。 システム イベントの場合は NULL (既定値) で、ユーザー定義のイベントの場合は 0 以外です。 詳細については、「sp_audit_write (Transact-SQL)」を参照してください。 | smallint | INT |
user_defined_information | user_defined_information_s | sp_audit_write に引数として渡されたユーザー定義の情報。 システム イベントの場合は NULL (既定値) で、ユーザー定義のイベントの場合は 0 以外です。 詳細については、「sp_audit_write (Transact-SQL)」を参照してください。 | nvarchar(4000) | string |
次のステップ
詳細については、「Azure SQL Database 監査」を参照してください