محتويات الدورة

MariaDB / المتوسط: التزامن وSQL القابلة لإعادة الاستخدام / الدرس 11

الحسابات والأدوار والمصادقة

صمم هوية تقارير محدودة الصلاحيات دون إضعاف مصادقة الإدارة، وافصل إثبات هوية الاتصال عن صلاحيات الكائنات.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • شرح مطابقة user@host ومصادقة الإضافات.
  • تطبيق أقل صلاحية بالأدوار والتحقق من المنح الفعلية.

تشمل الهوية المضيف المتصل

حساب MariaDB زوج مستخدم ومضيف وليس اسماً فقط. تثبت المصادقة حق استخدام الحساب، وتحدد الصلاحيات العبارات والكائنات المتاحة. قد يطابق اتصال المقبس المحلي حساباً يختلف عن TCP. لا تعالج فشل دخول التطبيق بمنحه إدارة عامة؛ حدد الوجهة والحساب والإضافة أولاً ثم امنح العمليات التي يحتاجها دوره التجاري فقط.

افحص طريقة المصادقة الفعلية

تستخدم الإدارة المحلية في كثير من تثبيتات Unix إضافة unix_socket التي تربط المصادقة بهوية نظام التشغيل. تؤثر الحزمة وتاريخ إنشاء الحساب، فلا تفترض قبول root لكلمة مرور أو أن المقبس بلا تحقق. تدعم MariaDB إضافات المصادقة وبدائل متعددة للحساب منذ 10.4، وتؤثر إمكانات الموصل أيضاً. حافظ على دخول الإدارة أثناء تصميم حساب خدمة مستقل؛ لا يطلب المقرر تغيير root.

sql SQL توضيحي؛ النتائج المتوقعة مستنتجة وليست قياسات.
SELECT CURRENT_USER(), USER(), CURRENT_ROLE();
SHOW GRANTS;

تصف عبارتا الفحص الجلسة الحالية، وتعتمد النتيجة على الحساب والأدوار النشطة.

امنح قدرة إعداد التقارير

تفترض أمثلة الإدارة حساب تدريب مجهزاً اسمه harbor_reader عند localhost. يجمع الدور صلاحية SELECT على قاعدة محددة ليُراجع ويُسند باتساق. تتحكم SET DEFAULT ROLE في التفعيل للجلسات التالية؛ لا يثبت المنح وحده نشاط الدور في الاتصال الحالي. تجهيز المصادقة وتسليم الأسرار ومتطلبات TLS خطوات مراجعة مستقلة، ولا نضمن كلمات مرور قابلة لإعادة الاستخدام في المقرر.

اجعل التفعيل مرئياً

بعد تطبيق التصميم من إدارة مصرح لها في بيئة مؤقتة، ينبغي أن تقرأ جلسة جديدة الكائنات المسموحة وتُرفض كتاباتها. تسجل SHOW GRANTS FOR منح الحساب والدور، وتفحص CURRENT_ROLE() نشاطه في جلسة القارئ. هذا عقد صلاحيات متوقع لا نتيجة مرصودة. قد تكشف SELECT على مستوى القاعدة جداول مستقبلية؛ وقد تناسب العروض أو قوائم الجداول الضيقة التقارير الحساسة.

sql SQL توضيحي؛ النتائج المتوقعة مستنتجة وليست قياسات.
CREATE ROLE harbor_reporter;
GRANT SELECT ON harbor_lab.* TO harbor_reporter;
GRANT harbor_reporter TO 'harbor_reader'@'localhost';
SET DEFAULT ROLE harbor_reporter FOR 'harbor_reader'@'localhost';
SHOW GRANTS FOR 'harbor_reader'@'localhost';
SHOW GRANTS FOR harbor_reporter;

توضيح إداري فقط؛ إنشاء الحساب وإعداد الاعتماد الحقيقي خارج هذا المقطع.

تحقق من الصلاحيات واسحبها بوعي

افصل حسابات التشغيل والترحيل والنسخ والمراقبة لاختلاف حاجاتها. قد يحتاج الترحيل تعريف البيانات بينما لا يحتاجه معالج الطلب المعتاد. راجع معرفي العروض والروتينات إلى جانب المنح المباشر لأنها قد تدخل سياق صلاحيات آخر. تدرب على السحب مع فهم الاتصالات القائمة ومجمعاتها. استخدم نقلاً مشفراً للاتصال البعيد وتحقق من الحماية المتفاوض عليها لا نية الإعداد وحدها.

الأخطاء الشائعة وإصلاحها

ERROR 1045 (28000): Access denied for user

لماذا يحدث؟
لا تتطابق الاعتمادات أو المضيف أو الإضافة أو شروط النقل.
كيف تصلحه؟
افحص الحساب وطريقة الاتصال مع إدارة مصرح لها.
كيف تتجنب تكراره؟
جهز حساب الخدمة بمضيف وإضافة وتوافق موصل واضح.

لا يتيح الدور الممنوح SELECT

لماذا يحدث؟
قد لا يكون الدور نشطاً في الجلسة.
كيف تصلحه؟
افحص CURRENT_ROLE() والمنح وسياسة الدور الافتراضي.
كيف تتجنب تكراره؟
تحقق من الصلاحيات الفعلية عبر اتصال خدمة جديد ممثل.

يستطيع حساب التقارير تعديل الجداول

لماذا يحدث؟
تجاوز منح مباشر واسع أو دور آخر النطاق المطلوب.
كيف تصلحه؟
احصر كل المنح الفعلي واسحب الزائد بتغيير مراجع.
كيف تتجنب تكراره؟
اختبر القراءات المسموحة والكتابات المرفوضة عند التجهيز.

اختبر فهمك

1. تحتاج خدمة عرضين للتقارير فقط. هل يناسب GRANT SELECT ON *.* البداية؟

اعرض الحل المشروح

لا؛ امنح العرضين المعتمدين أو نطاق تقارير ضيقاً وراجع هل يتطلب سياقهما صلاحية الكائنات الأصلية. تكشف SELECT العامة بيانات أخرى ومستقبلية. تحقق من قراءة الحقول المطلوبة ورفض الجداول الأخرى والتغييرات.

2. ينجح دخول إدارة عبر المقبس ويفشل TCP بالاسم نفسه. اشرح تسلسل التشخيص.

اعرض الحل المشروح

سجل طريقة الاتصال والحساب من الجلسة الناجحة ثم افحص user@host المستهدف وإضافته بإدارة مصرح لها. قد تعتمد مصادقة المقبس على النظام ولا تنطبق على TCP. افحص توافق الموصل وTLS، ولا تغير مصادقة root أو تضف مضيفاً عاماً كحل غير مدروس.

أهم ما تعلمته

  • المصادقة ومطابقة الحساب والمنح فحوص منفصلة.
  • تحقق من أقل صلاحية عبر تفعيل الدور وتوقع رفض العمليات الأخرى.

المراجع الرسمية