MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Audit Logging untuk MongoDB

Salah satu aspek keamanan dalam mengelola database adalah memahami siapa yang mengakses database, kapan, dan apa yang mereka lakukan. Meskipun kami telah mengamankan layanan MongoDB, kami masih ingin tahu siapa yang melakukan apa, dan mendeteksi jika ada sesuatu yang aneh. Dalam investigasi pelanggaran data, log audit memungkinkan kami menganalisis aktivitas historis, memahami dari titik akhir mana penyerang berasal, dan operasi apa yang mereka lakukan begitu mereka berada di dalam database.

Di blog ini, kami akan meninjau log audit untuk MongoDB dan implementasinya.

Mengaktifkan Audit Logging di MongoDB

Untuk mengaktifkan audit logging di MongoDB, kita perlu membuka file konfigurasi mongod.conf, bagian auditLog:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson

Ada 3 jenis tujuan log, yaitu:file, syslog, dan console. Idealnya, kami dapat mengirim log audit ke file, dalam format yang didukung JSON atau BSON. Kami juga dapat mengaktifkan log audit saat memulai layanan MongoDB seperti yang ditunjukkan di bawah ini:

mongod --dbpath /var/lib/mongodb --auditDestination file --auditFormat BSON --auditPath /var/lib/mongodb/audit_mongodb.bson

Filter Audit di MongoDB

Masih di bagian auditLog, ada parameter yang disebut filter. Kita dapat memfilter pola tindakan yang ingin kita log. Misalnya, jika kita ingin melakukan otentikasi log ke database tertentu, kita dapat menggunakan perintah di bawah ini:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: '{ atype: "authenticate", "param.db": "user_profile" }'

Ini akan melacak setiap otentikasi ke database user_profile. Contoh lain:kami ingin melacak tindakan; drop index, rename collection, dan drop collection di database user_profile. Perintahnya adalah :

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: { atype: { $in: [ "dropIndex", "renameCollection", "dropCollection" ] }, "param.ns": /^user_profile\\./ } }

Kami juga dapat memantau proses audit untuk peran tertentu, kami perlu menentukan peran dan database di filter:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: { roles: { role: "readWrite", db: "user_profile" } }

Ini akan mencatat setiap tindakan yang terkait dengan pengguna yang memiliki peran readWrite dalam database user_profile.

Untuk audit logging operasi tulis dan baca, kita harus mengaktifkan auditAuthorizationSuccess di MongoDB terlebih dahulu. Kita dapat menjalankan perintah di bawah ini :

db.adminCommand( { setParameter: 1, auditAuthorizationSuccess: true } )

Atau opsi lain adalah mengubah yang berikut di mongod.conf seperti di bawah ini:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: { roles: { role: "readWrite", db: "user_profile" } }
setParameter: { auditAuthorizationSuccess: true }

Percona Server for MongoDB memberikan fitur audit logging secara gratis, sedangkan di MongoDB hanya tersedia di Enterprise Edition. Harap perhatikan bahwa mengaktifkan parameter akan memengaruhi kinerja database MongoDB Anda, terutama di lingkungan produksi.

Apa selanjutnya?

Kita bisa mengirimkan log audit MongoDB ke Logging Management System, contoh :ELK (Elasticsearch, Logstash, dan Kibana) stack atau kita bisa menggunakan Log Management System dari provider untuk keperluan analisis.

Cara paling sederhana adalah dengan menggunakan utilitas jq tools di lingkungan Linux untuk membaca log dalam format JSON atau BSON.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Operasi Dorong di MongoDB

  2. $lookup pada ObjectId dalam array

  3. Kesalahan:getaddrinfo ENOTFOUND di nodejs untuk mendapatkan panggilan

  4. Bagaimana saya bisa menggunakan cursor.forEach() di MongoDB menggunakan Node.js?

  5. Dukungan Geospasial di MongoDB