Public Key Infrastructure memiliki beberapa jenis log, yaitu:
- Security Audit Log
Digunakan oleh Auditor PKI untuk mengaudit peristiwa penting terkait keamanan yang dijalankan oleh sistem - System Log
Digunakan untuk memonitor operasi harian dalam sistem, debug dan melacak error yang terjadi. - Transaction Log
Digunakan untuk akuntansi atau fungsi spesifik lainnya, utamanya untuk validasi (OCSP).
Security Audit Log (Log Audit Keamanan) menentukan secara terperinci aktivitas apa saja yang dicatat dan yang tidak dicatat. Beberapa peristiwa penting yang dicatat pada Log Audit Keamanan contohnya adalah ketika sertifikat dikeluarkan, saat Certificate Profile diedit, dan saat Administrator mengakses EJBCA. Salah satu hal penting yang perlu diingat adalah Log Audit Keamanan tidak mencatat hal-hal yang tidak terjadi. Maksudnya bagaimana? Maksudnya adalah Log Audit Keamanan tidak mencatat permintaan tidak valid yang ditolak oleh sistem (misal apakah sertifikat masih valid atau tidak).
Sedangkan System Log mencatat semua peristiwa yang menarik untuk dipantau seperti menolak permintaan yang tidak valid, membaca profil dan lain-lain.
Tujuan utama dari Security Audit Log adalah menyediakan informasi untuk auditor. Auditor pasti ingin tahu apa saja yang telah dilakukan oleh sistem, sertifikat apa saja yang telah dikeluarkan, tapi tidak tertarik pada bagian yang sistem tidak lakukan.
Satu hal lagi yang perlu diketahui adalah Security Audit Log itu disimpan dalam database dan System Log itu disimpan di dalam log files. Secara default, System Logs juga berisi Security Audit Log, namun hal ini bisa diatur dalam konfigurasi (apakah ingin dimasukkan atau tidak).
Sekarang mari kita membahas Security Audit Log lebih dalam:
Services, Modules, Events and Status
Event audit keamanan dibagi menjadi services, modules, events menurut dari mana ia berasal. Daftar lengkap dari berbagai jenis services, modules dan events dan sedikit penjelasan dari setiap tipenya bisa kalian baca DI SINI.
Sejak EJBCA dibangun di sekitar proyek CESeCORE, untuk melihat semua jenis events yang bisa dibuat oleh EJBCA, baik itu EventTypes dan EjbcaEventTypes di dalam API, maka doc API perlu dipertimbangkan.
Sebagai contoh, berikut ini adalah penampakan bagaimana sebuah event akan terlihat di log server menggunakan Log4jDevice ketika aplikasi dinyalakan:

dan event yang sama menggunakan IntegrityProtectedDevice yang menulis langsung log-nya ke dala database:

Penjelasan untuk gambar di atas adalah sebagai berikut:
- service-nya adalah EJBCA (tidak ditampilkan di Admin GUI): event ini berasal dari bagian aplikasi yang bukan bagian dari core-nya dan dibagikan dengan projects lain.
- module-nya adalah SERVICE: event ini dihasilkan dari sebuah modul dalam EJBCA yang bertanggung jawab akan background services.
- event-nya adalah EJBCA_STARTING: Aplikasi EJBCA sedang menyala.
- Status-nya (disebutnya outcome di admin GUI) SUCCESS. Dalam konteks sebuah event, hal ini diartikan sebagai tidak ada error yang terdeteksi selama EJBCA dinyalakan.
- Selain itu ada pesan khusus dengan informasi tambahan yang memberitahukan versi dari EJBCA yang dijalankan.
Perlu dicatat bahwa waktu yang muncul di dalam entri log itu sendiri adalah waktu kejadian dan mungkin berbeda dari waktu ketika kejadian ini ditulis ke dalam log server.
Referensi lainnya:
- Informasi keamanan terkait database integrity protection bisa dibaca DI SINI.
- Informasi terkait fitur keamanan dan kemungkinan-kemungkinan untuk memperbaiki gap yang ada bisa dibaca DI SINI.
Log4JLogDevice
Menambahkan informasi dari official event ke dalam console atau file. Ini adalah target yang sama dimana semua info yang lain/hasil debug dikirimkan. Tidak ada proteksi dari perubahan yang terjadi dan events yang dikirimkan ke dalam device ini tidak bisa diambil kembali ke EJBCA untuk ditampilkan ke Admin GUI.
IntegrityProtectedDevice
Ini merupakan fitur yang ada pada Enterprise Edition (yang gratisan nggak ada).
Integrity Protected log device menyimpan hasil audit record ke dalam tabel AuditRecordData di database. Record tersebut dapat diamankan dengan menggunakan HMAC atau tanda tangan elektronik. Lihat bagian conf/cesecore.properties untuk konfigurasinya. Untuk informasi terkait database integrity protection, kaian bisa membacanya DI SINI.
OldLogDevice
Old Log Device terakhir hanya tersedia pada EJBCA versi 4.0
Mulai dari EJBCA 5.0, tabel LogEntryData tidak lagi digunakan untuk audit log. Log entry yang sudah ada bisa diekspor dengan menggunakan CLI. Caranya:
konfigurasi conf/database.properties dengan (jika belum dilakukan):
konfigurasinya bisa dilihat DI SINI.
database.url=... database.username=... database.password=... kemudian jalankan perintah $ant oldlogexport-cli
Perintah di atas akan menghasilkan log di “dist/oldlogexport-cli/”. (Berdasarkan README)
OldLogDevice menyimpan log events di dalam database.
