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

Praktik Terbaik untuk Keamanan MongoDB

Dalam hal mengelola sistem basis data, salah satu aspek penting adalah keamanan basis data. Kegagalan untuk meletakkan dasar yang baik untuk keamanan untuk sistem basis data apa pun dapat mengakibatkan pelanggaran data di mana penyusup pihak ketiga akan memiliki akses tidak sah ke sana. Akibatnya, peristiwa seperti ini dapat menyebabkan kerusakan reputasi merek, denda, dan hukuman atas ketidakpatuhan, kekayaan intelektual yang disusupi, atau bahkan mengakibatkan penutupan bisnis.

MongoDB – database NoSQL paling populer — menyediakan berbagai alat, kontrol, dan tindakan yang diformulasikan untuk memberikan landasan bagi tiga pilar keamanan informasi — kerahasiaan, integritas, dan ketersediaan. Keamanan data paling sering dikompromikan pada tingkat kerahasiaan karena kegunaan dan akses yang lebih besar.

Jenis Data Apa yang Harus Anda Lindungi

Seperti database lainnya, MongoDB melibatkan dua jenis data:

  1. Data saat istirahat — Ini adalah data yang disimpan dalam disk sistem file.
  2. Data dalam perjalanan — Ini melibatkan pemindahan data melalui jaringan, misalnya, antara database dan aplikasi.

Untuk melindungi data Anda dalam basis data apa pun, langkah-langkah keamanan Anda harus mengatasi:

  • Data dalam file database.
  • Aplikasi yang terkait dengan database.
  • Infrastruktur komputasi dan jaringan yang digunakan untuk mengakses database.
  • Server database fisik dan perangkat keras yang mendasarinya.

Daftar Periksa Keamanan MongoDB

Sebelum menyiapkan penerapan produksi MongoDB Anda, ada standar keamanan minimum yang perlu dipertimbangkan untuk memastikan penerapan Anda akan aman. Lihat daftar periksa keamanan MongoDB berikut untuk

  1. Tentukan mekanisme autentikasi dengan mengaktifkan kontrol akses . Sebelum mengizinkan akses ke database, penting untuk memverifikasi identitas pengguna. MongoDB mendukung dua mekanisme dalam hal ini:yang pertama adalah Salted Challenge Response Authentication Mechanism (SCRAM) yang merupakan mekanisme otentikasi default di MongoDB. Ini memverifikasi kredensial yang diberikan (nama pengguna dan kata sandi) terhadap database otentikasi, dan Otentikasi Sertifikat X.509 digunakan untuk otentikasi klien dan otentikasi internal anggota kumpulan replika dan sharded cluster.

  2. Buat kontrol akses berbasis peran . Setiap aplikasi atau orang yang memiliki akses ke database harus memiliki identitas unik yang dibuat oleh administrator pengguna. Tentukan peran dengan hak akses yang tepat dan tetapkan kepada pengguna yang perlu melakukan operasi.

  3. Komunikasi antara mongod, mongos, aplikasi, dan MongoDB harus dienkripsi . Enkripsi dicapai melalui konfigurasi TLS/SSL.

  4. Perlindungan data . Jika menggunakan mesin penyimpanan WiredTiger untuk data tidak aktif, Anda dapat mengenkripsi data menggunakan enkripsi saat istirahat. Jika menggunakan mesin penyimpanan yang berbeda, enkripsi data menggunakan sistem file, enkripsi fisik atau perangkat, dan tambahkan izin sistem file. Selanjutnya, Anda dapat mengenkripsi bidang dalam dokumen dengan enkripsi tingkat Bidang Sisi Klien sebelum meneruskan data dari server.

  5. Jaringan operasi yang aman . MongoDB harus berjalan pada lingkungan jaringan tepercaya sehingga hanya klien tepercaya yang dapat memiliki akses ke antarmuka dan port jaringan. Anda dapat mencapainya dengan menonaktifkan akses root SSH langsung dan mengonfigurasi penyiapan dengan grup keamanan untuk lalu lintas masuk dan keluar ke instans MongoDB.

  6. Aktivitas sistem audit . Melacak aktivitas akses pengguna ke database sangat penting. Audit memungkinkan administrator untuk melakukan kontrol yang tepat dan mengizinkan analisis forensik yang tepat. Beberapa fasilitas audit seperti MongoDB Enterprise menyediakan filter untuk peristiwa tertentu seperti peristiwa autentikasi untuk mengurangi data yang perlu dianalisis.

  7. Aktifkan opsi konfigurasi aman saat menjalankan MongoDB . Sebaiknya batasi penggunaan kode JavaScript yang didukung oleh MongoDB seperti mapReduce, $where, dan  $function. Anda dapat sepenuhnya menonaktifkan opsi ini menggunakan opsi --noscripting. Validasi bidang input menggunakan modul seperti luwak. Selain itu, Anda dapat menggunakan net.writeObjectCheck untuk memastikan semua dokumen yang disimpan oleh instance mongod adalah BSON yang valid.

  8. Jalankan MongoDB dengan pengguna khusus . Tidak ada gunanya menjalankan MongoDB pada sistem operasi yang dapat diakses oleh banyak pengguna. Agar aman, MongoDB harus dijalankan oleh akun pengguna sistem khusus yang memiliki izin untuk mengakses data tetapi bukan izin yang tidak perlu yang dapat membahayakan integritas data.

Praktik Keamanan MongoDB yang Buruk yang Harus Dihindari

Baru-baru ini, terjadi peningkatan insiden peretasan basis data, terutama MongoDB. Ini bukan karena MongoDB tidak memenuhi standar untuk mengatasi masalah keamanan, melainkan karena kegagalan pengembang untuk mengikuti praktik terbaik keamanan.

MongoDB adalah DBMS open-source yang berarti beberapa pengembang mungkin mengetahui seluk beluk lebih dari yang lain. Ini tidak selalu berarti bahwa database Anda berisiko disusupi oleh pihak luar kecuali jika Anda melakukan salah satu kesalahan berikut:

  1. Menggunakan port default . Tidak ada yang salah dengan menggunakan port default (27017 dan 27018), tetapi terkadang Anda mungkin lupa mengatur grup keamanan yang bertanggung jawab untuk mengelola lalu lintas ke sistem Anda. Peretas akan selalu mencoba mengakses database dengan port default terlebih dahulu sebelum mencoba yang lain. Anda dapat menjalankan MongoDB pada port yang berbeda dengan opsi port yaitu $mongo –port 23456. Namun, cara yang disarankan adalah mengubah konfigurasi di file /etc/mongod.conf dengan mengedit baris di bawah ini dengan nomor port pilihan Anda:

    net:
    	port:27017


    MongoDB, secara default, berjalan tanpa autentikasi, yang sering menjadi masalah untuk penerapan baru yang memasuki produksi. Kegagalan untuk mengaktifkan otentikasi berarti bahwa siapa pun dapat mengakses database dengan mudah. Selalu buat pengguna dengan izin akses berbasis peran untuk berinteraksi dengan database MongoDB.

  2. Penyimpanan kredensial pengguna yang tidak tepat . Beberapa pengembang membuat kode keras kredensial nama pengguna dan kata sandi ke dalam proyek, dan ketika mereka menjadikannya publik, siapa pun dapat memiliki akses ke sana sehingga membuat basis data menjadi rentan.

  3. Gagal membatasi akses basis data ke perangkat jaringan yang dikenal . Dalam hal ini, seseorang harus selalu membatasi akses database hanya untuk aplikasi yang diketahui dan penyeimbang beban melalui daftar putih. Ini membatasi ketersediaan database ke jaringan tidak dikenal yang dapat menimbulkan ancaman keamanan.

  4. Menghindari penggunaan SSL . Otentikasi SSL sangat penting dalam memastikan bahwa hanya koneksi tepercaya yang masuk ke database.

  5. Gagal menggunakan LDAP untuk rotasi sandi . LDAP mengikat pengguna ke direktori perusahaan sehingga ketika peran mereka berubah atau mereka meninggalkan perusahaan, perubahan tersebut secara otomatis diterapkan ke grup database. Hal ini memastikan bahwa akses mereka ke data akan dibatasi pada peran yang telah ditetapkan ulang atau sepenuhnya dibatasi jika mereka meninggalkan perusahaan.

Pengerasan infrastruktur Jaringan

Sering kali, ancaman keamanan dimulai dari tingkat keterpaparan jaringan karena ini adalah bagian yang paling mudah diakses oleh sebagian besar peretas. Selain memastikan hanya host tepercaya yang memiliki akses ke MongoDB, Anda dapat meningkatkan keamanan melalui pengerasan jaringan. Pengerasan jaringan melibatkan dua prosedur sehubungan dengan MongoDB:

  1. Firewall . Firewall digunakan untuk membatasi lalu lintas masuk dari host yang tidak tepercaya yang akan mengekspos database MongoDB ke intrusi eksternal. Untuk sistem operasi Windows, antarmuka baris perintah netsh menyediakan akses ke Windows Firewall. Pada sistem Linux, antarmuka iptables menyediakan akses ke firewall netfilter yang mendasarinya. Firewall akan menyaring host yang tidak tepercaya dan memastikan hanya lalu lintas dari sumber tepercaya yang dapat mencapai mongod &mongos selain membuat koneksi dengan keluaran tepercaya.

  2. Jaringan Pribadi Virtual (VPN) . VPN memungkinkan dua jaringan untuk menautkan melalui jaringan tepercaya yang dienkripsi dan akses terbatas. Mereka melakukannya dengan menyediakan validasi sertifikat dan pilihan protokol enkripsi yang mungkin memerlukan tingkat otentikasi yang ketat dan identifikasi semua klien. VPN menyediakan terowongan yang aman; maka koneksi yang dibuat ke instans MongoDB menggunakan VPN dapat mencegah gangguan dan serangan man-in-the-middle.

Menutup

Seperti semua database open-source, keamanan harus menjadi prioritas utama untuk infrastruktur MongoDB Anda. Menyebarkan database MongoDB Anda dengan pengaturan default adalah jalur yang jelas menuju bencana keamanan. Oleh karena itu, sangat penting untuk memahami sepenuhnya cara kerja keamanan dalam MongoDB dan mengikuti semua praktik terbaik untuk memastikan keamanan maksimum. Yang paling penting, mengaudit aktivitas pengguna, seperti otentikasi, menyediakan jendela untuk mengidentifikasi celah dan merencanakan masa depan sebelum bencana terjadi.

Alat seperti ClusterControl membantu Anda menghilangkan dugaan keamanan database dan memastikan bahwa penerapan MongoDB Anda akan selalu mengikuti model keamanan masing-masing. Dengan ClusterControl, Anda dapat dengan mudah mengonfigurasi database, kontrol akses, dan enkripsi untuk data saat istirahat dan dalam perjalanan. Jika Anda belum melakukannya, unduh ClusterControl hari ini dan mulai uji coba gratis selama 30 hari untuk melihat bagaimana ClusterControl dapat membantu Anda mengelola dan meningkatkan keamanan database MongoDB Anda.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Agregasi MongoDB dengan driver Java

  2. Geospasial $dekat dalam nilai bidang dokumen saat ini

  3. Bagaimana cara mengecualikan satu bidang tertentu dari koleksi di Mongoose?

  4. Indeks Multikey MongoDB &Batas Persimpangan Indeks

  5. Kesalahan:getaddrinfo ENOTFOUND di nodejs untuk mendapatkan panggilan