Bagikan melalui


Melacak aktivitas database dengan Log Audit di Azure Database for MySQL - Server Fleksibel

BERLAKU UNTUK: Azure Database for MySQL - Server Fleksibel

Server fleksibel Azure Database for MySQL memberi pengguna kemampuan untuk mengonfigurasi log audit. Log audit juga dapat digunakan untuk melacak aktivitas tingkat database termasuk koneksi, admin, DDL, dan peristiwa DML. Jenis log ini umumnya digunakan untuk tujuan kepatuhan.

Mengonfigurasi log audit

Penting

Disarankan untuk hanya mencatat jenis peristiwa dan pengguna yang diperlukan untuk tujuan audit Anda untuk memastikan performa server Anda tidak sangat terpengaruh dan jumlah data minimum dikumpulkan.

Secara default, log audit dinonaktifkan. Untuk mengaktifkan log, atur audit_log_enabledparameter server ke ON. Ini dapat dikonfigurasi menggunakan portal Azure atau Azure CLI.

Parameter lain yang bisa Anda sesuaikan untuk mengontrol perilaku pengelogan audit meliputi:

  • audit_log_events: mengontrol peristiwa yang akan dicatat. Lihat tabel di bawah ini untuk peristiwa audit tertentu.
  • audit_log_include_users: Pengguna MySQL yang akan disertakan untuk pengelogan. Nilai default untuk parameter ini kosong, yang mana akan mencakup semua pengguna untuk masuk. Hal ini memiliki prioritas lebih tinggi daripada audit_log_exclude_users. Panjang maksimum parameter adalah 512 karakter. Misalnya, nilai kartubebas dev* menyertakan semua pengguna dengan entri yang dimulai dengan kata kunci dev seperti "dev1,dev_user,dev_2". Contoh lain untuk entri kartubebas untuk menyertakan pengguna adalah *dev dalam contoh ini, semua pengguna yang berakhiran dengan nilai "dev" seperti "stage_dev,prod_dev,user_dev" disertakan dalam entri log audit. Selain itu, penggunaan tanda (?) tanya sebagai karakter kartubebas diizinkan dalam pola.
  • audit_log_exclude_users: Pengguna MySQL yang akan dikecualikan untuk pengelogan. Panjang maksimum parameter adalah 512 karakter. Entri kartubebas untuk pengguna juga diterima untuk mengecualikan pengguna dalam log audit. Misalnya, nilai stage* kartubebas mengecualikan semua pengguna dengan entri yang dimulai dengan kata kunci stage seperti "stage1,stage_user,stage_2". Contoh lain untuk entri kartubebas untuk mengecualikan pengguna ada *com dalam contoh ini, semua pengguna yang berakhiran dengan nilai com akan dikecualikan dari entri log audit. Selain itu, penggunaan tanda (?) tanya sebagai karakter kartubebas diizinkan dalam pola.

Catatan

audit_log_include_users memiliki prioritas lebih tinggi daripada audit_log_exclude_users. Misalnya, jika audit_log_include_users = demouser dan audit_log_exclude_users = demouser, pengguna akan disertakan dalam log audit karena audit_log_include_users memiliki prioritas lebih tinggi.

Kejadian Keterangan
CONNECTION - Inisiasi koneksi
- Penghentian koneksi
CONNECTION_V2 - Inisiasi koneksi (kode kesalahan upaya berhasil atau tidak berhasil)
- Penghentian koneksi
DML_SELECT Kueri PILIH
DML_NONSELECT Kueri SISIPKAN/HAPUS/PERBARUI
DML DML = DML_SELECT + DML_NONSELECT
DDL Kueri seperti "HILANGKAN DATABASE"
DCL Kueri seperti "BERIKAN IZIN"
ADMIN Kueri seperti "TAMPILKAN STATUS"
GENERAL Semua dalam DML_SELECT, DML_NONSELECT, DML, DDL, DCL, dan ADMIN
TABLE_ACCESS - Tabel membaca pernyataan, seperti PILIH atau SISIPKAN KE ... PILIH
- Pernyataan penghapusan tabel, seperti HAPUS atau POTONG TABEL
- Pernyataan sisipan tabel, seperti SISIPKAN atau REPLACE
- Pernyataan pembaruan tabel, seperti PERBARUI

Mengakses log audit

Log audit terintegrasi dengan pengaturan diagnostik Azure Monitor. Setelah mengaktifkan log audit di server fleksibel, Anda dapat memancarkannya ke log Azure Monitor, Azure Event Hubs, atau Azure Storage. Untuk mempelajari lebih lanjut pengaturan diagnostik, lihat dokumentasi log diagnostik. Untuk mempelajari selengkapnya tentang cara mengaktifkan log diagnostik di portal Microsoft Azure, lihat artikel portal log audit.

Catatan

Akun Penyimpanan Premium tidak didukung jika Anda mengirim log ke penyimpanan Azure melalui diagnostik dan pengaturan.

Bagian berikut menjelaskan output log audit MySQL berdasarkan jenis peristiwa. Tergantung pada metode output, bidang yang dimasukkan dan urutan munculnya dapat bervariasi.

Connection

Properti Keterangan
TenantId ID penyewa Anda
SourceSystem Azure
TimeGenerated [UTC] Tanda waktu ketika log direkam di UTC
Type Jenis log. Selalu AzureDiagnostics
SubscriptionId GUID untuk langganan milik server
ResourceGroup Nama grup sumber daya milik server
ResourceProvider Nama penyedia sumber daya. Selalu MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI Sumber Daya
Resource Nama server dalam huruf besar
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nama server
event_class_s connection_log
event_subclass_s CONNECT, , DISCONNECTCHANGE USER
connection_id_d ID koneksi unik yang dihasilkan oleh MySQL
host_s Kosong
ip_s Alamat IP klien yang terhubung ke MySQL
user_s Nama pengguna yang menjalankan kueri
db_s Nama database yang tersambung ke
\_ResourceId URI Sumber Daya
status_d Entri kode Kesalahan Koneksi untuk peristiwa CONNECTIONS_V2.

Umum

Skema di bawah ini berlaku untuk jenis peristiwa GENERAL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL, dan ADMIN.

Catatan

Untuk sql_text_s, log akan terpotong jika melebihi 2.048 karakter.

Properti Keterangan
TenantId ID penyewa Anda
SourceSystem Azure
TimeGenerated [UTC] Tanda waktu ketika log direkam di UTC
Type Jenis log. Selalu AzureDiagnostics
SubscriptionId GUID untuk langganan milik server
ResourceGroup Nama grup sumber daya milik server
ResourceProvider Nama penyedia sumber daya. Selalu MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI Sumber Daya
Resource Nama server dalam huruf besar
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nama server
event_class_s general_log
event_subclass_s LOG, ERROR, RESULT (hanya tersedia untuk MySQL 5.6)
event_time Waktu mulai kueri dalam tanda waktu UTC
error_code_d Kode galat jika kueri gagal. 0 berarti tidak ada kesalahan
thread_id_d ID alur yang menjalankan kueri
host_s Kosong
ip_s Alamat IP klien yang terhubung ke MySQL
user_s Nama pengguna yang menjalankan kueri
sql_text_s Teks kueri lengkap
\_ResourceId URI Sumber Daya

Akses tabel

Catatan

Untuk sql_text_s, log akan terpotong jika melebihi 2.048 karakter.

Properti Keterangan
TenantId ID penyewa Anda
SourceSystem Azure
TimeGenerated [UTC] Tanda waktu ketika log direkam di UTC
Type Jenis log. Selalu AzureDiagnostics
SubscriptionId GUID untuk langganan milik server
ResourceGroup Nama grup sumber daya milik server
ResourceProvider Nama penyedia sumber daya. Selalu MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI Sumber Daya
Resource Nama server dalam huruf besar
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nama server
event_class_s table_access_log
event_subclass_s READ, INSERT, UPDATE, atau DELETE
connection_id_d ID koneksi unik yang dihasilkan oleh MySQL
db_s Nama database yang diakses
table_s Nama tabel yang diakses
sql_text_s Teks kueri lengkap
\_ResourceId URI Sumber Daya

Menganalisis log di Azure Monitor Logs

Setelah log audit Anda disalurkan ke Azure Monitor Logs melalui Log Diagnostik, Anda dapat melakukan analisis lebih lanjut tentang peristiwa yang diaudit. Di bawah ini adalah beberapa contoh kueri untuk membantu Anda memulai. Pastikan untuk memperbarui di bawah ini dengan nama server Anda.

  • Cantumkan peristiwa UMUM di server tertentu

    AzureDiagnostics
    | where Resource  == '<your server name>' //Server name must be in Upper case
    | where Category == 'MySqlAuditLogs' and event_class_s == "general_log"
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
    | order by TimeGenerated asc nulls last
    
  • Mencantumkan peristiwa CONNECTION_V2 di server tertentu, status_d kolom menunjukkan kode kesalahan koneksi klien yang dihadapi oleh aplikasi klien saat menyambungkan.

    AzureDiagnostics
    | where Resource  == '<your server name>' //Server name must be in Upper case
    | where Category == 'MySqlAuditLogs' and event_subclass_s == "CONNECT"
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, user_s, ip_s, status_d
    | order by TimeGenerated asc nulls last
    
  • Daftar peristiwa KONEKSI pada server tertentu

    AzureDiagnostics
    | where Resource  == '<your server name>' //Server name must be in Upper case
    | where Category == 'MySqlAuditLogs' and event_class_s == "connection_log"
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
    | order by TimeGenerated asc nulls last
    
  • Meringkas peristiwa yang diaudit pada server tertentu

    AzureDiagnostics
    | where Resource  == '<your server name>' //Server name must be in Upper case
    | where Category == 'MySqlAuditLogs'
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
    | summarize count() by event_class_s, event_subclass_s, user_s, ip_s
    
  • Membuat grafik distribusi jenis peristiwa audit di server tertentu

    AzureDiagnostics
    | where Resource  == '<your server name>' //Server name must be in Upper case
    | where Category == 'MySqlAuditLogs'
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
    | summarize count() by Resource, bin(TimeGenerated, 5m)
    | render timechart
    
  • Mencantumkan peristiwa yang diaudit di semua instans server fleksibel Azure Database for MySQL dengan Log Diagnostik diaktifkan untuk log audit

    AzureDiagnostics
    | where Category == 'MySqlAuditLogs'
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s
    | order by TimeGenerated asc nulls last
    

Langkah berikutnya