Sunday, September 18, 2016

Minimal username dan password di mongodb

Ketika kita selesai menginstall mongodb, tidak ada default untuk username dan password, kita bisa langsung terhubung tanpa username dan password. Begitu juga jika kita meng-koneksikannya dengan aplikasi, aplikasi kita dabat membuat database di mongodb dengan on the fly :D.

Kelebihannya, jelas kita tidak perlu repot membuat database nya terlebih dahulu dan tidak pusing mengingat-ingat username password, namun jika kita memakai untuk keperluan production, tanpa security (username & password minimal) ini jelas bahaya.

MongoDb mempunyai roles khusus, disini saya tidak akan membahas detail roles-roles bawaan atau roles apa saja yang bisa dibuat. Saya akan membahas, user-user minimal yang harus dibuat sebagai minimum security.


MongoDB uses the combination of the database name and the role name to uniquely define a role. Each role is scoped to the database in which you create the role, but MongoDB stores all role information in the admin.system.roles collection in the admin database.

Dari penjelasan diatas dapat diketahui bahwa mongodb menyimpan user dan role nya di database admin, dengan kata lain kita harus memastikan use admin sebelum membuat user yang mempunyai scope antar database.

User root

User root ini ditujukan sebagai super user. Untuk mongodb > 2.6, tersedia role root
> use admin 
> db.createUser({ user: "root", pwd: "root_pass", roles: [ "root" ]})

User admin

User admin ditujukan sebagai user yang mempunyai scope lintas database. Role builtin mongodb dapat dibaca disini. User admin ini akan saya beri role userAdminAnyDatabase, dbAdminAnyDatabase, readWriteAnyDatabase.
> use admin 
> db.createUser({ user:"admin", pwd: "admin_pass", roles:["userAdminAnyDatabase","dbAdminAnyDatabase", "readWriteAnyDatabase" ]});

Specific user

Specific user ini, digunakan untuk kepentingan tertentu, misal user untuk aplikasi kita, dimana user tersebut hanya diperbolehkan untuk melakukan read dan write di database tertentu.
> use app_db
> db.createUser({user: "app_db_user", pwd: "app_db_pass", roles: [{role:"readWrite", db:"app_db"}]})
Untuk mengaktifkan fitur auth di mongodb :
Untuk mongodb di mac, stop service dan nyalakan lagi service nya dengan command di bawah
> ./mongod --auth
Untuk mongodb di ubuntu
Matikan service mongodb, dan modify file config mongodb yang ada di /etc/mongod.conf, tambahkan line berikut (untuk mongodb versi > 3.0)
#security:
security.authorization: enabled
Nyalakan kembali service nya.

Untuk mengetest, bisa menggunakan client tool, seperti robomongo atau mongochef.

Selamat mencoba :)
#ilearnnewthingseveryday

No comments:

Post a Comment