Cara menggunakan mysql audit log table

Karena itu, keberadaan Log Audit Trail seharusnya tidak menjadi beban bagi pengguna aplikasi, walaupun tidak dapat dipungkiri bahwa sebagian pengguna justru merasa takut, dan seolah-olah dimata-matai dengan adanya Log Audit Trail.


Tetapi dengan pengertian bahwa sudah menjadi tanggung jawab kita masing-masing untuk melakukan tugas tersebut, maka Log Audit justru bukan untuk menjadi bukti kesalahan agar dapat menghukum, tetapi justru menjadi pelindung, dan salah satu bukti konsistensi dan kinerja yang baik.


Andaikan terjadi kesalahan yang tidak disengaja, hal tersebut akan bermanfaat bagi kita untuk melakukan instospeksi dan koreksi sehingga menghasilkan sesuatu yang lebih baik lagi.


Cara Kerja

Di luar aplikasi database, mungkin Anda sering mendengar berbagai macam log, misalnya Log Event pada sistem operasi Windows. Log tersebut otomatis diciptakan untuk setiap event yang terjadi pada sistem.


Log Audit Trail pada aplikasi database bekerja seperti halnya log pada umumnya, di mana log otomatis tercipta, tetapi khusus untuk event operasi database yang dilakukan pengguna pada aplikasi.


Log Audit Trail terpasang pada setiap event pengoperasian database, yang umum sebagai berikut:

  1. INSERT.
    Yaitu saat sebuah data diciptakan, Log Audit mencatat record baru tersebut, lengkap dengan masing-masing field/kolom yang terdapat pada table.
  2. UPDATE.
    Saat terjadi perubahan field pada suatu table, Log Audit mencatat perubahan tersebut dari nilai sebelum terjadi perubahan.
  3. DELETE.
    Untuk setiap penghapusan data, Log Audit mencatat data yang dihapus.


Format
Sebuah Log Audit Trail, sudah semestinya dapat diakses dengan mudah. Dari sisi media penyimpanan, Anda dapat memilih untuk menyimpan data Log Audit Trail dalam bentuk file binary/text, ataupun dalam bentuk table.


Berikut adalah pengembangan untuk masing-masing jenis media penyimpanan.

  1. File Binary.
    Mengingat ukurang log yang dapat mencapai ukuran realtif besar, Anda dapat melakukan penghematan kapasitas ruang harddisk, dengan menyimpan log pada file binary. Walaupun memiliki keuntungan dari sisi penggunaan kapasitas, tetapi file binary tentunya tidak dapat dibaca begitu saja melalui text editor, karena Anda hanya akan melihat karakter-karakter biner yang tidak dapat dimengerti. Anda harus membuat modul atau program untuk melakukan konversi file biner ini, menjadi format yang dapat dibaca dengan mudah.
  2. File Teks.
    Merupakan jenis log yang mudah digunakan oleh siapapun, Anda dapat langsung melihatnya ppada text editor favorit Anda. Kerugiannya selain menyita kapasitas harddisk yang relatif besar, juga tidak terdapat keamanan yang memadai. Siapapun yang dapat mengakses file tersebut akan dapat melihat isi file log dan mengubahnya, jika memiliki hak untuk mengedit file tersebut.
  3. Table.
    Dengan menyimpan log di dalam table, Anda dapat memperoleh keuntungan lain, yaitu kemudahan untuk memroses lebih lanjut data log di dalam table tersebut, baik untuk kegunaan analisis ataupun pencarian data. Selain itu, penyimpanan dalam table relatif lebih aman, karena untuk mengaksesnya .harus melalui akses database yang menjadi hak database administrator. Data di dalam table juga dapat dengan mudah diekspor menjadi format text, excel, ataupun format umum lainnya, bilamana diperlukan.

Lalu, informasi apa saja yang perlu disimpan dalam sebuah Log Audit Trail aplikasi database? Beberpa field di bawah dapat Anda pertimbangkan:

  1. Tanggal dan jam.
  2. User/Pengguna.
  3. Nama table yang diakses.
  4. Aksi yang dilakukan (INSERT, DELETE, ataukah UPDATE).
  5. Informasi field/kolom yang diproses, termasuk dengan nilai pada masing-masing field.

Pemrograman Log Audit Trail

Untuk melakukan pemrograman Log Audit, Anda perlu menentukan operasi pada table, mana saja yang perlu dilakukan proses penyimpanan Log Audit, karena mungkin Anda tidak memerlukan log dari seluruh table. Proses log sedikit banyak memerlukan resource dari kapasitas harddisk, sehingga dapat mempengaruhi performance aplikasi secara keseluruhan, terutama jika aplikasi Anda digunakan dalam frekuensi yang cukup tinggi, di mana terjadi operasi database yang cepat dan terus-menerus.


Untuk itu, Anda dapat memilih table master ataupun table transaksi yang penting.


Sekarang, persoalan utamanya bagi seorang programmer adalah bagaimana untuk membuat Log Audit Trail? Anda dapat pertimbangkan beberapa pendekatan teknink pemrograman berikut ini.


Menyimpan Query
Jika Anda menggunakan SQL Statement untuk setiap operasi INSERT, DELETE, UPDATE, cara ini relatif lebih mudah. Salah satu contoh penggalan program yang mungking sering Anda ketik adalah sebagai berikut:

Sql = "INSERT INTO tCustomer
(kodecust,nama) VALUES ('001' , 'Tom')"
Conn.execute Sql

Program di atas menyimpan sebuah record baru pada table tCustomer, SQL statement ditampung ke dalam variabel Sql, yang kemudian dieksekusi dengan menggunakan method execute pada object Conn (Connection).

Anda dapat menyimpan query di atas ke dalam table Log, untuk keperluan tersebut. Anda dapat membuat function atau procedure sederhana, dan dijalankan segera setelah perintah eksekusi query di atas.

Tentu saja Anda perlu menyimpan tanggal dan jam, beserta user yang login ke dalam table Log tersebut.

Lakukan hal yang sama pada statement UPDATE dan DELETE. Dengan menggunakan cara ini, seluruh log tersimpan pada sebuah table khusus. Selanjutnya, Anda perlu menyiapkan sebuah form untuk menmpilkan isi table tersebut.

Karena sedemikian banyaknya record yang dapat tersimpan, Anda perlu memberikan fasilitas Search agar memudahkan pencarian. Search dapat berdasarkan username, tanggal (ataupun periode tanggal), atau sebagian dari isi query.

Pencarian berdasarkan isi query mengizinkan Anda untuk dapat mencari sebagian string yang terkandung dalam setiap query yang dieksekusi. Contohnya, Anda dapat mencari item produk tertentu, dan melihat apakah terjadi operasi INSERT, UPDATE, ataupun DELETE yang berkaitan dentgan item tersebut.

Walaupun relatif mudah dalam pemrogramannya, tetapi terdapat beberapa konsekuensi. Bisa saja Anda dengan cukup mudah membaca query tersebut, tetapi tidak demikian dengan orang yang tidak memahami SQL statement.

Cara ini juga mengharuskan Anda menggunakan SQL statement dalam setiap pengoperasian database.

Menggunakan Trigger
Jika Anda menggunakan relational database ynag mendukung penggunaan trigger seperti Microsoft SQL  Server atau MySQL (di mulai dari versi 5.0.2), Anda dapat memanfaatkannya untuk membuat Log Audit Trail.

Trigger merupakan kumpulan SQL statement, yang secara otomatis melakukan aksi saat terjadi sebuah event INSERT, UPDATE, ataupun DELETE pada sebuah table. Dengan kemampuan ini, setiap event di atas terjadi, maka akan diarahkan untuk melakukan aksi menyimpan log.

Contohnya saat terjadi operasi INSERT suatu table, Anda dapat membuat trigger seperti di bawah (dibuat dalam versi Microsoft SQL Server).

INSERT INTO tCustomer_Log SELECT
*,getdate ()  FROM inserted

Asusmsi trigger di atas diaktifkan pada table tCustomer, jika terjadi penambahan data pada tCustomer, maka record baru tersebut akan ditulis ke table tCustomer_Log, ditambah dengan tanggal dan jam yang dibuat oleh function getdate().

Pada saat UPDATE, contoh trigger yang dapat Anda lakukan adalah:
DECLARE @tID as uniqueindentifier

set @tID = newid

INSERT INTO tCustomer_Log SELECT
*,getdate(),0,@tID FROM deleted
INSERT INTO tCustomer_Log SELECT
*,getdate() ,1,@tID FORM inserted

Log Audit Trail untuk operasi UPDATE merupakan hal yang paling kompleks, karena Log Audit yang baik akan mencatat perubahan dari data lama ke data baru.

Perhatikan beberapa point penting pada statement di atas:

  1. deleted dan inserted
    Pada saat dilakukan update, Anda dapat membayangkan telah dilakukan dua proses pada sistem database, yaitu menghapus record lama, dan menambah record baru pada posisi yang sama. Keyword deleted berisi dengan nilai-nilai field yang dihapus, sementara keyword inserted berisi dengan kumpulan nilai-nilai field yang baru.
  2. getdate() ,0,@ID
    function gedate() untuk mencatat waktu seperti biasa, kode 0 digunakan untuk menandakan bahwa record yang dihapus (deleted), atau kode 1 yang digunakan untuk menandakan bahwa record tersebut adalah record yang ditambah (inserted). Anda dapat menggunakan kode/flag lain yang sesuai dengan cara Anda.
    Sedangkan @ID merupakan variabel yang digunakan sebagai key untuk menghubungkan record yang dihapus dan diubah.

Trigger dilakukan pada level database, sehingga pemrogramannya dilakukan pada back-end/database. Sementara contoh log audit dengan menyimpan query sebelum nya dilakukan pada level aplikasi, di mana pemrogramannya tergantung dengan bahasa pemrograman yang Anda gunakan (misalnya VB, C, Delphi).


Teknik di atas menyimpan log pada table-table yang terpisah, sesuai dengan field yang dimiliki oleh table tersebut. Dengan demikian, log yang dihasilkan akan lebih baik dan deskriptif, mampu menampilkan perubahan dari data lama ke data baru.


Konsekuensi teknik di atas, relatif memerlukan pemrograman yang lebih kompleks. Anda juga harus terus meng-update table log jika terjadi perubahan struktur field pada table master/transaksi yang di log, agar terus tercipta integrasi anatara table log dan table utamanya.


Selain itu sebagai syarat mutlak, tentunya database Anda harus mendukung trigger.


Perlindungan Data Log
Data log yang dihasilkan Audit Trail perlu dilindungi tidak hanya secara fisik, tetapi juga dalam hal akurasi datanya. Jika data log yang dihasilkan tidak akurat, maka data log tersebut tidak akan memiliki kegunaan yang diharapkan.


Bisa jadi secara sistem yang terkomputerisasi, Log Audit Trail Anda terjamin mampu merekam setiap kegiatan pengguna dan melaporkannya secara instant, disertai grafik dan warna-warni yang aduhai.


Tetapi kesalahan yang kerap terjadi, sistem dikuasai hanya oleh satur orang. Orang tersebut yang membuat aplikasi Log Audit, dapat melihat data log, dan bahkan dapat saja memodifikasinya kapan saja.. Jika orang tersebut adalah Anda, lebih baik Anda membuat surat resign daripada membanggakan hal tersebut. Mengapa demikian?


Melindungi data log, sama halnya dengan melindungi pengguna aplikasi, dan bahkan melindungi sistem secara keseluruhan. Karena itu sebelum mengimplementasikan Log Audit Trail, pastikan Anda tidak melewatkan hal penting ini, atau Log Audit Trail Anda hanyalah pekerjaan yang sia-sia. Hal yang harus dilakukan adalah membagi wewenang dan tanggung jawab pada beberapa personil yang berbeda.


Contoh ilustrasinya, Mr. X bertanggung jawab atas keamanan dan maintenance data log. Beliau mungkin dapat melakukan backup secara periodik, tetapi tidak perlu memiliki fasilitas untuk mengakses content data log tersebut.


Anda sebagai programmer yang mewujudkan Log Audit Trail, tetap tidak memiliki hak untuk memodifikasi data log yang dihasilkan oleh aplkasi Anda, di mana Anda harus melewati ruangan Mr. X yang bertubuh kekar, jika ingin ke server  data log.


Anda juga harus menyediakan fitur user friendly untuk pimpinan Anda, yang sewaktu-waktu dapat mengakses data log untuk melakukan review.


Jika sampai tahap ini Anda merasa dunia tidak berlaku adil bagi Anda, itu adalah indikasi bahwa pimpinan tidak memberi gaji yang cukup.


Masih terdapat beberapa cara untuk melindungi data log, misalnya dengan mengandalkan teknologi digital signature, ataupun menggunakan media penyimpanan yang hanya dapat ditulis sekali (write-once).


Demikianlah data log harus mendapat perlakuan istimewa untuk mencegah akses yang tidak diinginkan (atau sangat diinginkan oleh pihak tertentu), dengan demikian Log Audit Anda memiliki kegunaan yang sebenarnya.


Software Log Audit Trail
Dengan membuat log sendiri Log Audit Trail, Anda memperoleh banyak keuntungan, antara lain sistem yang terintegrasi, ataupun dapat dimodiifkasi sesuai keinginan Anda. Tetapi bagaimana jika Anda tidak memiliki waktu atau sumber daya untuk membuat Log Audit Trail sendiri?


Untuk keperluan itu, Anda dapat menggunakan produk software third party yang menyediakan kemampuan Log Audit Trail. Tentu saja Anda harus tetap meluangkan waktu untuk memilih software yang paling cocok dengan database, aplikasi, dan kebutuhan Anda.


Beberapa pilihannya adalah:

  1. ApexSQL Audit.
    Bekerja pada database Microsoft SQL Server, ApexSQL Audit menggunakan front end berbasis web, dengan menggunakan ASP untuk melakukan reporting-nya.
  2. Visual Audit Trail.
    Memiliki kemampuan untuk melaporkan perubahan data, baik sebelum dan sesudah terjadinya perubahan. Visual Audit Trail mendukung Microsoft SQL Server dan Centura SQLBase.

Banyak lagi pilihan lainnya yang dapat Anda temukan di internet. Sebagai panduan dalam melakukan review software Log Audit sebelum Anda memutuskan untuk menggunakannya, ada baiknya Anda memperhatikan point-point berikut:

  1. Dapat melakukan log pada operasi insert, update, dan delete secara realtime.
  2. Dapat diterapkan pada table yang Anda inginkan.
  3. Keuntungan tambahan jika dapat memilih field apa saja yang ingin di-log pada sebuah table.
  4. Hasil log dapat dilihat dan difilter dengan mudah, atau memiliki fasilitas export ke tipe file yang umum.
  5. Apakah informasi/laporan yang ditampilkan sudah memenuhi kebutuhan Anda.

Penutup
Terdapat beberapa cara untuk menghasilkan Log Audit Trail seperti yang telah dijabarkan. Setiap aplikasi memiliki keunikan tersendiri (sesuai dengan keunikan programmer-nya), sehingga tidak terutup kemungkinan Anda mencari cara tersendiri yang cocok bagi aplikasi Anda.


Jangan melupakan file management, dengan mempertimbangkan backup log secara periodik.


Mungkin banyak yang beranggapan Log Audit Trail dianggap sebagai fitur pelengkap aplikasi, yang pada praktiknya mungkin hanya digunakan pada saat tertentu. Tetapi di sisi lain, Log Audit Trail menjadi begitu penting saat terjadi sebuah permasalahan.


Tentu saja, jika Log Audit Trail tidak perlu digunakan untuk melacak kesalahan, sudah seharusnya Anda bersyukur, karena hal tersebut merupakan salah satu indikasi sistem aplikasi Anda telah berjalan baik.