كيفية إنشاء مستخدم وإضافة دور فيه MongoDB

⚡ ملخص ذكي

إنشاء مستخدم وإضافة دور في MongoDB يعتمد على طريقة db.createUser() لتحديد بيانات الاعتماد، وتعيين الأدوار المضمنة، وتحديد نطاق الامتيازات لقواعد بيانات محددة، مما يعزز التحكم في الوصول عبر حسابات الإدارة وحسابات قاعدة البيانات الفردية.

  • 🔑 المنهج الأساسي: يقوم الأمر db.createUser() بإنشاء حساب عن طريق تحديد المستخدم وكلمة المرور ومصفوفة الأدوار في عبارة واحدة.
  • 🛡️ نطاق المسؤول: يمنح دور userAdminAnyDatabase حقوق الإدارة عبر كل قاعدة بيانات، بينما يحد دور userAdmin من التحكم في قاعدة بيانات واحدة مسماة.
  • 🎯 تعيين الدور: الأدوار المدمجة مثل القراءة والكتابة تتوافق بدقة مع الإجراءات التي قد يقوم بها المستخدم على مجموعة.
  • 👥 قواعد بيانات متعددة: يمكن لحساب واحد أن يحمل أدوارًا مختلفة عبر قواعد بيانات متعددة داخل مصفوفة أدوار واحدة.
  • التحقق: تؤكد طريقة db.getUsers() والمخرجات المُعادة أن الحسابات والصلاحيات قد تم توفيرها بشكل صحيح.

كيفية إنشاء مستخدم وإضافة دور في MongoDB

ما هي الأدوار المدمجة في MongoDB?

قبل إنشاء حساب، من المفيد فهم الأدوار المدمجة التي MongoDB يُوفّر. الدور عبارة عن مجموعة مُسمّاة من الصلاحيات، وترتبط كل صلاحية بمورد (قاعدة بيانات أو مجموعة) مع الإجراءات المسموح بها عليه. لذا، فإنّ تعيين دور أثناء إنشاء المستخدم يُحدّد بدقة ما يُمكن لهذا الحساب القيام به.

MongoDB يُصنّف النظام أدواره المدمجة إلى أدوار مستخدمي قواعد البيانات، وأدوار إدارة قواعد البيانات، وأدوار إدارة المجموعات، وأدوار النسخ الاحتياطي والاستعادة، وأدوار المستخدم المتميز. يلخص الجدول أدناه الأدوار الأكثر استخدامًا عند إدارة المستخدمين:

النوع الفئة الامتيازات الممنوحة
اقرأ مستخدم قاعدة البيانات إمكانية الوصول للقراءة فقط إلى جميع المجموعات غير النظامية في قاعدة البيانات.
قراءة وكتابة مستخدم قاعدة البيانات إمكانية قراءة البيانات بالإضافة إلى إدراج وتحديث وحذف البيانات في المجموعات.
مسؤول قاعدة البيانات مسؤول قاعدة البيانات إدارة المخطط والفهرسة والإحصائيات لقاعدة البيانات.
مسؤول المستخدم مسؤول قاعدة البيانات إنشاء وتعديل المستخدمين والأدوار في قاعدة بيانات واحدة.
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 إنشاء مستخدم مسؤول

تُظهر النتائج أن المستخدم اتصل بـ "Guruتم إنشاء "99" ويتمتع هذا المستخدم بصلاحيات على جميع قواعد البيانات في 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على سبيل المثال، هناك دور "القراءة" الذي يسمح بالوصول للقراءة فقط إلى قواعد البيانات، ودور "القراءة والكتابة" الذي يوفر الوصول للقراءة والكتابة إلى قاعدة البيانات. وهذا يعني أن المستخدم يستطيع تنفيذ أوامر الإدراج والحذف والتحديث على المجموعات في قاعدة البيانات.

إدارة المستخدمين

db.createUser(
{
	user: "Mohan",

	pwd: "password",

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

يوضح مقتطف الشفرة أعلاه إنشاء مستخدم يُدعى موهان، وتعيين أدوار متعددة له في قواعد بيانات مختلفة. في المثال السابق، مُنح موهان صلاحية القراءة فقط لقاعدة بيانات "التسويق" وصلاحية القراءة والكتابة لقاعدة بيانات "المبيعات".

كيفية العرض والإدارة MongoDB المستخدمين

بعد إنشاء الحسابات، MongoDB يوفر مجموعة من الأوامر لفحصها وتحديثها وإزالتها دون حذفهاping وإعادة إنشاء كل مستخدم. تُنفَّذ هذه الأوامر على قاعدة البيانات التي أُنشئ فيها المستخدم، لذا يُرجى التبديل إلى قاعدة البيانات الصحيحة باستخدام عبارة الاستخدام قبل إصدارها.

أكثر أوامر إدارة المستخدمين شيوعًا هي:

  • db.getUsers() — يعرض جميع المستخدمين المعرفين في قاعدة البيانات الحالية بالإضافة إلى الأدوار التي يشغلها كل منهم.
  • db.getUser(“username”) — يعيد تفاصيل حساب واحد، وهو أمر مفيد لتدقيق الصلاحيات.
  • 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 النشر آمن وسهل التدقيق. تقلل الممارسات التالية من مخاطر الكشف غير المقصود عن البيانات وإساءة استخدام الصلاحيات:

  • تطبيق أقل الامتيازات: امنح فقط الأدوار التي يحتاجها الحساب فعلاً، مع تفضيل أدوار القراءة والكتابة على قاعدة بيانات واحدة على الأدوار الإدارية الواسعة.
  • تجنب استخدام الجذر في الإنتاج: احتفظ بأدوار الجذر و userAdminAnyDatabase لمهام الإعداد والطوارئ بدلاً من العمليات اليومية.
  • تفعيل المصادقة: قم بتشغيل الخادم باستخدام خيار –auth حتى يتم تطبيق بيانات الاعتماد فعليًا.
  • استخدم كلمات مرور قوية: قم بدمج الطول والتعقيد، وقم بتدوير كلمات المرور باستخدام db.changeUserPassword() وفقًا لجدول زمني.
  • التدقيق بانتظام: Revيتم عرض مخرجات db.getUsers() بشكل دوري وإزالة الحسابات التي لم تعد مطلوبة.

تضمن هذه العادات مجتمعةً أن يرتبط كل حساب بحاجة حقيقية وأن يكون الوصول إليه متاحًا tracيتم تحديثها كلما تم إجراء مراجعة أمنية.

الأسئلة الشائعة

نعم. يمكن للمساعدين المدعومين بالذكاء الاصطناعي تحويل وصف بسيط إلى أمر db.createUser() صالح، وتعيين مصفوفة الأدوار المناسبة، وتحديد نطاقه في قاعدة البيانات. اختبر الأمر المُنشأ دائمًا على قاعدة بيانات غير إنتاجية قبل تشغيله.

نعم. تستطيع أدوات التدقيق المدعومة بالذكاء الاصطناعي قراءة مخرجات دالة db.getUsers()، وتحديد الحسابات التي تحمل صلاحيات الجذر أو userAdminAnyDatabase، واقتراح أدوار بأقل الصلاحيات. مع ذلك، ينبغي على المسؤولين مراجعة كل توصية قبل إلغاء الوصول في نظام قيد التشغيل.

يُدير دور userAdmin المستخدمين والأدوار في قاعدة بيانات واحدة محددة، بينما يمنح دور userAdminAnyDatabase صلاحيات إدارة المستخدم عبر جميع قواعد البيانات في النظام. استخدم دور userAdmin للتحكم المحدود النطاق، ودور userAdminAnyDatabase فقط للمسؤولين الموثوق بهم.

انتقل إلى قاعدة البيانات التي يوجد بها المستخدم باستخدام الأمر use، ثم قم بتشغيل db.dropUser(“username”). MongoDB يؤدي هذا إلى حذف الحساب وأدواره من قاعدة البيانات. تأكد من الحذف بتشغيل الأمر db.getUsers() بعد ذلك.

تلخيص هذه التدوينة بـ: