Catatan Audit SQL Server

Berlaku untuk:SQL Server

Fitur Audit SQL Server memungkinkan Anda mengaudit grup peristiwa dan peristiwa tingkat server dan tingkat database. Untuk mendapatkan informasi selengkapnya, lihat Audit SQL Server (Mesin Database). SQL Server.

Audit terdiri dari nol atau lebih item tindakan audit, yang dicatat ke sasaran audit. Target audit dapat berupa file biner, log peristiwa Aplikasi Windows, atau log peristiwa Keamanan Windows. Rekaman yang dikirim ke target dapat berisi elemen yang dijelaskan dalam tabel berikut:

Nama kolom Deskripsi Jenis Selalu tersedia
event_time Tanggal dan waktu ketika tindakan yang dapat diaudit diaktifkan. datetime2 Ya
sequence_number Melacak urutan rekaman dalam catatan audit tunggal yang terlalu besar untuk muat di buffer tulis untuk audit. int Ya
action_id ID tindakan

Tips: Untuk menggunakan action_id sebagai predikat, itu harus dikonversi dari string karakter ke nilai numerik. Untuk informasi selengkapnya, lihat Memfilter Audit SQL Server berdasarkan predikat action_id/class_type.
varchar(4) Ya
berhasil Menunjukkan apakah tindakan yang memicu peristiwa berhasil. Untuk semua peristiwa selain peristiwa masuk, ini hanya melaporkan apakah pemeriksaan izin berhasil atau gagal, bukan operasi.
- 1 = Berhasil
0 = Gagal
bit Ya
permission_bitmask Dalam beberapa tindakan, ini adalah izin yang diberikan, ditolak, atau dicabut. varbinary(16) Tidak
is_column_permission Penanda yang menunjukkan apakah ini adalah izin pada tingkat kolom. Mengembalikan 0 saat permission_bitmask = 0.
- 1 = Benar
- 0 = False
bit Tidak
session_id ID sesi tempat peristiwa terjadi. smallint Ya
server_principal_id ID konteks masuk tempat tindakan dilakukan. int Ya
database_principal_id ID konteks pengguna database tempat tindakan dilakukan. Mengembalikan 0 jika ini tidak berlaku. Misalnya, operasi server. int Tidak
target_server_principal_id Prinsipal server yang menjadi tempat operasi GRANT/DENY/REVOKE dilakukan. Mengembalikan 0 jika tidak berlaku. int Ya
target_database_principal_id Prinsipal database tempat operasi GRANT/DENY/REVOKE dilakukan. Mengembalikan 0 jika tidak berlaku. int Tidak
object_id ID entitas tempat audit terjadi. Ini termasuk:
objek server
database
objek database
objek skema
Mengembalikan 0 jika entitas adalah Server itu sendiri atau jika audit tidak dilakukan pada tingkat objek. Misalnya, Autentikasi.
int Tidak
class_type Jenis entitas yang dapat diaudit tempat audit terjadi. varchar(2) Ya
session_server_principal_name Prinsipal server untuk sesi tersebut. sysname Ya
server_principal_name Login saat ini. sysname Ya
server_principal_sid SID login saat ini. varbinary(85) Ya
database_principal_name Pengguna saat ini. sysname Tidak
target_server_principal_name Target login tindakan. Mengembalikan NULL jika tidak berlaku. sysname Tidak
target_server_principal_sid SID dari login target. Mengembalikan NULL jika tidak berlaku. varbinary(85) Tidak
target_database_principal_name Targetkan pengguna tindakan. Mengembalikan NULL jika tidak berlaku. sysname Tidak
server_instance_name Nama instans server tempat audit terjadi. Format server\instance standar digunakan. sysname Ya
database_name Konteks database tempat tindakan terjadi. Dapat bernilai null. Mengembalikan NULL untuk audit yang terjadi di tingkat server. sysname Tidak
schema_name Konteks skema di mana tindakan terjadi. sysname Tidak
object_name Nama entitas tempat audit terjadi. Ini termasuk:
objek server
database
objek database
objek skema
Dapat bernilai null. Mengembalikan NULL jika entitas adalah Server itu sendiri atau jika audit tidak dilakukan pada tingkat objek. Misalnya, Autentikasi.
sysname Tidak
statement Pernyataan T-SQL jika ada. Mengembalikan NULL jika tidak berlaku. nvarchar(4000) Tidak
additional_information Informasi unik yang hanya berlaku untuk satu peristiwa dikembalikan sebagai XML. Beberapa tindakan yang dapat diaudit berisi informasi semacam ini.

Satu tingkat tumpukan TSQL akan ditampilkan dalam format XML untuk tindakan yang memiliki tumpukan TSQL yang terkait dengannya. Format XML akan menjadi:
<tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>
Frame nest_level menunjukkan tingkat bersarang saat ini dari frame. Nama modul diwakili dalam format tiga bagian (database_name, schema_name, dan object_name). Nama modul akan diurai untuk meloloskan karakter xml yang tidak valid seperti '\<', '>', '/', '_x'. Mereka akan dieksekusi sebagai _xHHHH\_. HHHH adalah singkatan dari empat digit kode heksadesimal UCS-2 untuk karakter
Dapat bernilai null. Mengembalikan NULL ketika tidak ada informasi tambahan yang dilaporkan oleh peristiwa.
nvarchar(4000) Tidak
file_name Jalur dan nama file log audit tempat rekaman berasal. varchar(260) Ya
audit_file_offset Berlaku untuk: SQL Server saja

Offset buffer di dalam file yang berisi catatan audit.
bigint Tidak
user_defined_event_id Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru, Azure SQL Database, dan SQL Managed Instance

ID peristiwa yang ditentukan pengguna diteruskan sebagai argumen ke sp_audit_writeNULL untuk peristiwa sistem (default) dan nonzero untuk peristiwa yang ditentukan pengguna. Untuk informasi selengkapnya, lihat sp_audit_write (Transact-SQL).
smallint Tidak
informasi_didefinisikan_pengguna Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru, Azure SQL Database, dan SQL Managed Instance

Digunakan untuk merekam informasi tambahan yang ingin dicatat pengguna dalam log audit dengan menggunakan prosedur tersimpan sp_audit_write .
nvarchar(4000) Tidak
audit_schema_version Selalu 1 int Ya
sequence_group_id Berlaku untuk: SQL Server saja

Pengidentifikasi unik
varbinary(85) Tidak
transaction_id Berlaku untuk: SQL Server saja (Dimulai dengan 2016)

Pengidentifikasi unik untuk mengidentifikasi beberapa peristiwa audit dalam satu transaksi
bigint Tidak
client_ip Berlaku untuk: Azure SQL Database + SQL Server (Dimulai dengan 2017)

IP sumber aplikasi klien
nvarchar(128) Tidak
application_name Berlaku untuk: Azure SQL Database + SQL Server (Dimulai dengan 2017)

Nama aplikasi klien yang menjalankan pernyataan yang menyebabkan peristiwa audit
nvarchar(128) Tidak
duration_milliseconds Berlaku untuk: Azure SQL Database dan SQL Managed Instance

Durasi eksekusi kueri dalam milidetik
bigint Tidak
response_rows Berlaku untuk: Azure SQL Database dan SQL Managed Instance

Jumlah baris yang dikembalikan dalam set hasil.
bigint Tidak
affected_rows Berlaku untuk: Hanya Azure SQL Database

Jumlah baris yang terpengaruh oleh pernyataan yang dijalankan.
bigint Tidak
connection_id Berlaku untuk: Azure SQL Database dan SQL Managed Instance

ID koneksi di server
GUID Tidak
informasi_kepekaan_data Berlaku untuk: Hanya Azure SQL Database

Jenis informasi dan label sensitivitas yang dikembalikan oleh kueri yang diaudit, berdasarkan kolom yang diklasifikasikan dalam database. Pelajari selengkapnya tentang penemuan dan klasifikasi data Azure SQL Database
nvarchar(4000) Tidak
host_name Nama host koneksi klien nvarchar(128) Tidak
session_context Informasi konteks sesi untuk koneksi nvarchar(4000) Tidak
client_tls_version Berlaku untuk: SQL Server 2022 dan yang lebih baru

Nomor versi TLS yang digunakan oleh koneksi klien
int Tidak
client_tls_version_name Berlaku untuk: SQL Server 2022 dan yang lebih baru

Nama versi TLS yang digunakan oleh koneksi klien
nvarchar(128) Tidak
database_transaction_id Pengidentifikasi transaksi database bigint Tidak
ledger_start_sequence_number (nomor urut permulaan buku besar) Berlaku untuk: SQL Server 2022 dan yang lebih baru

Nomor urutan mulai ledger untuk operasi ledger
bigint Tidak
izin_kebijakan_eksternal_diperiksa Izin kebijakan eksternal yang diperiksa selama proses nvarchar(4000) Tidak

Keterangan

Beberapa tindakan tidak mengisi nilai kolom karena mungkin tidak dapat diterapkan ke tindakan.

Audit SQL Server menyimpan 4.000 karakter data untuk kolom karakter dalam catatan audit. Ketika nilai additional_information dan pernyataan yang dikembalikan dari tindakan yang dapat diaudit mengembalikan lebih dari 4000 karakter, kolom sequence_number digunakan untuk menulis beberapa rekaman ke dalam laporan audit untuk satu tindakan audit untuk merekam data ini. Prosesnya adalah sebagai berikut:

  • Kolom pernyataan dibagi menjadi 4.000 karakter.

  • SQL Server Audit mencatat sebagai baris pertama dalam catatan audit dengan data sebagian. Semua bidang lain terduplikasi di setiap baris.

  • Nilai sequence_number dinaikkan.

  • Proses ini diulang hingga semua data direkam.

Anda dapat menyambungkan data dengan membaca baris secara berurutan menggunakan nilai sequence_number , dan kolom event_Time, action_id , dan session_id untuk mengidentifikasi tindakan.