Bila aplikasi memerlukan area geografis yang luas untuk menjalankannya, organisasi sering kali terpaksa menyimpan datanya di awan. Aplikasi yang dibangun di MongoDB bukan pengecualian untuk konsep ini. Kegagalan untuk melindungi data sensitif dapat menyebabkan beberapa kemunduran serius bagi bisnis, termasuk reputasi yang rusak, inkonsistensi data, kerugian finansial, dan terkadang kehilangan data sepenuhnya.
Data yang disimpan di awan rentan terhadap kepentingan elemen kriminal. Orang dengan niat jahat dapat lebih mudah mendapatkan akses ketika tidak ada prosedur standar yang ditetapkan untuk memastikan keamanan basis data. Beberapa prosedur di bawah standar ini termasuk...
- Manajemen kata sandi yang buruk:beberapa pengembang akhirnya membuat kode sandi yang sulit di file sumber proyek sehingga jika peretas mendekompilasi aplikasi, mereka dapat dengan mudah mengambil kontennya.
- Keengganan atau kegagalan untuk memperbarui database dan plugin gratis. Versi database yang lebih baru memiliki fitur baru mungkin dalam hal keamanan atau lebih tepatnya memiliki beberapa fitur yang diperbaiki dari pendahulunya.
- Konfigurasi database di bawah standar misalnya tidak menggunakan kunci dekripsi terenkripsi atau lebih tepatnya tidak menggunakan protokol keamanan sama sekali.
Serangan basis data meningkat dari hari ke hari (dan trennya diperkirakan akan terus berlanjut), tetapi Anda mungkin tidak menjadi korban kecuali jika Anda menerapkan pertimbangan keamanan yang sesuai. Pada artikel ini, kita akan membahas beberapa prosedur yang dapat diperiksa dengan instalasi MongoDB di cloud. Anda tidak perlu menerapkan semuanya, tetapi setidaknya cobalah yang terbaik untuk memilih salah satu yang jika dihindari, dapat menempatkan data Anda dalam situasi yang berbahaya.
Pertimbangan Keamanan Pra-Produksi MongoDB
Ini adalah pertimbangan yang harus dipastikan bahwa mereka dikonfigurasi dengan baik saat akan menerapkan MongoDB ke lingkungan produksi. Mereka termasuk:
- Mengaktifkan dan Menerapkan autentikasi untuk Kontrol Akses
- Konfigurasikan Kontrol Akses Berbasis Peran
- Batasi Eksposur Jaringan
- Enkripsi Komunikasi
- Enkripsi data
- Aktivitas Sistem Audit
- Gunakan Pengguna Khusus untuk Menjalankan MongoDB
- Gunakan paket MongoDB Resmi dan yang Diperbarui
- Nonaktifkan eksekusi Javascript jika tidak diperlukan
- Perbarui dengan perbaikan keamanan MongoDB
1. Mengaktifkan dan Menerapkan Otentikasi untuk Kontrol Akses
Kontrol akses tidak diaktifkan di MongoDB secara default, tetapi ini tidak berarti Anda juga menerapkan database Anda tanpa mengaktifkan opsi ini. Sebenarnya beberapa paket database seperti Bitnami akan meminta Anda untuk mengatur beberapa kontrol akses sebelum menggunakan database Anda. Kegagalan untuk melakukannya, siapa pun dapat memiliki akses ke database sehingga paparan data yang sangat sensitif sekalipun. Tentukan beberapa mekanisme otentikasi seperti SCRAM sehingga klien yang akan terhubung harus memberikan beberapa kredensial yang valid sebelum mereka dapat terhubung ke database.
String koneksi akan terlihat seperti:
mongodb://[username:[email protected]]host[:port1][/[defaultauthdb]and not just
mongodb://host[:port1]/[defaultauthdb]
2. Konfigurasikan Kontrol Akses Berbasis Peran
Setelah menambahkan pengguna dengan izin administratif, batasi peran yang ditetapkan untuk pengguna ini menggunakan Kontrol Akses Berbasis Peran (RBAC). Peran yang dapat dimiliki pengguna meliputi:membaca, menulis, atau keduanya untuk koleksi tertentu atau semua. Oleh karena itu, pengguna tidak dapat melakukan peran yang tidak ditetapkan untuk mereka atau dapat melakukan operasi hanya untuk koleksi yang ditetapkan.
Administrator pengguna dibuat terlebih dahulu kemudian pengguna tambahan. Jika pengguna memiliki hak istimewa di basis data yang berbeda, Anda dapat membuat satu pengguna dengan peran yang memberikan hak istimewa basis data yang berlaku alih-alih membuat pengguna beberapa kali di basis data yang berbeda.
Disarankan untuk memiliki sejumlah kecil pengguna yang mengakses database di mana pengguna dapat berupa orang atau aplikasi klien.
Untuk membuat dan memberikan izin kepada pengguna untuk peran tertentu di MongoDB, Anda dapat menggunakan contoh ini di mongo shell
use finance
db.createUser(
{
user: "manager",
pwd: passwordPrompt(), // or cleartext password
roles: [
{ role: "read", db: "loans" },
{ role: "read", db: "interests" },
{ role: "read", db: "useraccounts" },
{ role: "readWrite", db: "wages" }
]
}
)
Juga, pilih opsi autentikasi eksternal seperti LDAP dan Kerberos.
3. Batasi Eksposur Jaringan
Topologi jaringan yang menghosting database perlu diamankan secara ekstensif dan yang terpenting hanya mendengarkan antarmuka localhost. Ini untuk menghindari paparan dari koneksi luar seperti yang terjadi pada MongoDB versi lama. Pastikan MongoDB berjalan di lingkungan jaringan tepercaya dengan firewall keamanan diaktifkan. Kontrol lalu lintas masuk dan keluar dengan grup keamanan yang mungkin tidak digunakan dengan instans lain. Gunakan daftar putih IP untuk mengizinkan akses dari alamat IP tepercaya sehingga memungkinkan koneksi ke instance MongoDB dengan antarmuka jaringan dan port hanya dari klien tepercaya.
Selain itu, nonaktifkan akses root SSH langsung.
4. Enkripsi Komunikasi
Konfigurasi MongoDB harus membatasi koneksi masuk dan keluar hanya untuk TLS/SSL. TLS/SSL mengenkripsi komunikasi antara komponen mongod dan mongos dari penerapan MongoDB dan semua aplikasi yang terhubung dengannya.
Dalam lingkungan produksi, penerapan MongoDB harus menggunakan sertifikat valid yang dibuat dan ditandatangani oleh otoritas sertifikat tunggal.
5. Enkripsi Data
Data basis data memiliki dua bentuk:data saat istirahat dan dalam perjalanan. Data dalam perjalanan dapat diamankan dengan menggunakan Enkripsi Tingkat Bidang Sisi Klien tetapi hanya tersedia di versi 4.2. Enkripsi TLS/SSL juga menangani data saat transit.
Mesin penyimpanan WiredTiger dari versi 3.2 Enterprise menyediakan data dalam enkripsi lapisan penyimpanan. Ini menegaskan bahwa hanya pengguna yang diautentikasi dengan kunci dekripsi yang dapat mengakses data. Jika Anda tidak menggunakan enkripsi WiredTiger saat istirahat, gunakan enkripsi Sistem File. Enkripsi data saat istirahat mencegah seseorang mengakses konten database Anda jika mereka mendapatkan akses ke server fisik, oleh karena itu merupakan bagian penting dalam mengamankan MongoDB.
6. Aktivitas Sistem Audit
Ini adalah opsi perusahaan yang memungkinkan pelacakan semua perubahan pada data dan konfigurasi database. Peristiwa ditulis ke koneksi syslog atau beberapa file log. Log dapat berisi upaya autentikasi DB termasuk alamat IP sumber dan info tersebut dapat membantu menentukan host mana yang harus diblokir oleh firewall agar tidak mengakses database. Selain itu, seseorang dapat mengetahui peristiwa mana yang harus dicatat.
Log audit ini secara umum akan membantu administrator melakukan beberapa analisis forensik dan karenanya menetapkan kontrol keamanan standar.
7. Gunakan Pengguna Khusus untuk Menjalankan MongoDB
Proses MongoDB harus dijalankan dengan akun pengguna sistem operasi khusus yang izin aksesnya harus diaktifkan.
8. Gunakan Paket MongoDB Resmi &Diperbarui
Lakukan pemeriksaan keaslian pada paket Anda untuk memastikan paket tersebut adalah paket resmi MongoDB. Menggunakan driver MongoDB terbaru dan versi terbaru dari database itu sendiri menawarkan stabilitas keamanan lebih dari pendahulunya. Misalnya, versi 4.2 menawarkan Enkripsi Tingkat Bidang Sisi Klien. Oleh karena itu, pastikan Anda bermigrasi ke MongoDB versi terbaru.
9. Nonaktifkan Eksekusi Javascript jika Tidak Diperlukan
mapReduce dan $where adalah beberapa kode JavaScript yang dapat dieksekusi dalam MongoDB dan jika tidak dikelola dengan baik, kode tersebut dapat mengakibatkan beberapa inkonsistensi data yang tidak diinginkan atau memungkinkan seseorang untuk mengakses data secara tidak langsung dan menerapkan beberapa perubahan jika diinginkan .
Secara umum, kode JavaScript ini akan mengizinkan injeksi eksternal sehingga data yang tidak divalidasi masuk ke database Anda. Anda juga dapat memilih untuk menggunakan paket seperti luwak untuk memvalidasi dan terhubung ke database Anda. Gunakan operator MongoDB sebagai ganti ekspresi JavaScript.
10. Dapatkan Pembaruan dengan Perbaikan Keamanan MongoDB
Protokol keamanan dapat dilanggar oleh penyerang seiring waktu, oleh karena itu perlu prosedur lanjutan untuk melibatkannya. Tetap up to date dengan pembaruan keamanan teratas dan perbaikan bug dari catatan rilis MongoDB sangat penting. Halaman peringatan MongoDB pada dasarnya dibuat untuk tujuan tersebut.
Minta panduan penerapan teknis keamanan jika memungkinkan dan pastikan penerapan Anda sejalan dengan kepatuhan standar keamanan.
Kesimpulan
Basis data dalam produksi rentan terhadap serangan keamanan, oleh karena itu perlu investasi besar dalam melindungi data sensitif. Prosedur keamanan berkisar dari data-in-transit, data-at-rest, dan aplikasi klien yang terhubung. Selain praktik yang disebutkan di atas, upaya pengerasan server akan memberikan lapisan perlindungan data lainnya.
Penting untuk menggunakan versi terbaru MongoDB dan plugin selain mengikuti keamanan terbaru dan perbaikan bug yang terkait dengan versi Anda.