Install Mongodb Ubuntu 16.04 dan Setup RBAC
Posted on
Quick note install mongodb di ubuntu 16.04 sekaligus set RBAC-nya. Panduan install mongodb di official site engga langsung ngasih petunjuk untuk setup RBAC. Jadi kutulis ini sebagai catatan pribadi agar tidak lupa.
Tambahkan repo mongodb ubuntu 16.04:
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
Install mongodb di ubuntu 16.04 pakai apt:
sudo apt-get update
sudo apt-get install -y mongodb-org
Hold paket mongodb supaya tidak auto update:
echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections
Start dan enable service mongod:
sudo systemctl start mongod
sudo systemctl status mongod
sudo systemctl enable mongod
Setup RBAC mongodb dengan cara enbale auth di conf nya:
sudo nano /etc/mongod.conf
# set bagian ini:
security:
authorization: enabled
Restart service mongodb:
sudo systemctl restart mongod
sudo systemctl status mongod
Setup auth user dengan cara masuk ke mongo shell, dalam hal ini aku akan buat user example-admin
dengan passwd example-admin-passwd
sekaligus set role sebagai admin untuk semua database:
mongo
> //line ini kebawah jalan di dalam mongo shell
> use admin
> db.createUser({user: "example-admin", pwd: "example-admin-passwd", roles:[{role: "userAdminAnyDatabase", db: "admin"}]})
> // outputnya seperti ini:
Successfully added user: {
"user" : "example-admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
> quit()
Selanjutnya bikin user biasa untuk app/developer dengan cara masuk mongo shell pakai user example-admin
. Dalam hal ini aku akan bikin user example-user
dengan passwd example-passwd
dan role read write untuk database exampleDB
:
mongo -u example-admin -p --authenticationDatabase admin
> // line ini kebawah jalan di dalam mongo shell
> use user-data
> db.createUser({user: "example-user", pwd: "example-password", roles:[{role: "read", db: "user-data"}, {role:"readWrite", db: "exampleDB"}]})
> quit()
Tes bikin data dan collection pakai user biasa example-user
:
mongo -u example-user -p --authenticationDatabase user-data
> // line ini kebawah jalan di dalam mongo shell
> use exampleDB
> db.createCollection("exampleCollection", {capped: false})
> var a = { name : "John Doe", attributes: { age : 30, address : "123 Main St", phone : 8675309 }}
> var b = { name : "Jane Doe", attributes: { age : 29, address : "321 Main Rd", favorites : { food : "Spaghetti", animal : "Dog" } }}
> db.exampleCollection.insert(a)
> db.exampleCollection.insert(b)
> show collections
> db.exampleCollection.find()
> db.exampleCollection.find({"name" : "John Doe"})
Kalau sudah setup RBAC, supaya klien bisa konek ke mongodb maka harus pakai url berikut: