Prevalensi pelanggaran data tidak lagi mengejutkan. Berdasarkan laporan kejahatan dunia maya FBI yang baru saja dirilis, korban kejahatan dunia maya secara kumulatif telah kehilangan $4,2 miliar pada tahun 2020 yang merupakan $700 juta lebih banyak dari kerugian yang dilaporkan pada tahun 2019. Secara khusus, basis data MongoDB yang tidak aman telah menjadi bagian dari masalah yang mengarah pada pelanggaran data yang signifikan. . Pada bulan Februari 2019, sebuah perusahaan layanan verifikasi email memiliki basis data MongoDB mereka yang dilanggar dan mengekspos 763 juta catatan termasuk alamat email, nomor telepon, alamat IP, dan tanggal lahir. Alasannya adalah, instance MongoDB yang dihadapi publik tanpa kata sandi.
Kurangnya autentikasi, tidak ada pembatasan port pada firewall, atau kegagalan mengamankan data dalam pengiriman dapat menyebabkan pelanggaran data. Di blog ini, kita akan membahas bagaimana mempersiapkan dan mengamankan database MongoDB Anda di lingkungan produksi.
Otentikasi dan Otorisasi
Otentikasi dan otorisasi adalah dua hal yang berbeda, tetapi keduanya berkorelasi. Otentikasi berarti pengguna memiliki akses ke database MongoDB sementara otorisasi mengizinkan pengguna untuk mengakses sumber daya di dalam database.
Instalasi default untuk otentikasi di MongoDB dinonaktifkan. MongoDB mendukung beberapa otentikasi misalnya:SCRAM, x.509 Sertifikat Otentikasi. Yang default di MongoDB adalah SCRAM (Salted Challenge Response Authentication Mechanism), yang memverifikasi akses kredensial yang diberikan dengan nama pengguna, kata sandi, dan database otentikasi.
Sebelum mengaktifkan otentikasi, silahkan buat superuser di MongoDB dengan role userAdminAnyDatabase. Setelah selesai, kita hanya perlu membuka file /etc/mongod.conf dan menemukan bagian keamanan. Defaultnya dinonaktifkan, kita hanya perlu mengaktifkannya.
security:
authorization: "disabled"
Mulai ulang layanan MongoDB untuk menerapkan perubahan konfigurasi. Kami juga dapat mengonfigurasi RBAC (Role Based Access Control) di dalam database MongoDB untuk keamanan yang lebih baik terkait dengan pengguna. Jadi kami memisahkan akses ke database berdasarkan pengguna dan hak istimewa.
Segmentasi Jaringan
Segmentasi jaringan merupakan aspek penting ketika kita mendesain arsitektur database, ini berlaku untuk semua database, tidak hanya untuk MongoDB. Ini adalah praktik terbaik bahwa kami memisahkan jaringan untuk database. Kami mengatur server database di jaringan pribadi, di mana tidak dapat dijangkau dari internet.
Komunikasi ke database terjadi di jaringan pribadi, dan ketika pengguna ingin mengakses database, mereka dapat menggunakan VPN atau jumphost. Selain segmentasi jaringan, membatasi port juga memainkan peran kunci, kami membuka port database khusus untuk jaringan tersegmentasi untuk mengontrol lalu lintas jaringan masuk dan keluar. Jadi, kita tahu bahwa lalu lintas masuk berasal dari alamat sumber tepercaya.
Enkripsi Data
Area lain yang perlu kita perhatikan adalah enkripsi data. Enkripsi data adalah metode di mana informasi dikodekan ke bentuk lain selama transmisi dan disimpan dalam database.
Enkripsi data mencakup:
-
Data dalam perjalanan:data dalam status transmisi
-
Data saat istirahat:data yang disimpan di disk. Ada berbagai jenis enkripsi data saat istirahat, kita dapat menggunakan enkripsi pada tingkat basis data, atau kita dapat menggunakan enkripsi pada lapisan penyimpanan.
Mengaktifkan SSL/TLS dari klien dan server MongoDB dan antara node MongoDB (dalam arsitektur replika dan sharded cluster), akan mengamankan data saat transit. Transfer data tidak akan dalam bentuk teks biasa.
Ada berbagai alat dan fitur enkripsi untuk enkripsi data saat tidak digunakan, misalnya; AWS menyediakan enkripsi disk EBS yang dikombinasikan dengan KMS (Layanan Manajemen Kunci) pada penyimpanan, sedangkan pada lapisan basis data, MongoDB edisi Enterprise menyediakan enkripsi basis data saat tidak digunakan.
Audit Basis Data
Mengimplementasikan database audit untuk MongoDB memberikan visibilitas tentang apa yang berjalan di dalam database; misalnya:dari pengguna mana, dan perintah apa yang dijalankan, dan sumber alamat ip. Kami dapat menggabungkan log tersebut dan membuat aturan berdasarkan akses otorisasi. Kami dapat mendeteksi jika ada pengguna yang tidak diinginkan menjalankan beberapa skrip di MongoDB. Kita bisa melihat bagian auditLog.
auditLog:
destination: syslog
Kami dapat mengirim log audit MongoDB ke dalam file syslog dan memasukkan log tersebut ke Manajemen Log. Ingin memiliki lebih banyak tips tentang mengamankan MongoDB? Tonton video ini untuk mendapatkan pemahaman yang lebih baik tentang praktik terbaik untuk mengamankan database MongoDB Anda
Kesimpulan
Menerapkan standar keamanan untuk MongoDB adalah suatu keharusan, terutama untuk lingkungan produksi. Kami tidak dapat menerima setiap kehilangan dan pelanggaran data yang disimpan dalam database.