Log audit di Azure Database for MySQL

BERLAKU UNTUKAzure Database for MySQL - Server Tunggal

Penting

Server tunggal Azure Database for MySQL berada di jalur penghentian. Kami sangat menyarankan Agar Anda meningkatkan ke server fleksibel Azure Database for MySQL. Untuk informasi selengkapnya tentang migrasi ke server fleksibel Azure Database for MySQL, lihat Apa yang terjadi pada Server Tunggal Azure Database for MySQL?

Di Azure Database for MySQL, log audit tersedia untuk pengguna. Log audit dapat digunakan untuk melacak aktivitas tingkat database dan biasanya digunakan untuk kepatuhan.

Mengonfigurasi log audit

Penting

Sebaiknya cukup catat jenis peristiwa dan pengguna yang diperlukan untuk tujuan audit Anda guna memastikan performa server tidak terlalu terpengaruh dan jumlah data minimum yang dikumpulkan.

Secara default log audit dinon-fungsikan. Untuk mengaktifkannya, set audit_log_enabled ke AKTIF.

Parameter lain yang dapat Anda sesuaikan 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.
  • audit_log_exclude_users: Pengguna MySQL yang akan dikecualikan untuk pengelogan. Panjang maksimum parameter adalah 512 karakter.

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 ion (berhasil atau tidak berhasil)
- Autentikasi ulang pengguna dengan pengguna/kata sandi yang berbeda selama sesi
- 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 - Tersedia untuk MySQL 5.7 dan MySQL 8.0
- Pernyataan baca tabel, seperti SELECT atau INSERT INTO ... PILIH
- Pernyataan penghapusan tabel, seperti DELETE atau TRUNCATE TABLE
- Pernyataan sisipan tabel, seperti INSERT atau REPLACE
- Pernyataan pembaruan tabel, seperti PERBARUI

Mengakses log audit

Log audit terintegrasi dengan Log Diagnostik Azure Monitor. Setelah mengaktifkan log audit di server MySQL, Anda dapat memancarkannya ke log Azure Monitor, Pusat Aktivitas, atau Azure Storage. Untuk mempelajari selengkapnya tentang cara mengaktifkan log diagnostik di portal Azure, lihat artikel portal log audit.

Catatan

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

Skema Log Diagnostik

Bagian berikut menjelaskan output apa yang dihasilkan oleh 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
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nama server
event_class_s connection_log
event_subclass_s CONNECT, DISCONNECT, CHANGE USER (hanya tersedia untuk MySQL 5.7)
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

Umum

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

Catatan

Untuk sql_text, 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
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

Log akses tabel hanya output untuk MySQL 5.7.
Untuk sql_text, 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
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 LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlAuditLogs' and event_class_s == "general_log"
    | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s 
    | order by TimeGenerated asc nulls last 
    
  • Daftar peristiwa KONEKSI pada server tertentu

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlAuditLogs' and event_class_s == "connection_log"
    | project TimeGenerated, LogicalServerName_s, 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 LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlAuditLogs'
    | project TimeGenerated, LogicalServerName_s, 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 LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlAuditLogs'
    | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s 
    | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m)
    | render timechart 
    
  • Daftar peristiwa yang diaudit di semua server MySQL dengan Log Diagnostik diaktifkan untuk log audit

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

Langkah berikutnya