Apakah ada cara untuk mengaudit login ke MySQL? Saya ingin dapat membuat nama pengguna untuk setiap karyawan dan dengan demikian membuat jejak audit login. Namun, googling tidak memberikan hasil yang baik.
Semakin kita bisa mengaudit, semakin baik. Paling tidak, akan lebih baik untuk mengetahui siapa yang login ketika. Akan lebih baik untuk melihat siapa yang mengeksekusi permintaan apa saat itu. Log ada di sana untuk memberi tahu klien bahwa kami memilikinya karena ada informasi sensitif yang berpotensi dalam database.
Jelas, mampu mengaudit pertanyaan yang dieksekusi oleh setiap pengguna (dan kapan) juga akan memberi kita kemampuan untuk menentukan dengan lebih baik siapa yang menjadi penyebab masalah keamanan jika harus muncul.
mysql
authentication
audit
statichippo
sumber
sumber
Jawaban:
Anda mungkin ingin menggunakan log kueri umum .
Satu hal penting dengan pencatatan keamanan adalah penyerang tidak dapat mengakses log untuk menghapus jejak keberadaan mereka, jadi pertimbangkan file-file append-only .
FWIW di Oracle kami dapat mengirim log secara otomatis ke syslog jarak jauh , tapi saya belum percaya MySQL memiliki fitur ini. Mungkin Anda bisa memalsukannya dengan SNMP tetapi saya belum mencobanya.
sumber
Jawaban oleh @Gauis luar biasa. Untuk menambahkan lebih lanjut, Anda dapat mengikuti:
MySQL 5.1 sekarang memungkinkan menyimpan log umum dan log kueri lambat sebagai tabel SQL.
Tambahkan ini ke /etc/my.cnf:
Mulai ulang mysql
Kemudian, ketika mysqld membuat log umum, alih-alih file teks itu akan membuat tabel sebagai tabel CSV di folder / var / lib / mysql / mysql (database skema mysql).
Lakukan ini untuk melihatnya:
Semua koneksi akan menumpuk di dalamnya.
Bagi Anda, itu tidak terlalu berguna untuk menanyakannya. Itu hanya akan menjadi pemindaian tabel penuh setiap kali.
Apa yang harus dilakukan ??? CONVERT IT UNTUK MyISAM dan INDEX THE TABLE !!!!
Secara opsional, Anda mungkin ingin meletakkan indeks teks lengkap pada bidang argumen.
Saya baru saja mengatur MySQL 5.5.9 di server dan mencoba ini. Inilah hasilnya:
Sekarang, Anda dapat melakukan query berdasarkan cap waktu dan mencari token khusus di bidang argumen.
Misalnya, perhatikan baris 4 SELECT yang saya lakukan. Log masuk saya dicatat di bidang argumen sebagai
[email protected] on
. Anda dapat melacak ini.Bagaimana jika sang jenderal terlalu besar (Percayalah, ia akan menjadi terlalu besar dengan sangat cepat)
Apa yang harus dilakukan ???
BTW Setelah log umum offline, Anda dapat menjalankannya untuk mengumpulkan login berbeda yang melakukan sesuatu di mysqld:
Saya punya klien dengan 3 server DB. Eeach with DB Server memiliki lebih dari 1.000.000.000 (1 miliar [ribuan juta]) baris di dalamnya. Script di atas membutuhkan waktu 2,5 jam untuk selesai. Tabel audit_user_host berakhir dengan 27 login berbeda.
Anda harus baik untuk pergi.
Bersenang-senang dengan yang ini, semuanya !!!
sumber
Alih-alih melakukan begitu banyak hal secara manual, cukup instal plugin Audit yang memberikan lebih banyak wawasan di tingkat pengguna
http://www.mysql.com/products/enterprise/audit.html
Ini tersedia pada edisi MySQL komersial tertentu, Akan lebih bagus jika ada garpu MySQL yang ditambahkan dalam edisi komunitas juga sehingga sebagian besar orang mendapatkan manfaat dari fitur ini, jika tidak kita harus mengandalkan solusi yang disediakan oleh @Rando_MQLQLDBA.
sumber
@statichippo
Cara menginstal pendataan audit di MySQL.
+ Audit logging hanya mendukung MySQL Enterprise
+ Anda dapat menginstal audit logging di Komunitas MySQL:
1. Salin file audit_log.so dengan Anda dapat menginstal MySQL Enterprise Trial, lalu salin file audit_log.so ke Komunitas MySQL.
2. Salin audit_log.so ke plugin_dir sebagai / usr / lib64 / mysql / plugin atau Anda dapat menampilkan dir plugin dengan:
Buka konsol mysql: mysql> tampilkan variabel global seperti '% plugin%';
3. Instal pendataan audit sebagai:
mysql> INSTALL PLUGIN audit_log SONAME 'audit_log.so';
mysql> TAMPILKAN VARIABEL SEPERTI 'audit_log%';
4. Pencatatan audit keluaran:
tail -f /var/lib/mysql/audit.log
Terimakasih banyak.
sumber