هل سمعت عن التحديث الأخير لأداة «supabase-rls-check»؟ إنها أداة تساعد المطورين في إدارة أمان قواعد البيانات، وقد قامت إصداراتها الأخيرة (0.6.1-0.6.3) بحل مشكلة معقدة تتعلق بـ «أمان مستوى الصفوف» (Row Level Security) و«ملحقات» قواعد البيانات. يسلط هذا التحديث الضوء على درس مهم حول كيفية حماية قواعد البيانات لبياناتك.

تخيل مكتبة ضخمة حيث لا يُسمح للجميع بالاطلاع على كل كتاب. بعض الكتب مخصصة لأمناء المكتبات فقط، وبعضها للباحثين المحددين، والكتب العامة متاحة للجميع. في قواعد البيانات، يعمل «أمان مستوى الصفوف» أو RLS بطريقة مشابهة. إنها ميزة قوية تتيح لك التحكم في *من* يمكنه رؤية أو تعديل *صفوف معينة* من البيانات في جدول ما. بدلاً من القول ببساطة: «يمكنك الوصول إلى جدول «المستخدمين» بأكمله»، يتيح لك RLS أن تقول: «يمكنك فقط رؤية ملف التعريف الخاص بك، بينما يمكن للمسؤولين رؤية جميع ملفات التعريف». هذا أمر بالغ الأهمية للخصوصية والأمان، خاصة مع المعلومات الحساسة.

الآن، يمكن لقواعد البيانات مثل PostgreSQL الحصول على ميزات إضافية من خلال «الملحقات» (extensions). فكر في هذه الملحقات على أنها إضافة تطبيقات متخصصة إلى قاعدة بياناتك. على سبيل المثال، PostGIS هو ملحق يضيف إمكانيات متقدمة للبيانات الجغرافية. عندما تضيف ملحقًا، فإنه غالبًا ما ينشئ جداوله الخاصة لتخزين بياناته. هنا تبرز المشكلة: الملحق *نفسه* (أو المستخدم الخارق لقاعدة البيانات الذي قام بتثبيته) هو «المالك» الرسمي لهذه الجداول الجديدة.

عندما يحاول مطور تمكين RLS على أحد هذه الجداول المملوكة للملحقات – ربما لأنه يريد تأمين البيانات الجغرافية التي أنشأها PostGIS – قد ترفض قاعدة البيانات ذلك، قائلة شيئًا مثل: «خطأ: يجب أن تكون مالك الجدول». هذا ليس خطأ برمجيًا؛ إنه إجراء أمان. تمنع قاعدة البيانات المستخدمين غير المصرح لهم (حتى مالك المشروع الذي لم *ينشئ* جداول الملحق مباشرة) من تغيير إعدادات الأمان الأساسية على الكائنات التي لا يمتلكونها صراحةً. الأمر يشبه محاولة وضع قفل جديد على باب تابع للمكتبة، لكنك لست أمين المكتبة الرئيسي.

لقد تعلم تحديث أداة «supabase-rls-check» على وجه التحديد كيفية تحديد هذه الجداول المملوكة للملحقات. من خلال فحص سجلات قاعدة البيانات الداخلية، يمكنها الآن إخبار المطورين: «مرحبًا، هذا الجدول ينتمي إلى ملحق، ولهذا السبب لا يمكنك تمكين RLS عليه مباشرة». وهذا يساعد المطورين على فهم آليات قاعدة البيانات الداخلية وتجنب الاصطدام بحائط. الدرس الأساسي هنا هو أنه بينما يعتبر أمان مستوى الصفوف ضروريًا للتحكم الدقيق في البيانات، فإن فهم ملكية قاعدة البيانات وكيف تتفاعل الملحقات معها لا يقل أهمية للإدارة الآمنة والسلسة لقواعد البيانات.