Log audit di Azure Database for MySQL
BERLAKU UNTUK: Azure Database for MySQL - Server Tunggal
Penting
Azure Database for MySQL - Server Tunggal berada di jalur penghentian. Kami sangat menyarankan Anda untuk meningkatkan ke Azure Database for MySQL - Server Fleksibel. Untuk informasi selengkapnya tentang migrasi ke Azure Database for MySQL - Server Fleksibel, 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 audit pengelogan
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, setel 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 akan mencakup semua pengguna untuk pengelogan. Hal ini memiliki prioritas lebih tinggi daripadaaudit_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 | Deskripsi |
---|---|
CONNECTION |
- Inisiasi koneksi (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 - 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 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 Premium Storage 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 disertakan dan urutan munculnya dapat bervariasi.
Koneksi
Properti | Deskripsi |
---|---|
TenantId |
ID penyewa Anda |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Cap 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 | Deskripsi |
---|---|
TenantId |
ID penyewa Anda |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Cap 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 | Deskripsi |
---|---|
TenantId |
ID penyewa Anda |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Cap 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