Semua pengguna yang dibuat di MongoDB 3.x dibuat dengan SCRAM-SHA1 yang merusak kompatibilitas mundur dengan alat yang mengharapkan MongoDB-CR. Ada daftar alat dan driver yang belum diperbarui untuk mendukung SCRAM-SHA1, seperti Robomongo dan MongoVUE.
Dalam beberapa kasus, meskipun versi driver/ORM yang lebih baru tersedia, Anda mungkin belum siap untuk meningkatkan versi driver karena beberapa masalah kompatibilitas.
MongoDB mendukung dua metode otentikasi:
- MongoDB- CR (Tantangan-respons)
Mekanisme untuk mengautentikasi pengguna dengan kata sandi. Mekanisme otentikasi default hingga 2.6.x. Lihat dokumentasi untuk detail lebih lanjut. - SCRAM-SHA1
Ini adalah standar IETF untuk mekanisme respons tantangan untuk mengautentikasi pengguna dengan kata sandi. Ini adalah sistem yang lebih baru dan lebih aman. Ini tidak kompatibel dengan MongoDB-CR. Lihat dokumentasi untuk detail lebih lanjut.
MongoDB CR adalah sistem otentikasi warisan. MongoDB 3.X mengalihkan sistem otentikasi pengguna default ke SCRAM-SHA1. Jadi, setiap pengguna baru yang dibuat dalam sistem adalah pengguna SCRAM-SHA1. Karena SCRAM-SHA1 tidak kompatibel ke belakang, ia merusak auth dengan semua pengguna yang menggunakan mekanisme MONGODB-CR.
Namun, Anda mungkin ingin menggunakan mesin penyimpanan WiredTiger baru yang tersedia di MongoDB 3.x. Berikut adalah langkah-langkah untuk mengonfigurasi MONGODB-CR sebagai mekanisme otentikasi default di MongoDB 3.x, dengan asumsi Anda menjalankan set replika:
- Buat kluster MongoDB 3.x.
- Hentikan semua node dari kumpulan replika selain yang utama.
- Nonaktifkan autentikasi pada primer dan mulai ulang node. Saya melakukan ini dengan mengomentari entri berikut di file conf MongoDB dan memulai ulang server:
#security: # authorization: enabled # keyFile: /var/lib/mongo/rskey #replication: # replSetName: RS-rsname-0
- Hubungkan ke primer dan ubah versi skema:
use admin; var schema = db.system.version.findOne({"_id" : "authSchema"}); schema.currentVersion = 3; db.system.version.save(schema)
- Urungkan perubahan pada file mongodb.conf pada langkah 3 di atas dan mulai ulang MongoDB.
- Mulai ulang MongoDB pada node lain dari kumpulan replika dan pastikan bahwa kumpulan replika itu sehat. Setelah ini selesai, semua pengguna yang dibuat pada sistem akan menjadi pengguna MongoDB-CR. Anda dapat memvalidasi ini dengan menjalankan perintah berikut:
db.system.users.find().pretty();
Namun, perhatikan, ini seharusnya hanya solusi sementara. Perbaikan jangka panjang yang lebih aman adalah memutakhirkan server MongoDB Anda untuk menggunakan model SCRAM-SHA1. Setelah Anda siap untuk meningkatkan, jalankan skrip berikut untuk meningkatkan versi skema pengguna Anda ke SCRAM-SHA1:
db.getSiblingDB("admin").runCommand({authSchemaUpgrade});