Πώς να δημιουργήσετε χρήστη και να προσθέσετε ρόλο MongoDB

⚡ Έξυπνη Σύνοψη

Δημιουργία χρήστη και προσθήκη ρόλου στο MongoDB βασίζεται στη μέθοδο db.createUser() για να ορίσει διαπιστευτήρια, να εκχωρήσει ενσωματωμένους ρόλους και δικαιώματα εμβέλειας σε συγκεκριμένες βάσεις δεδομένων, ενισχύοντας τον έλεγχο πρόσβασης σε λογαριασμούς διαχειριστή και λογαριασμούς μίας βάσης δεδομένων.

  • 🔑 Βασική μέθοδος: Η εντολή db.createUser() παρέχει έναν λογαριασμό καθορίζοντας τον χρήστη, το pwd και έναν πίνακα ρόλων σε μία μόνο εντολή.
  • Πεδίο εφαρμογής διαχειριστή: Ο ρόλος userAdminAnyDatabase παραχωρεί δικαιώματα διαχείρισης σε κάθε βάση δεδομένων, ενώ ο userAdmin περιορίζει τον έλεγχο σε μία επώνυμη βάση δεδομένων.
  • 🎯 Ανάθεση ρόλου: Οι ενσωματωμένοι ρόλοι όπως οι read και readWrite αντιστοιχίζονται με ακρίβεια στις ενέργειες που μπορεί να εκτελέσει ένας χρήστης σε μια συλλογή.
  • 👥 Πολλαπλές βάσεις δεδομένων: Ένας μεμονωμένος λογαριασμός μπορεί να κατέχει διαφορετικούς ρόλους σε πολλές βάσεις δεδομένων μέσα σε έναν πίνακα ρόλων.
  • Επαλήθευση: Η μέθοδος db.getUsers() και το αποτέλεσμα που επιστράφηκε επιβεβαιώνουν ότι οι λογαριασμοί και τα δικαιώματα έχουν προβλεφθεί σωστά.

Πώς να δημιουργήσετε χρήστη και να προσθέσετε ρόλο σε MongoDB

Τι είναι οι ενσωματωμένοι ρόλοι στο MongoDB?

Πριν δημιουργήσετε έναν λογαριασμό, είναι χρήσιμο να κατανοήσετε τους ενσωματωμένους ρόλους που MongoDB παρέχει. Ένας ρόλος είναι μια ονομαστική συλλογή προνομίων και κάθε προνόμιο συνδέει έναν πόρο (μια βάση δεδομένων ή μια συλλογή) με τις ενέργειες που επιτρέπονται σε αυτόν. Η ανάθεση ενός ρόλου κατά τη δημιουργία χρήστη καθορίζει επακριβώς τι μπορεί να κάνει αυτός ο λογαριασμός.

MongoDB Ομαδοποιεί τους ενσωματωμένους ρόλους του σε ρόλους χρήστη βάσης δεδομένων, ρόλους διαχείρισης βάσης δεδομένων, ρόλους διαχείρισης συμπλέγματος, ρόλους δημιουργίας αντιγράφων ασφαλείας και επαναφοράς και ρόλους υπερχρήστη. Ο παρακάτω πίνακας συνοψίζει τους ρόλους που χρησιμοποιούνται συχνότερα κατά τη διαχείριση χρηστών:

Ρόλος Κατηγορία Προνόμια που χορηγήθηκαν
ανάγνωση Χρήστης βάσης δεδομένων Πρόσβαση μόνο για ανάγνωση σε όλες τις συλλογές που δεν ανήκουν στο σύστημα σε μια βάση δεδομένων.
ανάγνωσηΓραφή Χρήστης βάσης δεδομένων Πρόσβαση ανάγνωσης καθώς και εισαγωγή, ενημέρωση και διαγραφή συλλογών.
dbAdmin Διαχειριστής βάσης δεδομένων Διαχείριση σχήματος, ευρετηρίασης και στατιστικών για μια βάση δεδομένων.
διαχειριστής χρήστη Διαχειριστής βάσης δεδομένων Δημιουργήστε και τροποποιήστε χρήστες και ρόλους σε μία μόνο βάση δεδομένων.
userAdminAnyDatabase Υπερ Διαχείριση χρηστών σε κάθε βάση δεδομένων στην παρουσία.
ρίζα Υπερ Πλήρης πρόσβαση σε όλους τους πόρους και τις λειτουργίες.

MongoDB Δημιουργία χρήστη διαχειριστή

Δημιουργία διαχειριστή χρήστη στο MongoDB γίνεται χρησιμοποιώντας τη μέθοδο createUser. Το παρακάτω παράδειγμα δείχνει πώς μπορεί να γίνει αυτό.

db.createUser(
{	user: "Guru99",
	pwd: "password",

	roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})

MongoDB Δημιουργία χρήστη διαχειριστή

Code Επεξήγηση:

  1. Το πρώτο βήμα είναι να καθορίσετε το «όνομα χρήστη» και τον «κωδικό πρόσβασης» που πρέπει να δημιουργηθούν.
  2. Το δεύτερο βήμα είναι να αναθέσετε έναν ρόλο στον χρήστη. Δεδομένου ότι πρέπει να είναι διαχειριστής βάσης δεδομένων, σε αυτήν την περίπτωση έχουμε αναθέσει τον ρόλο "userAdminAnyDatabase". Αυτός ο ρόλος επιτρέπει στον χρήστη να έχει δικαιώματα διαχειριστή σε όλες τις βάσεις δεδομένων. MongoDB.
  3. Η παράμετρος db καθορίζει τη βάση δεδομένων διαχειριστή, η οποία είναι μια ειδική μεταβάση δεδομένων εντός MongoDB που περιέχει τις πληροφορίες για αυτόν τον χρήστη.

Εάν η εντολή εκτελεστεί με επιτυχία, θα εμφανιστεί η ακόλουθη έξοδος:

Παραγωγή:

MongoDB Δημιουργία χρήστη διαχειριστή

Η έξοδος δείχνει ότι ένας χρήστης κάλεσε "Guru99" δημιουργήθηκε και αυτός ο χρήστης έχει δικαιώματα σε όλες τις βάσεις δεδομένων MongoDB.

MongoDB Δημιουργία χρήστη για ενιαία βάση δεδομένων

Για να δημιουργήσουμε έναν χρήστη που θα διαχειρίζεται μια ενιαία βάση δεδομένων, μπορούμε να χρησιμοποιήσουμε την ίδια εντολή όπως αναφέρθηκε παραπάνω, αλλά χρειάζεται να χρησιμοποιήσουμε μόνο την επιλογή "userAdmin".

Το ακόλουθο παράδειγμα δείχνει πώς μπορεί να γίνει αυτό:

MongoDB Δημιουργία χρήστη για ενιαία βάση δεδομένων

db.createUser(
{
	user: "Employeeadmin",

	pwd: "password",

	roles:[{role: "userAdmin" , db:"Employee"}]})

Code Επεξήγηση:

  1. Το πρώτο βήμα είναι να καθορίσετε το «όνομα χρήστη» και τον «κωδικό πρόσβασης» που πρέπει να δημιουργηθούν.
  2. Το δεύτερο βήμα είναι η ανάθεση ενός ρόλου στον χρήστη, ο οποίος σε αυτήν την περίπτωση, επειδή πρέπει να είναι διαχειριστής βάσης δεδομένων, έχει τον ρόλο "userAdmin". Αυτός ο ρόλος επιτρέπει στον χρήστη να έχει δικαιώματα διαχειριστή μόνο στη βάση δεδομένων που καθορίζεται στην επιλογή db.
  3. Η παράμετρος db καθορίζει τη βάση δεδομένων στην οποία ο χρήστης πρέπει να έχει δικαιώματα διαχειριστή.

Εάν η εντολή εκτελεστεί με επιτυχία, θα εμφανιστεί η ακόλουθη έξοδος:

Παραγωγή:

MongoDB Δημιουργία χρήστη για ενιαία βάση δεδομένων

Η έξοδος δείχνει ότι δημιουργήθηκε ένας χρήστης που ονομάζεται "Employeeadmin" και ότι ο χρήστης έχει δικαιώματα μόνο στη βάση δεδομένων "Employee".

Διαχείριση χρηστών

Αρχικά, κατανοήστε τους ρόλους που πρέπει να ορίσετε. Υπάρχει μια ολόκληρη λίστα ρόλων διαθέσιμη στο MongoDBΓια παράδειγμα, υπάρχει ο ρόλος «ανάγνωση», ο οποίος επιτρέπει μόνο πρόσβαση μόνο για ανάγνωση σε βάσεις δεδομένων, και υπάρχει ο ρόλος «readWrite», ο οποίος παρέχει πρόσβαση ανάγνωσης και εγγραφής στη βάση δεδομένων. Αυτό σημαίνει ότι ο χρήστης μπορεί να εκδώσει τις εντολές εισαγωγής, διαγραφής και ενημέρωσης σε συλλογές σε αυτήν τη βάση δεδομένων.

Διαχείριση χρηστών

db.createUser(
{
	user: "Mohan",

	pwd: "password",

	roles:[
	{ role: "read" , db:"Marketing" },
	{ role: "readWrite" , db:"Sales" }
	]
})

Το παραπάνω απόσπασμα κώδικα δείχνει ότι δημιουργείται ένας χρήστης με το όνομα Mohan και του έχουν ανατεθεί πολλαπλοί ρόλοι σε πολλές βάσεις δεδομένων. Στο παραπάνω παράδειγμα, του δίνονται δικαιώματα μόνο για ανάγνωση στη βάση δεδομένων "Μάρκετινγκ" και δικαιώματα ανάγνωσης-εγγραφής στη βάση δεδομένων "Πωλήσεις".

Πώς να προβάλετε και να διαχειριστείτε MongoDB Χρήστες

Αφού υπάρχουν λογαριασμοί, MongoDB παρέχει ένα σύνολο εντολών για την επιθεώρηση, την ενημέρωση και την αφαίρεσή τους χωρίς διακοπήping και αναδημιουργώντας κάθε χρήστη. Αυτές οι εντολές εκτελούνται στη βάση δεδομένων όπου δημιουργήθηκε ο χρήστης, επομένως μεταβείτε στη σωστή βάση δεδομένων με την εντολή χρήσης πριν τις εκδώσετε.

Οι πιο συνηθισμένες εντολές διαχείρισης χρηστών είναι:

  • db.getUsers() — παραθέτει κάθε χρήστη που έχει οριστεί στην τρέχουσα βάση δεδομένων μαζί με τους ρόλους που κατέχει ο καθένας.
  • db.getUser(“όνομα χρήστη”) — επιστρέφει τις λεπτομέρειες ενός μεμονωμένου λογαριασμού, κάτι που είναι χρήσιμο για τον έλεγχο δικαιωμάτων.
  • db.grantRolesToUser() — προσθέτει έναν ή περισσότερους ρόλους σε έναν υπάρχοντα χρήστη χωρίς να επηρεάζει τους τρέχοντες ρόλους.
  • db.revokeRolesFromUser() — καταργεί συγκεκριμένους ρόλους, περιορίζοντας την πρόσβαση όταν αλλάζουν οι αρμοδιότητες.
  • db.changeUserPassword() — επαναφέρει τον κωδικό πρόσβασης ενός λογαριασμού ενώ διατηρείping οι ρόλοι του άθικτοι.
  • db.dropUser() — διαγράφει οριστικά έναν χρήστη από τη βάση δεδομένων.

Το παρακάτω παράδειγμα εκχωρεί έναν επιπλέον ρόλο, ανακαλεί έναν άλλο, επαναφέρει έναν κωδικό πρόσβασης και τέλος διαγράφει τον λογαριασμό:

// List all users in the current database
db.getUsers()

// Grant an additional role to an existing user
db.grantRolesToUser("Employeeadmin", [{ role: "readWrite", db: "Employee" }])

// Remove a role from a user
db.revokeRolesFromUser("Employeeadmin", [{ role: "userAdmin", db: "Employee" }])

// Change a user's password
db.changeUserPassword("Employeeadmin", "newPassword")

// Delete a user
db.dropUser("Employeeadmin")

Η εκτέλεση της συνάρτησης db.getUsers() ξανά μετά από αυτές τις λειτουργίες επιβεβαιώνει ότι οι αλλαγές εφαρμόστηκαν και ότι παραμένουν μόνο οι προβλεπόμενοι λογαριασμοί και ρόλοι.

καλυτερα Πρακτικές για MongoDB Διαχείριση χρηστών

Οι καλά σχεδιασμένοι λογαριασμοί χρηστών διατηρούν ένα MongoDB Η ανάπτυξη είναι ασφαλής και εύκολη στον έλεγχο. Οι ακόλουθες πρακτικές μειώνουν τον κίνδυνο τυχαίας έκθεσης δεδομένων και κατάχρησης δικαιωμάτων:

  • Εφαρμογή ελάχιστου δικαιώματος: Παραχωρήστε μόνο τους ρόλους που πραγματικά χρειάζεται ένας λογαριασμός, προτιμώντας το readWrite σε μια ενιαία βάση δεδομένων έναντι των ευρέων διαχειριστικών ρόλων.
  • Αποφύγετε τη χρήση root στην παραγωγή: Κρατήστε τους ρόλους root και userAdminAnyDatabase για εργασίες εγκατάστασης και έκτακτης ανάγκης αντί για καθημερινές λειτουργίες.
  • Ενεργοποίηση ελέγχου ταυτότητας: Ξεκινήστε τον διακομιστή με την επιλογή –auth, ώστε να επιβληθούν τα διαπιστευτήρια.
  • Χρησιμοποιήστε ισχυρούς κωδικούς πρόσβασης: Συνδυάστε το μήκος και την πολυπλοκότητα και εναλλάξτε τους κωδικούς πρόσβασης με το db.changeUserPassword() βάσει χρονοδιαγράμματος.
  • Ελέγχετε τακτικά: RevΗ iew db.getUsers() εξάγει περιοδικά και καταργεί λογαριασμούς που δεν χρειάζονται πλέον.

Μαζί, αυτές οι συνήθειες διασφαλίζουν ότι κάθε λογαριασμός αντιστοιχεί σε μια πραγματική ανάγκη και ότι η πρόσβαση μπορεί να είναι tracκάθε φορά που λαμβάνει χώρα έλεγχος ασφαλείας.

Συχνές Ερωτήσεις

Ναι. Οι βοηθοί τεχνητής νοημοσύνης μπορούν να μετατρέψουν μια απλή περιγραφή σε μια έγκυρη εντολή db.createUser(), να αντιστοιχίσουν τον σωστό πίνακα ρόλων και να τον επηρεάσουν από μια βάση δεδομένων. Πάντα να δοκιμάζετε την παραγόμενη εντολή σε μια μη παραγωγική βάση δεδομένων πριν την εκτελέσετε.

Ναι. Τα εργαλεία ελέγχου που βασίζονται στην τεχνητή νοημοσύνη μπορούν να διαβάσουν την έξοδο db.getUsers(), να επισημάνουν λογαριασμούς που διατηρούν root ή userAdminAnyDatabase και να προτείνουν ρόλους με τα λιγότερα δικαιώματα. Οι διαχειριστές θα πρέπει να ελέγχουν κάθε σύσταση πριν ανακαλέσουν την πρόσβαση σε ένα ενεργό σύστημα.

Ο ρόλος userAdmin διαχειρίζεται χρήστες και ρόλους σε μία συγκεκριμένη βάση δεδομένων, ενώ ο ρόλος userAdminAnyDatabase παραχωρεί δικαιώματα διαχείρισης χρηστών σε κάθε βάση δεδομένων στην παρουσία. Χρησιμοποιήστε τον ρόλο userAdmin για έλεγχο με εύρος ζώνης και τον ρόλο userAdminAnyDatabase μόνο για αξιόπιστους διαχειριστές.

Μεταβείτε στη βάση δεδομένων όπου υπάρχει ο χρήστης με την εντολή use και, στη συνέχεια, εκτελέστε την εντολή db.dropUser(“όνομα χρήστη”). MongoDB καταργεί τον λογαριασμό και τους ρόλους του σε αυτήν τη βάση δεδομένων. Επιβεβαιώστε την κατάργηση εκτελώντας στη συνέχεια την εντολή db.getUsers().

Συνοψίστε αυτήν την ανάρτηση με: