ALTER SERVER AUDIT (Transact-SQL)

Berlaku untuk: SQL ServerAzure SQL Managed Instance

Mengubah objek audit server menggunakan fitur Audit SQL Server. Untuk informasi selengkapnya, lihat Audit SQL Server (Mesin Database).

Konvensi sintaks transact-SQL

Sintaks

ALTER SERVER AUDIT audit_name
{
    [ TO { { FILE ( <file_options> [ , ...n ] ) } | APPLICATION_LOG | SECURITY_LOG } | URL ]
    [ WITH ( <audit_options> [ , ...n ] ) ]
    [ WHERE <predicate_expression> ]
}
| REMOVE WHERE
| MODIFY NAME = new_audit_name
[ ; ]

<file_options>::=
{
      FILEPATH = 'os_file_path'
    | MAXSIZE = { max_size { MB | GB | TB } | UNLIMITED }
    | MAX_ROLLOVER_FILES = { integer | UNLIMITED }
    | MAX_FILES = integer
    | RESERVE_DISK_SPACE = { ON | OFF }
}

<audit_options>::=
{
      QUEUE_DELAY = integer
    | ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION }
    | STATE = = { ON | OFF }
}

<predicate_expression>::=
{
    [ NOT ] <predicate_factor>
    [ { AND | OR } [ NOT ] { <predicate_factor> } ]
    [ , ...n ]
}

<predicate_factor>::=
    event_field_name { = | < > | != | > | >= | < | <= } { number | 'string' }

Argumen

KE { FILE | APPLICATION_LOG | KEAMANAN | URL }

Menentukan lokasi target audit. Opsinya adalah file biner, log aplikasi Windows, atau log keamanan Windows.

Penting

Di Azure SQL Managed Instance, Audit SQL berfungsi di tingkat server dan menyimpan .xel file di Azure Blob Storage.

FILEPATH = 'os_file_path'

Jalur jejak audit. Nama file dihasilkan berdasarkan nama audit dan GUID audit.

MAXSIZE = max_size

Menentukan ukuran maksimum tempat file audit dapat tumbuh. Nilai max_size harus berupa bilangan bulat diikuti oleh MB, GB, TB, atau UNLIMITED. Ukuran minimum yang dapat Anda tentukan untuk max_size adalah 2 MB dan maksimum adalah 2.147.483.647 TB. Ketika UNLIMITED ditentukan, file tumbuh hingga disk penuh. Menentukan nilai yang lebih rendah dari 2 MB akan menimbulkan MSG_MAXSIZE_TOO_SMALL kesalahan. Nilai defaultnya adalah UNLIMITED.

MAX_ROLLOVER_FILES = bilangan bulat | TIDAK TERBATAS

Menentukan jumlah maksimum file yang akan dipertahankan dalam sistem file. Saat pengaturan MAX_ROLLOVER_FILES = 0, tidak ada batasan yang diberlakukan pada jumlah file rollover yang dibuat. Nilai defaultnya adalah 0. Jumlah maksimum file yang dapat ditentukan adalah 2.147.483.647.

MAX_FILES = bilangan bulat

Menentukan jumlah maksimum file audit yang dapat dibuat. Tidak bergulir ke file pertama saat batas tercapai. MAX_FILES Ketika batas tercapai, tindakan apa pun yang menyebabkan lebih banyak peristiwa audit dihasilkan gagal dengan kesalahan.

RESERVE_DISK_SPACE = { AKTIF | NONAKTIF }

Opsi ini melakukan pra-alokasi file pada disk ke MAXSIZE nilai . Hanya berlaku jika MAXSIZE tidak sama dengan UNLIMITED. Nilai defaultnya adalah OFF.

QUEUE_DELAY = bilangan bulat

Menentukan waktu dalam milidetik yang dapat berlalu sebelum tindakan audit dipaksa untuk diproses. Nilai 0 menunjukkan pengiriman sinkron. Nilai penundaan kueri minimum yang dapat diatur adalah 1000 (1 detik), yang merupakan default. Maksimum adalah 2.147.483.647 (2.147.483,647 detik atau 24 hari, 20 jam, 31 menit, 23,647 detik). Jika Anda menentukan nomor yang tidak valid, Anda akan menerima kesalahan MSG_INVALID_QUEUE_DELAY.

ON_FAILURE = { LANJUTKAN | MATIKAN | FAIL_OPERATION }

Menunjukkan apakah penulisan instans ke target harus gagal, melanjutkan, atau berhenti jika SQL Server tidak dapat menulis ke log audit.

LANJUTKAN

Operasi SQL Server berlanjut. Catatan audit tidak dipertahankan. Audit terus mencoba mencatat peristiwa dan melanjutkan jika kondisi kegagalan diselesaikan. Memilih opsi lanjutkan dapat memungkinkan aktivitas yang tidak diaudit, yang dapat melanggar kebijakan keamanan Anda. Gunakan opsi ini, saat melanjutkan operasi Mesin Database lebih penting daripada mempertahankan audit lengkap.

SHUTDOWN

Memaksa instans SQL Server dimatikan, jika SQL Server gagal menulis data ke target audit karena alasan apa pun. Login yang ALTER menjalankan pernyataan harus memiliki SHUTDOWN izin dalam SQL Server. Perilaku matikan tetap ada bahkan jika SHUTDOWN izin kemudian dicabut dari proses masuk yang dijalankan. Jika pengguna tidak memiliki izin ini, pernyataan gagal dan audit tidak diubah. Gunakan opsi ketika kegagalan audit dapat membahayakan keamanan atau integritas sistem. Untuk informasi selengkapnya, lihat SHUTDOWN.

FAIL_OPERATION

Tindakan database gagal jika menyebabkan peristiwa yang diaudit. Tindakan, yang tidak menyebabkan peristiwa yang diaudit dapat dilanjutkan, tetapi tidak ada peristiwa yang diaudit yang dapat terjadi. Audit terus mencoba mencatat peristiwa dan melanjutkan jika kondisi kegagalan diselesaikan. Gunakan opsi ini saat mempertahankan audit lengkap lebih penting daripada akses penuh ke Mesin Database.

STATUS = { AKTIF | MATI }

Mengaktifkan atau menonaktifkan audit dari mengumpulkan rekaman. Mengubah status audit yang sedang berjalan (dari ON ke OFF) membuat entri audit bahwa audit dihentikan, prinsipal yang menghentikan audit, dan waktu audit dihentikan.

UBAH NAMA = new_audit_name

Mengubah nama audit. Tidak dapat digunakan dengan opsi lain.

predicate_expression

Menentukan ekspresi predikat yang digunakan untuk menentukan apakah suatu peristiwa harus diproses atau tidak. Ekspresi predikat dibatasi hingga panjang 3.000 karakter, yang membatasi argumen string.

event_field_name

Nama bidang peristiwa yang mengidentifikasi sumber predikat. Bidang audit dijelaskan dalam sys.fn_get_audit_file. Semua bidang dapat diaudit kecuali file_name dan audit_file_offset.

number

Jenis numerik apa pun termasuk desimal. Batasan adalah kurangnya memori fisik yang tersedia atau angka yang terlalu besar untuk direpresentasikan sebagai bilangan bulat 64-bit.

'string'

Baik string ANSI atau Unicode sebagaimana diperlukan oleh perbandingan predikat. Tidak ada konversi jenis string implisit yang dilakukan untuk predikat membandingkan fungsi. Meneruskan jenis yang salah menghasilkan kesalahan

Keterangan

Anda harus menentukan setidaknya salah satu TOklausa , WITH, atau MODIFY NAME saat memanggil ALTER AUDIT.

Anda harus mengatur status audit ke opsi NONAKTIF untuk membuat perubahan pada audit. Jika ALTER AUDIT dijalankan saat audit diaktifkan dengan opsi apa pun selain STATE = OFF, Anda akan menerima MSG_NEED_AUDIT_DISABLED pesan kesalahan.

Anda dapat menambahkan, mengubah, dan menghapus spesifikasi audit tanpa menghentikan audit.

Anda tidak dapat mengubah GUID audit setelah audit dibuat.

ALTER SERVER AUDIT tidak dapat digunakan di dalam transaksi pengguna.

Izin

Untuk membuat, mengubah, atau menghapus perwakilan audit server, Anda harus memiliki izin ALTER ANY SERVER AUDIT atau CONTROL SERVER.

Contoh

J. Mengubah nama audit server

Contoh berikut mengubah nama audit HIPAA_Audit server menjadi HIPAA_Audit_Old.

USE master;
GO

ALTER SERVER AUDIT HIPAA_Audit
WITH (STATE = OFF);
GO

ALTER SERVER AUDIT HIPAA_Audit
MODIFY NAME = HIPAA_Audit_Old;
GO

ALTER SERVER AUDIT HIPAA_Audit_Old
WITH (STATE = ON);
GO

B. Mengubah target audit server

Contoh berikut mengubah audit server yang dipanggil HIPAA_Audit ke target file.

USE master;
GO

ALTER SERVER AUDIT HIPAA_Audit
WITH (STATE = OFF);
GO

ALTER SERVER AUDIT HIPAA_Audit TO FILE (
    FILEPATH = '\\SQLPROD_1\Audit\',
    MAXSIZE = 1000 MB,
    RESERVE_DISK_SPACE = OFF
)
WITH (
    QUEUE_DELAY = 1000,
    ON_FAILURE = CONTINUE
);
GO

ALTER SERVER AUDIT HIPAA_Audit
WITH (STATE = ON);
GO

C. Mengubah klausa WHERE audit server

Contoh berikut memodifikasi klausa where yang dibuat dalam contoh C dari CREATE SERVER AUDIT. Klausa WHERE baru memfilter peristiwa yang ditentukan pengguna jika dari 27.

ALTER SERVER AUDIT [FilterForSensitiveData]
WITH (STATE = OFF);
GO

ALTER SERVER AUDIT [FilterForSensitiveData]
    WHERE user_defined_event_id = 27;
GO

ALTER SERVER AUDIT [FilterForSensitiveData]
WITH (STATE = ON);
GO

D. Menghapus klausa WHERE

Contoh berikut menghapus WHERE ekspresi predikat klausa.

ALTER SERVER AUDIT [FilterForSensitiveData]
WITH (STATE = OFF);
GO

ALTER SERVER AUDIT [FilterForSensitiveData]
REMOVE WHERE;
GO

ALTER SERVER AUDIT [FilterForSensitiveData]
WITH (STATE = ON);
GO

E. Mengganti nama audit server

Contoh berikut mengubah nama audit server dari FilterForSensitiveData menjadi AuditDataAccess.

ALTER SERVER AUDIT [FilterForSensitiveData]
WITH (STATE = OFF);
GO

ALTER SERVER AUDIT [FilterForSensitiveData]
MODIFY NAME = AuditDataAccess;
GO

ALTER SERVER AUDIT [AuditDataAccess]
WITH (STATE = ON);
GO

Transact-SQL referensi