sumarsono.com
Take it with a grain of salt


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: