Bagaimana cara mengaktifkan autentikasi di mongodb?

MongoDB adalah database Berorientasi Objek Dokumen yang termasuk dalam kategori database NoSQL. Ini memungkinkan manipulasi objek terstruktur dalam format BSON (binary JSON) tanpa skema yang telah ditentukan sebelumnya

Anda memerlukan MongoDB saat membangun sistem yang perlu mendukung sejumlah besar pembaca di database;
Pada 2019, MongoDB memiliki pangsa pasar 24. 6% dalam basis data

Kami berada di tahun 2022, dan ini adalah database NoSQL yang paling banyak digunakan. Perusahaan seperti Barclays, Uber, Lyft, Accenture, CircleCI, dan Segmen menggunakannya untuk menangani aplikasi mereka yang paling menuntut di area seperti IoT, Game, Logistik, Perbankan, e-Commerce, dan Manajemen Konten

Instalasi

MongoDB memiliki dua edisi. Edisi Komunitas dan edisi Server
Edisi komunitas menyediakan fitur yang cukup untuk aplikasi kecil dan menengah

Di antara fitur-fitur ini, kami dapat mencantumkan yang berikut ini

  • Model dokumen yang fleksibel
  • Pengindeksan untuk membuat kueri kami lebih cepat
  • Agregasi real-time memberikan cara ampuh untuk mengakses dan menganalisis data Anda
  • Replikasi bermanfaat bagi mereka yang bekerja dalam sistem terdistribusi
  • Skalabilitas horizontal dengan sharding asli

Edisi Perusahaan memiliki semua fitur edisi komunitas plus

  • Audit memungkinkan administrator dan pengguna melacak aktivitas sistem untuk penyebaran dengan beberapa pengguna dan aplikasi. Dengan kata lain, Anda dapat memiliki riwayat operasi CRUD, perubahan skema, Otentikasi, dan Otorisasi
  • Mesin Penyimpanan Dalam Memori
  • Autentikasi Proksi LDAP dan Otorisasi LDAP
  • Otentikasi Kerberos

Saat saya menulis artikel ini, kami berada di versi 6. 0, dan kami akan menggunakan edisi komunitas yang gratis dan cukup untuk kasus penggunaan kami

Ikuti tutorial instalasi di website MongoDB sesuai dengan sistem operasi Anda. Setelah selesai, kita dapat melanjutkan dengan langkah-langkah di bawah ini

Untuk pengguna mac dengan prosesor Intel, berikut adalah perintah untuk dijalankan

# Install XCode Command Line Tools xcode-select --install # download the official Homebrew formulae for MongoDB and Database tools brew tap mongodb/brew # Verify that your system meets all the installation prerequisites brew tap | grep mongodb # Install MongoDB brew install mongodb-community@6.0 # Start MongoDB as a MacOS service brew services start mongodb/brew/mongodb-community # Start Mongo Shell to make sure everything works mongos --version

File konfigurasi terletak di. /usr/local/etc/mongod.conf

Buat pengguna dan basis data

Kami menggunakan shell MongoDB untuk terhubung ke database. Otentikasi dinonaktifkan, dan Anda dapat terhubung dengan pengguna root

Jalankan perintah di bawah ini untuk terhubung ke MongoDB menggunakan Mongo Shell

mongosh _

Berikut adalah beberapa perintah yang dapat Anda jalankan

  • Lihat semua database. mongosh _0
  • Pilih basis data. mongosh _1
  • Lihat koleksi database. mongosh _2
Hubungkan ke MongoDB menggunakan Mongo Shell

Bekerja tanpa autentikasi tidak apa-apa untuk lingkungan pengembangan atau pengujian. Namun, saat Anda dalam produksi dengan data pelanggan disimpan di dalamnya, Anda wajib membatasi akses ke database

  • Mengidentifikasi semua pengguna yang terhubung ke database;
  • Batasi tindakan yang dapat dilakukan oleh pengguna yang diautentikasi dalam database;

Peran bawaan

MongoDB hadir dengan peran bawaan yang akan membantu menentukan batasan di seluruh basis data. Gambar di bawah menunjukkan peran yang tersedia

Daftar peran bawaan MongoDB

Anda dapat membatasi penggunaan peran ini, misalnya

  • Peran baca untuk Ilmuwan Data yang perlu membaca data untuk menghasilkan statistik
  • ReadAnyDatabase untuk ilmuwan Data yang perlu mengumpulkan data dari banyak database untuk menghasilkan statistik
  • readWrite dan dbAdmin untuk backend aplikasi web dengan satu database. DBAdmin berguna saat Anda menggunakan ORM yang membuat koleksi dalam database dari model kelas/entitas Anda

💡

Peran yang disebutkan di atas dibuat dengan menggabungkan peran lain yang juga dapat diberikan kepada pengguna


Kasus penggunaan

Bayangkan kita memiliki seorang pekerja yang akan melakukan backup database kita secara berkala

Menurut tabel peran di atas, kita perlu membuat pengguna dengan root peran agar pekerja dapat mencadangkan dan memulihkan DB kita, tetapi itu terlalu banyak karena kita juga memberikan semua akses ke pengguna ini

Untuk menghindarinya, Anda hanya dapat memberikan peran mongosh 3 dan mongosh 4 kepada pengguna ini
Ingatlah hal ini saat Anda perlu memberikan peran khusus kepada pengguna

Anda juga dapat membuat peran khusus dengan menggabungkan banyak peran bawaan

Aktifkan autentikasi

Sebelum itu, kita perlu membuat user dengan password;

Di dalam shell Mongo, jalankan perintah di bawah ini

use admin db.createUser({ user: "rootUser", pwd: "rootUserPwd", roles: ["root"]})

Kami memilih database mongosh _5 dan kami membuat pengguna bernama rootUser dengan kata sandi mongosh 6 dan akhirnya, memberinya peran mongosh 7

Keluar dari Mongo Shell dengan mengetik mongosh 8

Untuk mengaktifkan otentikasi, buka file konfigurasi /usr/local/etc/mongod.conf, cari properti use admin db.createUser({ user: "rootUser", pwd: "rootUserPwd", roles: ["root"]}) 0 dan atur nilainya menjadi use admin db.createUser({ user: "rootUser", pwd: "rootUserPwd", roles: ["root"]}) 1

security: authorization: enabled

Simpan file, lalu keluar dan mulai ulang server MongoDB

brew services restart mongodb-community

Seperti yang ditunjukkan gambar, kami mendapatkan kesalahan jika kami membuat pengguna dengan peran

Gagal membuat pengguna karena autentikasi diperlukan

Autentikasi pengguna

Berikut adalah perintah untuk terhubung dengan pengguna di instance MongoDB

mongosh --host localhost --port 27017 --username "rootUser" --password "rootUserPwd" --authenticationDatabase "admin"

Anda juga dapat menggunakan string koneksi untuk mengautentikasi

mongosh "mongodb://rootUser:rootUserPwd@localhost:27017/admin"

Sekarang kita akan membuat pengguna dan memberinya peran use admin db.createUser({ user: "rootUser", pwd: "rootUserPwd", roles: ["root"]}) 2 dan use admin db.createUser({ user: "rootUser", pwd: "rootUserPwd", roles: ["root"]}) 3 pada database baru bernama use admin db.createUser({ user: "rootUser", pwd: "rootUserPwd", roles: ["root"]}) 4

Kami akan terhubung dengan pengguna ini dan membuat koleksi bernama use admin db.createUser({ user: "rootUser", pwd: "rootUserPwd", roles: ["root"]}) 5 dan memastikan kami dapat menulis dan membaca data

use blog db.createUser({ user: "blogUser", pwd: "blogUserPwd", roles: [{ role: "dbAdmin", db: "blog" }, { role: "readWrite", db: "blog" } ]}) exit

Pengguna sekarang dibuat. Mari kita lanjutkan dengan langkah-langkah berikut

mongosh "mongodb://blogUser:blogUserPwd@localhost:27017/blog" use blog db.createCollection("posts") show collections db.posts.insertOne({ title: "Mongo Auth", readCount: 0, tags: ["nosql", "db"] }) db.posts.find() db.posts.deleteMany({ "title" : "Mongo Auth" }) db.posts.find()

Kami mendapatkan output berikut

Lakukan operasi baca dan tulis di basis data blog

Bungkus

MongoDB tersedia di sistem operasi utama. Muncul dengan banyak peran bawaan yang dapat Anda gunakan untuk membatasi tindakan yang dapat dilakukan pengguna di database. Otentikasi dinonaktifkan secara default, dan Anda dapat mengaktifkannya dengan mengedit file konfigurasi

Saya merekomendasikan untuk mengaktifkan autentikasi, bahkan di lingkungan pengembangan dan pengujian

Ikuti saya di Twitter atau berlangganan buletin saya untuk menghindari ketinggalan posting yang akan datang dan tip dan trik yang sesekali saya bagikan

Bagaimana cara saya memberikan izin ke MongoDB?

Anda harus memiliki tindakan grantRole pada database untuk memberikan peran pada database tersebut . Anda harus memiliki tindakan revokeRole di database untuk mencabut peran di database tersebut. Untuk melihat informasi peran, Anda harus diberi peran secara eksplisit atau harus memiliki tindakan viewRole di database peran.

Bagaimana cara mengaktifkan otentikasi di set replika MongoDB?

Mulai setiap anggota kumpulan replika dengan kontrol akses diaktifkan . Untuk setiap anggota dalam kumpulan replika, mulai mongod dengan keamanan. pengaturan file konfigurasi keyFile atau opsi baris perintah --keyFile. Menjalankan mongod dengan opsi baris perintah --keyFile atau keamanan.

Apa autentikasi default untuk MongoDB?

SCRAM-SHA-256 adalah metode autentikasi default untuk MongoDB yang dimulai pada MongoDB 4. 0. SCRAM-SHA-256 adalah salted challenge-response authentication mechanism (SCRAM) yang menggunakan nama pengguna dan kata sandi Anda, dienkripsi dengan algoritme SHA-256, untuk mengotentikasi pengguna Anda.

Bagaimana cara mematikan autentikasi di MongoDB?

Solusi .
Untuk menonaktifkan autentikasi lokal pada database MongoDB. .
mongod --setParameter enableLocalhostAuthBypass=0
Untuk mengonfigurasi secara manual, gunakan opsi setParameter di file konfigurasi mongo untuk menyetelnya ke false
setParameter. .
Nilai Default

Postingan terbaru

LIHAT SEMUA