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_enabled
parameter 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 daripadaaudit_log_exclude_users
. Panjang maksimum parameter adalah 512 karakter. Misalnya, nilai kartubebasdev*
menyertakan semua pengguna dengan entri yang dimulai dengan kata kuncidev
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, nilaistage*
kartubebas mengecualikan semua pengguna dengan entri yang dimulai dengan kata kuncistage
seperti "stage1,stage_user,stage_2". Contoh lain untuk entri kartubebas untuk mengecualikan pengguna ada*com
dalam contoh ini, semua pengguna yang berakhiran dengan nilaicom
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 , , DISCONNECT CHANGE 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
- Pelajari log kueri lambat lebih lanjut
- Mengonfigurasi audit