كيفية إنشاء مستخدم وإضافة دور فيه MongoDB
⚡ ملخص ذكي
إنشاء مستخدم وإضافة دور في MongoDB يعتمد على طريقة db.createUser() لتحديد بيانات الاعتماد، وتعيين الأدوار المضمنة، وتحديد نطاق الامتيازات لقواعد بيانات محددة، مما يعزز التحكم في الوصول عبر حسابات الإدارة وحسابات قاعدة البيانات الفردية.
ما هي الأدوار المدمجة في MongoDB?
قبل إنشاء حساب، من المفيد فهم الأدوار المدمجة التي MongoDB يُوفّر. الدور عبارة عن مجموعة مُسمّاة من الصلاحيات، وترتبط كل صلاحية بمورد (قاعدة بيانات أو مجموعة) مع الإجراءات المسموح بها عليه. لذا، فإنّ تعيين دور أثناء إنشاء المستخدم يُحدّد بدقة ما يُمكن لهذا الحساب القيام به.
MongoDB يُصنّف النظام أدواره المدمجة إلى أدوار مستخدمي قواعد البيانات، وأدوار إدارة قواعد البيانات، وأدوار إدارة المجموعات، وأدوار النسخ الاحتياطي والاستعادة، وأدوار المستخدم المتميز. يلخص الجدول أدناه الأدوار الأكثر استخدامًا عند إدارة المستخدمين:
| النوع | الفئة | الامتيازات الممنوحة |
|---|---|---|
| اقرأ | مستخدم قاعدة البيانات | إمكانية الوصول للقراءة فقط إلى جميع المجموعات غير النظامية في قاعدة البيانات. |
| قراءة وكتابة | مستخدم قاعدة البيانات | إمكانية قراءة البيانات بالإضافة إلى إدراج وتحديث وحذف البيانات في المجموعات. |
| مسؤول قاعدة البيانات | مسؤول قاعدة البيانات | إدارة المخطط والفهرسة والإحصائيات لقاعدة البيانات. |
| مسؤول المستخدم | مسؤول قاعدة البيانات | إنشاء وتعديل المستخدمين والأدوار في قاعدة بيانات واحدة. |
| userAdminAnyDatabase | الخارق | إدارة المستخدمين عبر جميع قواعد البيانات في المثيل. |
| جذر | الخارق | الوصول الكامل إلى جميع الموارد والعمليات. |
MongoDB إنشاء مستخدم مسؤول
إنشاء مسؤول المستخدم في MongoDB يتم ذلك باستخدام طريقة createUser. يوضح المثال التالي كيفية القيام بذلك.
db.createUser(
{ user: "Guru99",
pwd: "password",
roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Code التفسير:
- الخطوة الأولى هي تحديد "اسم المستخدم" و"كلمة المرور" المطلوب إنشاؤهما.
- الخطوة الثانية هي تعيين دور للمستخدم. بما أنه يجب أن يكون مسؤول قاعدة بيانات، فقد عيّنا له دور "userAdminAnyDatabase". يتيح هذا الدور للمستخدم صلاحيات إدارية على جميع قواعد البيانات في MongoDB.
- تحدد معلمة db قاعدة بيانات المسؤول، وهي قاعدة بيانات خاصة ضمن MongoDB التي تحتوي على معلومات هذا المستخدم.
إذا تم تنفيذ الأمر بنجاح، سيتم عرض الإخراج التالي:
الإخراج:
تُظهر النتائج أن المستخدم اتصل بـ "Guruتم إنشاء "99" ويتمتع هذا المستخدم بصلاحيات على جميع قواعد البيانات في MongoDB.
MongoDB إنشاء مستخدم لقاعدة بيانات واحدة
لإنشاء مستخدم يدير قاعدة بيانات واحدة، يمكننا استخدام نفس الأمر المذكور أعلاه، ولكننا نحتاج إلى استخدام خيار "userAdmin" فقط.
يوضح المثال التالي كيفية القيام بذلك:
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code التفسير:
- الخطوة الأولى هي تحديد "اسم المستخدم" و"كلمة المرور" المطلوب إنشاؤهما.
- الخطوة الثانية هي تعيين دور للمستخدم، وفي هذه الحالة، بما أنه يجب أن يكون مسؤول قاعدة بيانات، يتم تعيينه لدور "userAdmin". يتيح هذا الدور للمستخدم صلاحيات إدارية فقط لقاعدة البيانات المحددة في خيار db.
- تحدد المعلمة db قاعدة البيانات التي يجب أن يتمتع المستخدم بامتيازات إدارية عليها.
إذا تم تنفيذ الأمر بنجاح، سيتم عرض الإخراج التالي:
الإخراج:
يُظهر الإخراج أنه تم إنشاء مستخدم يسمى "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يتم تحديثها كلما تم إجراء مراجعة أمنية.






