Cara menggunakan case in mongodb
MongoDB merupakan salah satu jenis NoSQL Database yang berbentuk dokumen. Menurut survey MongoDB adalah NoSQL database paling populer. Ketika install MongoDB Server di komputer lokal terdapat kekurangan karena hanya diakses secara lokal dan tidak bisa diakses melalui internet Umumnya di production kita harus menyiapkan server yang bisa terhubung dengan internet agar dapat diakses dari mana saja tetapi hal ini berpotensi untuk dihack orang yang tidak bertanggung jawab. Misalnya data diambil atau dihapus tanpa sepengetahuan kita Yang banyak orang alami adalah kasus ransomware seperti mengenskripsi data kita di server dan meminta tebusan. Contoh bentuk tebusannya adalah seperti ini
By Default MongoDB tidak mengaktifkan fitur authentication dalam bentuk username password. Pada artikel ini kita akan coba implementasikan cara set username dan password di MongoDB Server. Selain itu juga perlu diimplementasikan role untuk authorization bahwa user x hanya boleh mengakses database y Artikel ini melanjutkan dari artikel sebelumnya yaitu Instalasi MongoDB di AWS EC2 Instance. Bagi teman-teman yang tidak mempunyai VPS di cloud AWS bisa menggunakan provider lokal seperti IDCloudHost. Caranya cukup mudah kita hanya perlu register IDCloudHost dan langsung siap di-topup untuk membuat VPS dengan spek yang kita inginkan Kita cukup mengatur jumlah core CPU, RAM dan ukuran Storage dengan OS yang bermacam-macam. Di paling bawah juga ada estimasi perbayaran per jam / per bulan. Misalnya kita set menggunakan 2 Core CPU, 2 GB Ram dan 50 GB Storage maka kita membayar Rp. 145/jam atau 106.250/Bulan. Tagihan ini juga bisa berkurang jika tidak terlalu digunakan bisa distop akan menghemat biaya untuk penggunakan CPU dan RAM tetapi untuk Storage masih dikenakan tagihan karena masih menyimpan data kita Setelah menyiapkan VPS dengan OS Linux (dalam case ini menggunakan distro Ubuntu) selanjutnya install MongoDB seperti tutorial di artikel Instalasi MongoDB di subbab Instalasi MongoDB Server melalui ssh dengan tool seperti putty, MobaXterm atau lainnya Set Username, Password & Role di MongoDBSaat kita sudah sukses terhubungan dengan MongoDB server melalui Compass atau Shell selanjutnya kita akan set username dan password Pertama kita masuk di database admin melalui mongo shell dan buat user administrator. user administrator ini berhak untuk mengakses semua database dengan role write dan read use admin Buat user administrator dengan role db.createUser({ user: "admin", pwd: "admin123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })3 yang bisa menajemen user dengan kita set db.createUser({ user: "admin", pwd: "admin123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })4 db.createUser({ user: "admin", pwd: "admin123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] }) Kita juga tambahkan role db.createUser({ user: "admin", pwd: "admin123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })5 untuk bisa mengakses semua database db.grantRolesToUser('admin', [{ role: 'readWriteAnyDatabase', db: 'admin' }]); exit shell exit Kita modif db.createUser({ user: "admin", pwd: "admin123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })6 sudo nano /etc/mongod.conf kemudian enable authentication security: authorization: enabled Restart MongoDB service sudo service mongod restart Login kembali ke database admin use admin Kita tidak akan bisa akses semua database karena kita harus memasukkan credential yang valid dengan perintah db.auth("admin", "admin123") Ok kita telah berhasil membuat user administrator. dengan user admin kita bisa mengakses semua database dan manajemen user Detail db.createUser({ user: "admin", pwd: "admin123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })7 MongoDB bisa dibaca di halaman dokumentasinya di Role MongoDB Selanjutnya kita akan buat user yang hanya bisa akses untuk database tertentu. Tujuannya adalah agar user hanya dapat mengakses database tertentu saja. Kita misalkan mongoDB server ibarat rumah yang banyak ruangannya. Admin mempunyai semua kunci ruangan dan bisa membukanya. selain itu ada user lainnya yang hanya bisa membuka ruangan mereka masing-masing Caranya hampir sama tetapi saat membuat user kita ganti db.createUser({ user: "admin", pwd: "admin123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })8 masuk ke mongo shell dan masuk db.createUser({ user: "admin", pwd: "admin123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })9 dan login dulu dengan akun db.grantRolesToUser('admin', [{ role: 'readWriteAnyDatabase', db: 'admin' }]);0 use kampus create user dengan role db.grantRolesToUser('admin', [{ role: 'readWriteAnyDatabase', db: 'admin' }]);1 db.createUser({ user: "admin", pwd: "admin123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })0 Yes akhirnya selesai cukup dengan 1 perintah saja untuk bisa membuat username, password dan role di MongoDB Server Selanjutnya kita bisa gunakan db.grantRolesToUser('admin', [{ role: 'readWriteAnyDatabase', db: 'admin' }]);2 untuk menambahkan role ke user untuk bisa mengakses database lainnya Misal user faqih kita grant untuk bisa akses database perusahaan maka jalankan perintah berikut db.createUser({ user: "admin", pwd: "admin123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })1 Finally kita sudah selesai untuk membuat akses user administrator dan user biasa. Selain login menggunakan mongo shell kita juga bisa menggunakan Mongo Compass untuk login Untuk menghapus user, password dan role masuk ke database db.grantRolesToUser('admin', [{ role: 'readWriteAnyDatabase', db: 'admin' }]);0 dan jalankan perintah db.createUser({ user: "admin", pwd: "admin123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })2 Untuk menonaktifkan autentikasi masuk kembali ke VPS dan matikan parameter db.grantRolesToUser('admin', [{ role: 'readWriteAnyDatabase', db: 'admin' }]);4 di file db.createUser({ user: "admin", pwd: "admin123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })6 dan jangan lupa restart MongoDB |