Menyiapkan keamanan MongoDB bukan satu langkah besar, melainkan rangkaian kebiasaan kecil yang saling menutup celah: autentikasi menyala, hak akses minimum, jaringan terbatas, TLS aktif, dan kredensial yang dikelola dengan benar. Dokumentasi resmi MongoDB merangkum semuanya dalam security checklist yang wajib dikunjungi sebelum sistem menyentuh data nyata. Chapter ini menerjemahkan daftar itu menjadi tabel periksa yang bisa langsung Anda pakai — lengkap dengan rujukan chapter tempat setiap poin dibahas.

Cara Memakai Daftar Ini #

Jalankan audit dalam tiga situasi: sebelum peluncuran pertama, setelah perubahan arsitektur besar (cluster baru, layanan baru), dan secara berkala tiap kuartal. Tandai setiap baris dengan salah satu dari tiga status: lolos, perlu tindakan, atau tidak relevan — baris ketiga pun harus punya alasan tertulis. Daftar yang tidak pernah dikunjungi ulang akan basi begitu arsitektur berubah.

Authentication dan User #

#PemeriksaanRujukan
1Autentikasi menyala (security.authorization: enabled), tidak ada server terbuka tanpa loginAuthentication
2Tidak ada user dengan password kosong atau bawaanDatabase Users
3Setiap aplikasi memiliki user sendiri — tidak berbagi akun antar layananDatabase Users
4Password dirotasi secara berkala dan tidak pernah tersimpan di repositoriCredential Management
5Mekanisme autentikasi modern (SCRAM-SHA-256 atau x.509 untuk lingkungan matur)Authentication

Authorization #

#PemeriksaanRujukan
6Setiap user memegang role paling kecil yang cukup — readWrite pada satu database, bukan rootLeast Privilege, Role-Based Access Control
7Tidak ada user root untuk keperluan aplikasi sehari-hariRole-Based Access Control
8Role kustom dibuat hanya saat role bawaan tidak cukup, dan didokumentasikanRole-Based Access Control
9Daftar user dan role diaudit berkala; user lama yang tidak terpakai dihapusDatabase Users

Jaringan dan Transport #

#PemeriksaanRujukan
10net.bindIp tidak di-set 0.0.0.0 tanpa firewall yang menyertaiNetwork Access Control
11Port 27017 (dan port cluster lain) tidak terbuka ke internet publikNetwork Access Control
12TLS aktif untuk koneksi klien-server dengan sertifikat yang valid dan belum kedaluwarsaTLS dan Enkripsi, Encryption in Transit
13Komunikasi antar anggota cluster juga terenkripsi (membership auth)Encryption in Transit
14Whitelist IP di Atlas (atau security group di cloud) membatasi sumber koneksiNetwork Access Control

Data dan Konfigurasi #

#PemeriksaanRujukan
15Enkripsi at-rest dipertimbangkan: disk terenkripsi (Community) atau encryptionAtRest (Enterprise)Encryption at Rest
16Query aplikasi memakai objek filter eksplisit — tidak ada penyusunan string mentah dari input penggunaInjection Attacks
17Input pengguna divalidasi tipe dan bentuknya sebelum menyentuh queryInjection Attacks
18Validator schema collection aktif untuk data kritisSchema Validation (section sebelumnya)
19javascriptEnabled dimatikan bila $where tidak dipakaiQuery Errors, dokumentasi resmi

Operasional #

#PemeriksaanRujukan
20Audit trail tersedia (audit facility Enterprise, profiler, atau log platform)Auditing
21Backup terenkripsi, teruji dipulihkan, dan tersimpan terpisah dari sumbernyaBackup dan Recovery (section berikutnya)
22Versi server dan driver terkini dengan patch keamanan terpasangUpgrade MongoDB
23Monitoring aktif untuk anomali koneksi dan beban tak wajarMonitoring Performa
24Prosedur respons insiden tertulis, termasuk cara memutar kredensial daruratDisaster Recovery

Verifikasi Cepat dari mongosh #

Beberapa poin di atas bisa diperiksa langsung dari shell. Pada server latihan kita — yang memang sengaja tanpa autentikasi — hasilnya justru menjadi contoh pembacaan:

js
db.adminCommand({ getCmdLineOpts: 1 }).parsed.security
db.adminCommand({ getCmdLineOpts: 1 }).parsed.net.bindIp

Output yang Dihasilkan:

text
{ authorization: 'disabled' }
'127.0.0.1'

Dua baris itu menceritakan dua hal berbeda. authorization: 'disabled' memastikan server latihan memang tidak memeriksa identitas — pada produksi, nilai ini wajib enabled. Sebaliknya bindIp: '127.0.0.1' adalah kabar baik: server hanya mendengar koneksi lokal, sehingga meski autentikasi mati, server tidak terbuka ke jaringan luar. Pasangan hasil seperti ini menunjukkan kenapa audit harus membaca konfigurasi aktual, bukan sekadar mengingat niat saat instalasi.

Rangkuman #

  • Audit keamanan MongoDB adalah daftar periksa berulang — bukan tugas sekali jalan saat instalasi.
  • Empat pilar pemeriksaan: authentication, authorization, jaringan/TLS, dan operasional (audit, backup, patch).
  • Setiap poin pada checklist resmi sudah dibahas pada chapter masing-masing — jadikan tabel ini peta akhir section.
  • getCmdLineOpts memberi tahu konfigurasi yang benar-benar aktif di server, termasuk status autentikasi dan bindIp.
  • Kombinasi “autentikasi mati + jaringan terbuka” adalah kesalahan paling mahal; pastikan minimal satu dari dua kunci itu selalu terpasang.