適用対象:Azure SQL データベース
Azure SQL Managed Instance
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 ファイルにまたがる場合、実行中のインデックスになります。
たとえば、Database1 にあるデータベース Server1 の場合、選択可能な有効なパスは以下のようになります:
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 ワークスペース、カテゴリ AzureDiagnostics がある SQLSecurityAuditEvents テーブル、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アクセスでAzure 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 監査は、監査レコードの文字フィールドとして4000文字のデータを保存します。 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 |
GRANT
/
DENY
/
REVOKE操作が実行されるデータベースプリンシパル。適用できない場合は0です。 |
int |
int |
target_database_principal_name |
target_database_principal_name_s |
アクションの対象ユーザー。
NULL 該当しない場合は |
string |
string |
target_server_principal_id |
target_server_principal_id_d |
GRANT
/
DENY
/
REVOKE操作が実行されるサーバー プリンシパル。 該当しない場合、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 以外、ユーザー定義イベントの場合は 0 以外。 詳細については、「sp_audit_write (Transact-SQL)」を参照してください。 |
smallint |
int |
user_defined_information |
user_defined_information_s |
ユーザー定義情報は sp_audit_writeに引数として渡されます。
NULL システム イベント (既定) の場合は 0 以外、ユーザー定義イベントの場合は 0 以外。 詳細については、「sp_audit_write (Transact-SQL)」を参照してください。 |
nvarchar(4000) |
string |
Auditing in Azure Synapse Analytics
Azure Synapse Analyticsの監査ログ形式に関する情報は、監査ログ形式をご覧ください。
次のステップ
詳細については、「Azure SQL Database 監査」を参照してください