Dasar-dasar MongoDB:Mengonfigurasi Kontrol Akses Berbasis Peran (RBAC)
MongoDB, penyimpanan dokumen sumber terbuka dan database NoSQL paling populer di pasaran saat ini, menawarkan berbagai fitur lanjutan untuk mengelola keamanan atas penerapan MongoDB Anda. Dalam postingan tutorial ini, kami akan menunjukkan cara menyiapkan kontrol akses berbasis peran (RBAC) untuk mengelola akses pengguna di seluruh sistem MongoDB Anda untuk reIndex, mongodump, dan mongorestore.
Jika Anda adalah administrator database MongoDB, Anda mungkin telah menerima permintaan untuk memberikan kemampuan kepada pengguna individu untuk melakukan tindakan tertentu. Fitur keamanan MongoDB sudah cukup matang sekarang, dan memungkinkan Anda membuat dan menetapkan kontrol akses berbasis peran yang sangat terperinci.
Kita akan membahas contoh pemberian hak istimewa khusus kepada pengguna untuk melakukan tindakan pengindeksan ulang dalam pendekatan langkah demi langkah melalui penyelesaiannya. Sebelum kami mendemonstrasikan cara melakukan tindakan keamanan umum ini, mari kita lihat ikhtisar kontrol tindakan berbasis peran MongoDB.
Cara Kerja MongoDB RBAC
MongoDB memungkinkan Anda menggunakan mekanisme RBAC untuk membatasi akses ke pengguna melalui 'peran' yang ditetapkan. Kontrol akses RBAC tidak diaktifkan secara default dan harus dikonfigurasi oleh administrator di tim Anda. Dengan memberikan akses kepada pengguna ke resource tertentu, Anda mengizinkan peran atau pengguna tersebut untuk melakukan tindakan pada resource tersebut.
-
Sumber daya
Database, koleksi, kumpulan koleksi, atau cluster.
-
Tindakan
Operasi tertentu yang dapat dilakukan pengguna pada sumber daya (biasanya database).
MongoDB mendukung peran yang telah ditentukan sebelumnya yang disebut peran bawaan dengan tindakan yang disusun ke dalam grup logis seperti read(-Only), readWrite, backup, dll. MongoDB juga mendukung pembuatan peran yang ditentukan pengguna.
Mengotorisasi MongoDB reIndex RBAC Privileges
Sekarang setelah Anda memiliki beberapa konteks, mari masuk ke langkah-langkah memberi pengguna hak istimewa untuk melakukan tindakan indeks ulang.
Cara membuat hak reIndex melalui kontrol akses berbasis peran MongoDB #RBACClick To Tweet-
Tentukan Tindakan Hak Istimewa
Tindakan dalam konteks MongoDB dikenal sebagai Tindakan Privilege dan Anda dapat menemukan daftar lengkap tindakan ini di dokumentasi MongoDB. Tindakan yang kami minati adalah reIndex, atau hak istimewa yang memungkinkan pengguna menjalankan perintah reIndex pada database atau koleksi tertentu. Karena perintah reIndex bisa mahal untuk koleksi dengan data dalam jumlah besar atau indeks dalam jumlah besar, ini adalah bagian dari peran administratif secara default.
-
Berikan Hak Istimewa untuk Peran
Setelah kami menentukan hak istimewa yang kami butuhkan, kami melanjutkan untuk memberikan hak istimewa tersebut ke sebuah peran. Anda juga dapat cukup memilih peran bawaan yang sudah memiliki hak istimewa, tetapi sebaiknya buat peran yang ditentukan pengguna sendiri daripada memodifikasi peran bawaan karena peran tersebut merupakan default yang baik untuk digunakan kembali.
-
Buat Peran Buatan Pengguna Baru
Inilah yang akan kami gunakan untuk membuat peran baru yang ditentukan pengguna:
> use test switched to db test > db.createRole({role: "reIndexing", privileges: [], roles: ["readWrite"]}) // Create a new role out of the default readWrite rule. { "role" : "reIndexing", "privileges" : [ ], "roles" : [ "readWrite" ] } > db.getRole("reIndexing") { "role" : "reIndexing", "db" : "test", "isBuiltin" : false, "roles" : [ { "role" : "readWrite", "db" : "test" } ], "inheritedRoles" : [ { "role" : "readWrite", "db" : "test" } ] }
-
Berikan Hak Istimewa untuk Peran Baru
Sekarang kita akan menetapkan hak istimewa yang kita inginkan ke peran yang ditentukan pengguna yang baru dibuat.
> db.grantPrivilegesToRole("reIndexing", [ { resource: { db : "test", collection: "" }, actions: ["reIndex"] } ]) > db.getRole("reIndexing", {showPrivileges: true}) { "role" : "reIndexing", "db" : "test", "isBuiltin" : false, "roles" : [ { "role" : "readWrite", "db" : "test" } ], "inheritedRoles" : [ { "role" : "readWrite", "db" : "test" } ], "privileges" : [ { "resource" : { "db" : "test", "collection" : "" }, "actions" : [ "reIndex" ] } ], "inheritedPrivileges" : [ .... ] }
-
-
Berikan Peran kepada Pengguna
Langkah terakhir adalah cukup menetapkan peran baru ini kepada pengguna:
> db.getUser("indexUser") { "_id" : "test.indexUser", "user" : "indexUser", "db" : "test", "roles" : [ { "role" : "readWrite", "db" : "test" } ] } > db.grantRolesToUser("indexUser", ["reIndexing"]) > db.getUser("indexUser") { "_id" : "test.indexUser", "user" : "indexUser", "db" : "test", "roles" : [ { "role" : "reIndexing", "db" : "test" }, { "role" : "readWrite", "db" : "test" } ] }
Jangan lupa untuk melakukan langkah-langkah ini pada pengguna tiruan sehingga Anda dapat menguji dan mengonfirmasi bahwa hak istimewa baru berfungsi sebelum memberikan dan memberi tahu pengguna yang relevan tentang otorisasi mereka.
Hak Istimewa Tambahan:mongodump &mongorestore
Kami mendemonstrasikan contoh reIndex terlebih dahulu untuk mengilustrasikan pemberian hak istimewa kepada peran dan pemberian peran kepada pengguna.
Kasus penggunaan yang lebih umum adalah memberikan otorisasi untuk melakukan tindakan pencadangan dan pemulihan menggunakan mongodump
dan mongorestore
. Ini dapat dilakukan dalam satu langkah melalui peran bawaan MongoDB, dan hak istimewa pencadangan dan pemulihan dapat diberikan untuk memungkinkan pengguna menjalankan mongodump
dan mongorestore
, masing-masing.
Misalnya, berikut ini cara kami memberikan izin kepada pengguna untuk mencadangkan dan memulihkan basis data apa pun. Perhatikan bahwa peran ini hanya tersedia untuk pengguna di database admin.
> db.grantRolesToUser("backupUser", ["backup", "restore"]) > db.getUser("backupUser") { "_id" : "admin.backupUser", "user" : "backupUser", "db" : "admin", "roles" : [ { "role" : "restore", "db" : "admin" }, { "role" : "backup", "db" : "admin" }, { "role" : "readWrite", "db" : "admin" } ] }
Menambahkan izin ke pencadangan dan pemulihan pada satu database atau koleksi memerlukan lebih banyak pekerjaan. Untuk mongodump
, Anda juga harus memberikan hak istimewa temukan pada database yang diberikan, namun mongorestore
memiliki persyaratan hak istimewa yang lebih rumit.
Tertarik dengan keamanan MongoDB? Berikut adalah postingan teratas tentang topik keamanan MongoDB:
- Tiga A keamanan MongoDB – Otentikasi, Otorisasi &Audit
- Tiga langkah sederhana untuk meningkatkan keamanan instalasi MongoDB Anda
- Mengonfigurasi autentikasi MongoDB-CR sebagai default di MongoDB 3.x
- SSL MongoDB dengan sertifikat yang ditandatangani sendiri di Node.js
- 10 kiat untuk meningkatkan keamanan MongoDB Anda