CREATE SERVER AUDIT (Transact-SQL)
Berlaku untuk: SQL Server Azure SQL Managed Instance
Membuat objek audit server menggunakan Audit SQL Server. Untuk informasi selengkapnya, lihat Audit SQL Server (Mesin Database).
Sintaks
CREATE SERVER AUDIT audit_name
{
TO { [ FILE (<file_options> [ , ...n ] ) ] | APPLICATION_LOG | SECURITY_LOG | URL | EXTERNAL_MONITOR }
[ WITH ( <audit_options> [ , ...n ] ) ]
[ WHERE <predicate_expression> ]
}
[ ; ]
<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 } ]
[ , AUDIT_GUID = uniqueidentifier ]
[ , OPERATOR_AUDIT = { ON | OFF } ]
}
<predicate_expression> ::=
{
[ NOT ] <predicate_factor>
[ { AND | OR } [ NOT ] { <predicate_factor> } ]
[ , ...n ]
}
<predicate_factor>::=
event_field_name { = | < > | != | > | >= | < | <= | LIKE } { number | ' string ' }
Argumen
KE { FILE | APPLICATION_LOG | SECURITY_LOG | URL | EXTERNAL_MONITOR }
Menentukan lokasi target audit. Opsinya adalah file biner, log Aplikasi Windows, atau log Keamanan Windows. SQL Server tidak dapat menulis ke log Keamanan Windows tanpa mengonfigurasi pengaturan tambahan di Windows. Untuk informasi selengkapnya, lihat Menulis peristiwa Audit SQL Server ke log Keamanan.
URL
Target tidak didukung untuk SQL Server.
Penting
Di Azure SQL Managed Instance, Audit SQL berfungsi di tingkat server. Lokasi hanya dapat berupa URL
atau EXTERNAL_MONITOR
.
FILEPATH = 'os_file_path'
Jalur log audit. Nama file dihasilkan berdasarkan nama audit dan GUID audit. Jika jalur ini tidak valid, audit tidak dibuat.
FILEPATH
target tidak didukung untuk Azure SQL Managed Instance. Anda perlu menggunakan PATH
sebagai gantinya.
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 maksimumnya adalah 2.147.483.647 TB. Ketika UNLIMITED
ditentukan, file bertambah sampai disk penuh. (0
juga menunjukkan UNLIMITED
.) Menentukan nilai yang lebih rendah dari 2 MB menimbulkan kesalahan MSG_MAXSIZE_TOO_SMALL
. Nilai defaultnya adalah UNLIMITED
.
MAXSIZE
target tidak didukung untuk Azure SQL Managed Instance.
MAX_ROLLOVER_FILES = { bilangan bulat | UNLIMITED }
Menentukan jumlah maksimum file yang akan dipertahankan dalam sistem file selain file saat ini. Nilai MAX_ROLLOVER_FILES
harus berupa bilangan bulat atau UNLIMITED
. Nilai defaultnya adalah UNLIMITED
. Parameter ini dievaluasi setiap kali audit dimulai ulang (yang dapat terjadi ketika instans Mesin Database dimulai ulang atau ketika audit dimatikan dan kemudian aktif lagi) atau ketika file baru diperlukan karena MAXSIZE
tercapai. Ketika MAX_ROLLOVER_FILES
dievaluasi, jika jumlah file melebihi MAX_ROLLOVER_FILES
pengaturan, file terlama akan dihapus. Akibatnya, ketika pengaturan MAX_ROLLOVER_FILES
adalah 0 file baru dibuat setiap kali MAX_ROLLOVER_FILES
pengaturan dievaluasi. Hanya satu file yang dihapus secara otomatis saat MAX_ROLLOVER_FILES
pengaturan dievaluasi, jadi ketika nilai MAX_ROLLOVER_FILES
menurun, jumlah file tidak menyusut kecuali file lama dihapus secara manual. Jumlah maksimum file yang dapat ditentukan adalah 2.147.483.647.
MAX_ROLLOVER_FILES
tidak didukung untuk Azure SQL Managed Instance.
MAX_FILES = bilangan bulat
Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.
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 peristiwa audit tambahan dihasilkan, gagal dengan kesalahan.
RESERVE_DISK_SPACE = { AKTIF | NONAKTIF }
Opsi ini melakukan pra-alokasi file pada disk ke MAXSIZE
nilai . Ini hanya berlaku jika MAXSIZE
tidak sama dengan UNLIMITED
. Nilai defaultnya adalah OFF
.
RESERVE_DISK_SPACE
target tidak didukung untuk Azure SQL Managed Instance.
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. Maksimumnya adalah 2147483647
(2.147.483,647 detik atau 24 hari, 20 jam, 31 menit, 23,647 detik). Menentukan angka yang tidak valid menimbulkan MSG_INVALID_QUEUE_DELAY
kesalahan.
ON_FAILURE = { LANJUTKAN | MATIKAN | FAIL_OPERATION }
Menunjukkan apakah instans yang menulis ke target harus gagal, melanjutkan, atau menghentikan SQL Server jika target tidak dapat menulis ke log audit. Nilai defaultnya adalah CONTINUE
.
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 CREATE SERVER AUDIT
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, maka pernyataan gagal dan audit tidak dibuat. Gunakan opsi ketika kegagalan audit dapat membahayakan keamanan atau integritas sistem. Untuk informasi selengkapnya, lihat SHUTDOWN.
FAIL_OPERATION
Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.
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.
AUDIT_GUID = uniqueidentifier
Untuk mendukung skenario seperti pencerminan database, audit memerlukan GUID tertentu yang cocok dengan GUID yang ditemukan dalam database cermin. GUID tidak dapat dimodifikasi setelah audit dibuat.
OPERATOR_AUDIT
Berlaku untuk: Azure SQL Managed Instance saja.
Menunjukkan apakah audit menangkap operasi teknisi dukungan Microsoft saat mereka perlu mengakses server Anda selama permintaan dukungan.
predicate_expression
Berlaku untuk: SQL Server 2012 (11.x) dan versi yang lebih baru.
Menentukan ekspresi predikat yang digunakan untuk menentukan apakah suatu peristiwa harus diproses atau tidak. Ekspresi predikat dibatasi hingga 3.000 karakter, yang membatasi argumen string.
event_field_name
Berlaku untuk: SQL Server 2012 (11.x) dan versi yang lebih baru.
Nama bidang peristiwa yang mengidentifikasi sumber predikat. Bidang audit dijelaskan dalam sys.fn_get_audit_file (Transact-SQL). Semua bidang dapat difilter kecuali file_name
, , audit_file_offset
dan event_time
.
Catatan
action_id
Meskipun bidang dan class_type
berjenis varchar di sys.fn_get_audit_file
, bidang hanya dapat digunakan dengan angka ketika merupakan sumber predikat untuk pemfilteran. Untuk mendapatkan daftar nilai yang akan digunakan dengan class_type
, jalankan kueri berikut:
SELECT spt.[name], spt.[number] FROM [master].[dbo].[spt_values] spt WHERE spt.[type] = N'EOD' ORDER BY spt.[name];
number
Berlaku untuk: SQL Server 2012 (11.x) dan versi yang lebih baru.
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'
Berlaku untuk: SQL Server 2012 (11.x) dan versi yang lebih baru.
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
Saat audit server dibuat, audit server dalam status dinonaktifkan.
Pernyataan CREATE SERVER AUDIT
tersebut berada dalam cakupan transaksi. Jika transaksi digulung balik, pernyataan juga digulung balik.
Izin
Untuk membuat, mengubah, atau menghilangkan audit server, prinsipal memerlukan ALTER ANY SERVER AUDIT
izin atau CONTROL SERVER
.
Saat Anda menyimpan informasi audit ke file, untuk membantu mencegah perubahan, batasi akses ke lokasi file.
Contoh
J. Membuat audit server dengan target file
Contoh berikut membuat audit server yang disebut HIPAA_Audit
dengan file biner sebagai target dan tanpa opsi.
CREATE SERVER AUDIT HIPAA_Audit
TO FILE ( FILEPATH ='\\SQLPROD_1\Audit\' );
B. Membuat audit server dengan target log Aplikasi Windows dengan opsi
Contoh berikut membuat audit server yang disebut HIPAA_Audit
dengan target yang ditetapkan untuk log Aplikasi Windows. Antrean ditulis setiap detik dan mematikan mesin SQL Server saat gagal.
CREATE SERVER AUDIT HIPAA_Audit
TO APPLICATION_LOG
WITH ( QUEUE_DELAY = 1000, ON_FAILURE = SHUTDOWN);
C. Membuat audit server yang berisi klausa WHERE
Contoh berikut membuat database, skema, dan dua tabel untuk contoh. Tabel bernama DataSchema.SensitiveData
berisi data rahasia dan akses ke tabel harus direkam dalam audit. Tabel bernama DataSchema.GeneralData
tidak berisi data rahasia. Spesifikasi audit database mengaudit akses ke semua objek dalam DataSchema
skema. Audit server dibuat dengan klausa WHERE yang membatasi audit server hanya untuk SensitiveData
tabel. Audit server berasumsi folder audit ada di C:\SQLAudit
.
CREATE DATABASE TestDB;
GO
USE TestDB;
GO
CREATE SCHEMA DataSchema;
GO
CREATE TABLE DataSchema.GeneralData (ID int PRIMARY KEY, DataField varchar(50) NOT NULL);
GO
CREATE TABLE DataSchema.SensitiveData (ID int PRIMARY KEY, DataField varchar(50) NOT NULL);
GO
-- Create the server audit in the master database
USE master;
GO
CREATE SERVER AUDIT AuditDataAccess
TO FILE ( FILEPATH ='C:\SQLAudit\' )
WHERE object_name = 'SensitiveData' ;
GO
ALTER SERVER AUDIT AuditDataAccess WITH (STATE = ON);
GO
-- Create the database audit specification in the TestDB database
USE TestDB;
GO
CREATE DATABASE AUDIT SPECIFICATION [FilterForSensitiveData]
FOR SERVER AUDIT [AuditDataAccess]
ADD (SELECT ON SCHEMA::[DataSchema] BY [public])
WITH (STATE = ON);
GO
-- Trigger the audit event by selecting from tables
SELECT ID, DataField FROM DataSchema.GeneralData;
SELECT ID, DataField FROM DataSchema.SensitiveData;
GO
-- Check the audit for the filtered content
SELECT * FROM fn_get_audit_file('C:\SQLAudit\AuditDataAccess_*.sqlaudit',default,default);
GO
Konten terkait
- ALTER SERVER AUDIT (Transact-SQL)
- DROP SERVER AUDIT (Transact-SQL)
- MEMBUAT SPESIFIKASI AUDIT SERVER (Transact-SQL)
- UBAH SPESIFIKASI AUDIT SERVER (Transact-SQL)
- SPESIFIKASI AUDIT SERVER DROP (Transact-SQL)
- MEMBUAT SPESIFIKASI AUDIT DATABASE (Transact-SQL)
- UBAH SPESIFIKASI AUDIT DATABASE (Transact-SQL)
- HILANGKAN SPESIFIKASI AUDIT DATABASE (T-SQL)
- ALTER AUTHORIZATION (Transact-SQL)
- sys.fn_get_audit_file (T-SQL)
- sys.server_audits (T-SQL)
- sys.server_file_audits (T-SQL)
- sys.server_audit_specifications (T-SQL)
- sys.server_audit_specification_details (T-SQL)
- sys.database_audit_specifications (T-SQL)
- sys.database_audit_specification_details (T-SQL)
- sys.dm_server_audit_status (T-SQL)
- sys.dm_audit_actions (T-SQL)
- sys.dm_audit_class_type_map (T-SQL)
- Membuat Audit Server dan Spesifikasi Audit Server