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 [email protected]

# 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
Bagaimana cara mengaktifkan autentikasi di mongodb?
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

Bagaimana cara mengaktifkan autentikasi di mongodb?
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

Bagaimana cara mengaktifkan autentikasi di mongodb?
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

Bagaimana cara mengaktifkan autentikasi di mongodb?
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