set autentikasi mongodb
Big Data, Database

Cara Set Username, Password & Role di MongoDB

MongoDB merupakan salah satu jenis NoSQL Database yang berbentuk dokumen. Menurut survey StackOverFlow 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

“All your data is backed up. You have to pay 0.02 BTC to 12oLb1p8vKvsAeQrMD7GATxCm3fGMuEWg3 48 hours to recover it. After 48 hours expire, we will leak and expose all your data

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

Cara Set Username, Password & Role di MongoDB di IDCloudHost

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 MongoDB

Saat 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 userAdminAnyDatabase yang bisa menajemen user dengan kita set db : admin

db.createUser({ user: "admin", pwd: "admin123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })

Kita juga tambahkan role readWriteAnyDatabase untuk bisa mengakses semua database

db.grantRolesToUser('admin', [{ role: 'readWriteAnyDatabase', db: 'admin' }]);

exit shell

exit

Kita modif mongod.conf

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 role 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 role : dbOwner

masuk ke mongo shell dan masuk db : kampus dan login dulu dengan akun admin

use kampus

create user dengan role dbOwner

db.createUser({ user: "faqih", pwd: "faqih123", roles: [{ role: "dbOwner", db: "kampus" }] })

Yes akhirnya selesai cukup dengan 1 perintah saja untuk bisa membuat username, password dan role di MongoDB Server

Selanjutnya kita bisa gunakan grantRolesToUser 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.grantRolesToUser('faqih', [{ role: 'readWrite', db: 'perusahaan' }]);

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

Cara Set Username, Password & Role di MongoDB di IDCloudHost

Untuk menghapus user, password dan role masuk ke database admin dan jalankan perintah

db.dropUser("faqih")

Untuk menonaktifkan autentikasi masuk kembali ke VPS dan matikan parameter security di file mongod.conf dan jangan lupa restart MongoDB

Leave a Reply

Your email address will not be published. Required fields are marked *