Indeks yang dibangun di kluster produksi MongoDB perlu ditangani dengan sangat hati-hati. Kami telah mendokumentasikan masalah secara mendetail di salah satu entri blog kami sebelumnya – Bahaya Membangun Indeks di MongoDB.
Bergantung pada ukuran data Anda, build latar depan dan latar belakang dapat menurunkan cluster Anda. Jadi, bagaimana Anda mencegah pengguna Anda secara tidak sengaja memicu pembuatan indeks dari MongoDB CLI? Jawaban singkatnya adalah Anda tidak bisa. Namun, yang dapat Anda lakukan adalah menghapus hak istimewa "CreateIndex" dari sebagian besar pengguna Anda sehingga mereka tidak dapat secara tidak sengaja memicu pembuatan indeks dari CLI. Seharusnya ada sangat sedikit pengguna di sistem Anda yang memiliki akses untuk menulis data ke database. Di antara pengguna ini, lebih sedikit lagi yang memiliki izin untuk membuat indeks. Untuk panduan tentang cara menggunakan peran MongoDB, silakan merujuk ke dokumentasi – Kelola Pengguna dan Peran.
Opsi terbaik untuk menerapkan ini adalah membuat peran khusus Anda sendiri dan menghapus hak istimewa 'CreateIndex' untuk pengguna Anda. Namun, kami tidak ingin membuat daftar izin secara manual karena ini akan berbeda untuk setiap konteks dan mungkin versi MongoDB. Kami menyusun skrip kecil ini untuk menggunakan salah satu peran bawaan yang ada, dan menghapus hak istimewa 'CreateIndex' dari peran ini. Dalam contoh ini, kami menggunakan peran "readWrite" bawaan dan menghapus hak istimewa "CreateIndex' dari peran ini:
var privs = db.getRole('readWrite',{ showPrivileges: true }); privs.privileges.forEach(function (item, index) { var index = item.actions.indexOf("createIndex"); if (index !== -1) item.actions.splice(index, 1); }); db.createRole({role:"readWriteNoIndex",privileges:privs.privileges,roles:[]});
- Simpan konten cuplikan kode sebagai createRole.js.
- Jalankan skrip menggunakan sintaks di bawah ini:
mongo -u <user> -p <password> <host>:27017/<db name> --authenticationDatabase admin createRole.js
Setelah peran dibuat, Anda dapat menggunakan peran ini untuk membuat pengguna selanjutnya.
|