Bagikan melalui


Audit pada SQL Server (Mesin Basis Data)

Aplikasi ke:SQL ServerAzure SQL Managed Instance

Auditing instans SQL Server Database Engine atau database individual melibatkan melacak dan mencatat peristiwa yang terjadi pada Database Engine. audit SQL Server memungkinkan Anda membuat audit server, yang dapat berisi spesifikasi audit server untuk peristiwa tingkat server, dan spesifikasi audit database untuk peristiwa tingkat database. Kejadian yang diaudit dapat ditulis ke log kejadian atau ke file audit.

Ada beberapa tingkat audit untuk SQL Server, tergantung pada persyaratan pemerintah atau standar untuk penginstalan Anda. SQL Server Audit menyediakan alat dan proses yang harus Anda aktifkan, simpan, dan lihat audit di berbagai objek server dan database.

Anda dapat merekam grup tindakan audit server per instans, serta grup tindakan audit database atau tindakan audit langsung per database. Peristiwa audit terjadi setiap kali tindakan yang dapat diaudit ditemui.

Artikel ini berlaku untuk SQL Server dan Azure SQL Managed Instance.

  • Semua edisi SQL Server mendukung audit tingkat server. Pada SQL Server 2016 (13.x) dengan Paket Layanan 1 dan versi yang lebih baru, semua edisi mendukung audit tingkat database. Sebelum SQL Server 2016 (13.x), audit tingkat database terbatas pada edisi Enterprise, Developer, dan Evaluation. Untuk informasi selengkapnya, lihat Editions dan fitur yang didukung SQL Server 2016.
  • Dalam Azure SQL Managed Instance, Audit pada SQL Server didukung dan ada perbedaan antara database di Azure SQL Managed Instance dan database di SQL Server.
  • Untuk Database SQL, lihatlah Auditing untuk Azure SQL Database.

komponen audit SQL Server

Audit adalah penggabungan beberapa elemen menjadi satu paket untuk kelompok aksi server atau aksi basis data tertentu. Komponen audit SQL Server digabungkan untuk menghasilkan output yang disebut audit, sama seperti definisi laporan yang dikombinasikan dengan elemen grafik dan data menghasilkan laporan.

audit SQL Server menggunakan Extended Events untuk membantu membuat audit. Untuk informasi selengkapnya tentang Acara yang Diperluas, lihat Gambaran Umum Acara yang Diperluas.

Audit SQL Server

Objek SQL Server Audit mengumpulkan satu instans tindakan tingkat server atau database dan grup tindakan untuk dipantau. Audit berada di tingkat instans SQL Server. Anda dapat memiliki beberapa audit per instans SQL Server.

Saat Anda menentukan audit, Anda menentukan lokasi untuk output hasil. Ini adalah tujuan audit. Audit dibuat dalam status dinonaktifkan , dan tidak secara otomatis mengaudit tindakan apa pun. Setelah audit diaktifkan, tujuan audit menerima data dari audit.

Spesifikasi Audit Server

Objek Spesifikasi Audit Server merupakan bagian dari audit. Anda dapat membuat satu spesifikasi audit server per audit, karena keduanya dibuat pada cakupan instans SQL Server.

Spesifikasi audit server mengumpulkan banyak grup tindakan di tingkat server yang dihasilkan oleh fitur Extended Events. Anda dapat menyertakan grup tindakan audit dalam spesifikasi audit server. Grup tindakan audit adalah grup tindakan yang telah ditentukan sebelumnya, yang merupakan peristiwa atom yang terjadi di Database Engine. Tindakan ini dikirim ke auditor, yang mencatatnya dalam sasaran.

Grup tindakan audit tingkat server dijelaskan dalam artikel SQL Server Audit action groups and actions.

Catatan

Karena kendala performa, tempdb dan tabel sementara tidak diaudit. Meskipun grup tindakan "batch completed" menangkap pernyataan terhadap tabel sementara, grup tersebut mungkin tidak mengisi nama objek dengan benar. Namun, tabel sumber selalu diaudit, memastikan bahwa semua sisipan dari tabel sumber ke tabel sementara direkam.

Spesifikasi Audit Database

Objek Spesifikasi Audit Basis Data juga merupakan bagian dari audit SQL Server. Anda dapat membuat satu spesifikasi audit database untuk setiap database SQL Server dan setiap audit.

Spesifikasi audit database mengumpulkan tindakan audit tingkat database yang dimunculkan oleh fitur Extended Events. Anda dapat menambahkan grup tindakan audit atau peristiwa audit ke dalam spesifikasi audit pada database. Peristiwa audit adalah tindakan atomik yang dapat diaudit oleh pengolah mesin SQL Server. Grup tindakan audit adalah grup tindakan yang telah ditentukan sebelumnya. Keduanya berada di cakupan database SQL Server. Tindakan ini dikirim ke auditor, yang mencatatnya dalam sasaran. Jangan sertakan objek cakupan server, seperti tampilan sistem, dalam spesifikasi audit database pengguna.

Grup tindakan audit dan tindakan audit tingkat database dijelaskan dalam artikel Grup tindakan audit dan tindakan dalam SQL Server.

Sasaran

Hasil audit dikirim ke target, yang dapat berupa file, log peristiwa Windows Security, atau log peristiwa Aplikasi Windows. Log harus ditinjau dan diarsipkan secara berkala untuk memastikan bahwa target memiliki ruang yang cukup untuk menulis lebih banyak rekaman.

Penting

Setiap pengguna yang diautentikasi dapat membaca dan menulis ke log peristiwa Aplikasi Windows. Log peristiwa Aplikasi memerlukan izin yang lebih rendah daripada log peristiwa Windows Security dan kurang aman daripada log peristiwa Windows Security.

Menulis ke log Keamanan Windows memerlukan akun layanan SQL Server ditambahkan ke kebijakan Menghasilkan audit keamanan. Secara default, Sistem Lokal, Layanan Lokal, dan Layanan Jaringan adalah bagian dari kebijakan ini. Pengaturan ini dapat dikonfigurasi dengan menggunakan snap-in kebijakan keamanan (secpol.msc). Selain itu, kebijakan keamanan akses objek Audit harus diaktifkan untuk Keberhasilan dan Kegagalan. Pengaturan ini dapat dikonfigurasi dengan menggunakan snap-in kebijakan keamanan (secpol.msc). Dalam Windows Vista atau Windows Server 2008 (dan yang lebih tinggi), Anda dapat mengatur kebijakan yang lebih terperinci yang dihasilkan oleh aplikasi dari command prompt dengan menggunakan program kebijakan audit (). Untuk informasi selengkapnya tentang langkah-langkah untuk mengaktifkan penulisan ke log Keamanan Windows, lihat Menulis peristiwa Audit SQL Server ke log Keamanan. Untuk informasi selengkapnya tentang program Auditpol.exe, lihat artikel Pangkalan Pengetahuan 921469, Cara menggunakan Kebijakan Grup untuk mengonfigurasi audit keamanan terperinci. Log peristiwa Windows bersifat global untuk sistem operasi Windows. Untuk informasi selengkapnya tentang log peristiwa Windows, lihat Gambaran Umum Event Viewer. Jika Anda memerlukan izin yang lebih tepat pada audit, gunakan target file biner.

Saat menyimpan informasi audit ke file, untuk membantu mencegah perusakan, Anda dapat membatasi akses ke lokasi file dengan cara berikut:

  • Akun Layanan SQL Server harus memiliki izin Baca dan Tulis.

  • Administrator Audit biasanya memerlukan izin Baca dan Tulis. Ini mengasumsikan bahwa Administrator Audit adalah akun Windows yang digunakan untuk administrasi file audit, seperti: menyalinnya ke berbagai tempat berbagi, mencadangkannya, dan sebagainya.

  • Pembaca Audit yang berwenang untuk membaca file audit harus memiliki izin Baca.

Bahkan ketika Database Engine menulis ke file, pengguna Windows lain dapat membaca file audit jika mereka memiliki izin. Database Engine tidak membuat kunci eksklusif yang akan mencegah operasi baca.

Karena Database Engine dapat mengakses file, SQL Server login yang memiliki izin CONTROL SERVER dapat menggunakan Database Engine untuk mengakses file audit. Pada SQL Server 2022 (16.x) dan versi yang lebih baru, izin VIEW SERVER SECURITY AUDIT cukup untuk membaca file audit menggunakan fn_get_audit_file. Untuk merekam setiap pengguna yang membaca file audit, tentukan audit pada master.sys.fn_get_audit_file. Ini mencatat login dengan izin CONTROL SERVER yang telah mengakses file audit melalui SQL Server. Untuk informasi selengkapnya tentang fn_get_audit_file hak akses, lihat sys.fn_get_audit_file.

Jika Administrator Audit menyalin file ke lokasi lain (untuk tujuan arsip, dan sebagainya), daftar kontrol akses (ACL) di lokasi baru harus dikurangi ke izin berikut:

  • Administrator Audit - Baca dan Tulis
  • Pembaca Audit - Membaca

Kami menyarankan agar Anda membuat laporan audit dari instans terpisah SQL Server, seperti instans SQL Server Express, yang hanya dapat diakses oleh Administrator Audit atau Pembaca Audit. Dengan menggunakan instans terpisah dari Database Engine untuk pelaporan, Anda dapat membantu mencegah pengguna yang tidak sah mendapatkan akses ke catatan audit.

Anda dapat menawarkan perlindungan ekstra terhadap akses yang tidak sah dengan mengenkripsi folder tempat file audit disimpan dengan menggunakan Enkripsi Drive BitLocker Windows atau Sistem File Enkripsi Windows.

Untuk informasi lebih lanjut tentang catatan audit yang ditulis ke target, lihat SQL Server Audit Records.

Gambaran umum penggunaan audit SQL Server

Anda dapat menggunakan SQL Server Management Studio atau Transact-SQL untuk menentukan audit. Setelah audit dibuat dan diaktifkan, sasaran menerima catatan.

Anda dapat membaca log peristiwa Windows dengan menggunakan utilitas Event Viewer di Windows. Untuk target file, Anda dapat menggunakan Log File Viewer di SQL Server Management Studio atau fungsi fn_get_audit_file untuk membaca file target.

Proses umum untuk membuat dan menggunakan audit adalah sebagai berikut.

  1. Buat audit dan tentukan target.
  2. Buat spesifikasi audit server atau spesifikasi audit database yang memetakan ke audit. Aktifkan spesifikasi audit.
  3. Aktifkan audit.
  4. Baca peristiwa audit dengan menggunakan Windows Event Viewer, Log File Viewer, atau fungsi fn_get_audit_file.

Untuk informasi selengkapnya, lihat Membuat Audit Server dan Spesifikasi Audit Server dan Membuat audit server dan spesifikasi audit database.

Pertimbangan

Jika terjadi kegagalan selama inisiasi audit, server tidak akan mulai. Dalam hal ini, server dapat dimulai dengan menggunakan -f opsi di baris perintah.

Ketika kegagalan audit menyebabkan server dimatikan atau tidak dimulai karena ON_FAILURE = SHUTDOWN ditentukan untuk audit, MSG_AUDIT_FORCED_SHUTDOWN peristiwa ditulis ke log. Karena penonaktifan terjadi pada pertemuan pertama pengaturan ini, kejadian dicatat satu kali. Peristiwa ini dicatat setelah pesan kegagalan untuk audit yang menyebabkan penutupan. Administrator dapat melewati penonaktifan yang diinduksi audit dengan memulai SQL Server dalam mode Pengguna Tunggal menggunakan bendera -m. Jika Anda memulai dalam mode Pengguna Tunggal, Anda akan menurunkan audit apa pun di mana ON_FAILURE = SHUTDOWN ditentukan untuk dijalankan dalam sesi itu sebagai ON_FAILURE = CONTINUE. Ketika SQL Server dimulai dengan bendera -m, pesan MSG_AUDIT_SHUTDOWN_BYPASSED ditulis ke log kesalahan.

Untuk informasi selengkapnya tentang opsi startup layanan, lihat opsi startup Database Engine Service.

Operasi internal di Azure SQL Managed Instance

  • Dalam Azure SQL Database dan Azure SQL Managed Instance, peristiwa yang dimulai oleh SQLDBControlPlaneFirstPartyApp adalah fungsi Azure internal dari sarana kontrol Azure SQL Database. Peristiwa yang dimulai oleh SQLDBControlPlaneFirstPartyApp adalah bagian dari operasi sinkronisasi internal antara mesin SQL dan Azure Resource Manager. Peristiwa ini adalah bagian normal dari manajemen sumber daya dan diperlukan untuk representasi dan operasi sumber daya yang benar di Azure.

Menambahkan basis data dengan audit yang telah didefinisikan

Melampirkan database yang memiliki spesifikasi audit dan menentukan GUID yang tidak ada di server, menyebabkan spesifikasi audit terputus. Karena audit dengan GUID yang cocok tidak ada di instans server, tidak ada peristiwa audit yang direkam. Untuk memperbaiki situasi ini, gunakan ALTER DATABASE AUDIT SPECIFICATION untuk perintah menyambungkan spesifikasi audit terpisah ke audit server yang ada. Atau, gunakan CREATE SERVER AUDIT perintah untuk membuat audit server baru dengan GUID yang ditentukan.

Anda dapat melampirkan database yang memiliki spesifikasi audit yang ditentukan di dalamnya ke edisi SQL Server lain yang tidak mendukung audit SQL Server, seperti SQL Server Express tetapi tidak merekam peristiwa audit.

Pencerminan database dan Audit SQL Server

Basis data yang memiliki spesifikasi audit yang telah ditentukan dan menggunakan pencerminan basis data akan menyertakan spesifikasi audit tersebut. Untuk bekerja dengan benar pada instans SQL yang dicerminkan, item berikut harus dikonfigurasi:

  • Server mirror harus memiliki audit dengan GUID yang sama untuk memungkinkan spesifikasi audit database agar dapat menulis catatan audit. Ini dapat dikonfigurasi dengan menggunakan perintah CREATE AUDIT WITH GUID = <guid-from-source-server-audit>.

  • Untuk target file biner, akun layanan server cermin harus memiliki izin yang sesuai ke lokasi tempat jejak audit sedang ditulis.

  • Untuk tujuan log peristiwa Windows, kebijakan keamanan pada komputer tempat server cermin berada harus memungkinkan akses akun layanan ke log peristiwa keamanan atau log peristiwa Application.

Aktivitas audit administrator

Anggota sysadmin dalam peran server tetap diidentifikasi sebagai pengguna dbo di setiap database. Untuk mengaudit tindakan administrator, audit tindakan pengguna dbo .

Hak Akses

Setiap fitur dan perintah untuk audit SQL Server memiliki persyaratan izin individual.

Untuk membuat, mengubah, atau menghapus Audit Server atau Spesifikasi Audit Server, prinsipal server memerlukan izin ALTER ANY SERVER AUDIT atau CONTROL SERVER. Untuk membuat, mengubah, atau menghapus Spesifikasi Audit Database, prinsipal database memerlukan izin ALTER ANY DATABASE AUDIT atau izin ALTER atau izin CONTROL pada database. Selain itu, prinsipal harus memiliki izin untuk menyambungkan ke database, atau ALTER ANY SERVER AUDIT izin atau CONTROL SERVER izin.

Izin VIEW ANY DEFINITION memberikan akses untuk melihat tampilan audit tingkat server dan VIEW DEFINITION akses untuk melihat tampilan audit tingkat database. Pembatalan izin ini menghalangi kemampuan untuk berkemampuan melihat tampilan katalog, bahkan jika prinsipal memiliki izin ALTER ANY SERVER AUDIT atau ALTER ANY DATABASE AUDIT.

Untuk membaca data audit menggunakan fn_get_audit_file, SQL Server 2019 (15.x) dan versi yang lebih lama memerlukan izin CONTROL SERVER di server, sementara SQL Server 2022 (16.x) dan versi yang lebih baru memerlukan izin VIEW SERVER SECURITY AUDIT. Untuk informasi selengkapnya, lihat sys.fn_get_audit_file.

Untuk informasi selengkapnya tentang cara memberikan hak dan izin, lihat GRANT.

Perhatian

Prinsipal dalam peran sysadmin dapat mengubah komponen audit apa pun, dan prinsipal dalam peran db_owner dapat mengubah spesifikasi audit dalam database. SQL Server Audit memvalidasi bahwa log masuk yang membuat atau mengubah spesifikasi audit memiliki setidaknya izin ALTER ANY DATABASE AUDIT. Namun, tidak ada validasi saat Anda melampirkan database. Anda harus menganggap semua Spesifikasi Audit Database memiliki tingkat kepercayaan yang sama dengan prinsipal tersebut yang memegang peran sysadmin atau db_owner.

Membuat dan mengelola audit dengan Transact-SQL

Anda dapat menggunakan pernyataan DDL, tampilan dan fungsi manajemen dinamis, dan tampilan katalog untuk mengimplementasikan semua aspek SQL Server Audit.

Pernyataan Bahasa Definisi Data

Anda dapat menggunakan pernyataan DDL berikut untuk membuat, mengubah, dan menghilangkan spesifikasi audit:

Pernyataan DDL Deskripsi
ALTER AUTHORIZATION (Ubah Otorisasi) Mengubah kepemilikan suatu objek yang bisa diatur izin aksesnya.
UBAH SPESIFIKASI AUDIT DATABASE Mengubah objek spesifikasi audit database menggunakan fitur audit SQL Server.
MENGUBAH ALTER SERVER AUDIT Mengubah objek audit server menggunakan fitur audit SQL Server.
UBAH SPESIFIKASI AUDIT SERVER Mengubah objek spesifikasi audit server menggunakan fitur audit SQL Server.
MEMBUAT SPESIFIKASI AUDIT BASIS DATA Membuat objek spesifikasi audit database menggunakan fitur audit SQL Server.
BUAT SERVER AUDIT Membuat objek audit server menggunakan audit SQL Server.
MEMBUAT SPESIFIKASI AUDIT SERVER Membuat objek spesifikasi audit server menggunakan fitur audit SQL Server.
HILANGKAN SPESIFIKASI AUDIT DATABASE Menghilangkan objek spesifikasi audit database menggunakan fitur audit SQL Server.
HILANGKAN AUDIT SERVER Menghapus Objek Audit Server menggunakan fitur SQL Server Audit.
HILANGKAN SPESIFIKASI AUDIT SERVER Menghilangkan objek spesifikasi audit server menggunakan fitur audit SQL Server.

Tampilan dan fungsi dinamis

Tabel berikut ini mencantumkan tampilan dan fungsi dinamis yang bisa Anda gunakan untuk audit SQL Server.

Tampilan dan fungsi dinamis Deskripsi
sys.dm_audit_actions Mengembalikan baris untuk setiap tindakan audit yang dapat dilaporkan dalam log audit dan setiap grup tindakan audit yang dapat dikonfigurasi sebagai bagian dari audit SQL Server.
sys.dm_server_audit_status Menyediakan informasi tentang status audit saat ini.
sys.dm_audit_class_type_map Mengembalikan tabel yang memetakan bidang class_type di log audit ke bidang class_desc di sys.dm_audit_actions.
fn_get_audit_file Mengembalikan informasi dari file audit yang dihasilkan oleh audit server.

Tampilan katalog

Tabel berikut ini mencantumkan tampilan katalog yang bisa Anda gunakan untuk audit SQL Server.

Tampilan katalog Deskripsi
sys.database_audit_specifications Berisi informasi tentang spesifikasi audit database dalam audit SQL Server pada instans server.
sys.database_audit_specification_details Berisi informasi tentang spesifikasi audit database dalam audit SQL Server pada instans server untuk semua database.
sys.server_audits Berisi satu baris untuk setiap audit SQL Server dalam instans server.
sys.server_audit_specifications Berisi informasi tentang spesifikasi audit server dalam audit SQL Server pada instans server.
sys.server_audit_specifications_details Berisi informasi tentang detail spesifikasi audit server (tindakan) dalam audit SQL Server pada instans server.
sys.server_file_audits Berisi penyimpanan informasi yang diperluas tentang jenis audit file dalam audit SQL Server pada instans server.

Langkah selanjutnya