ملحق الأمان — EduRegie
ملحق لاتفاقية معالجة البيانات: التدابير التقنية والتنظيمية الملموسة (المادة 32 من اللائحة العامة لحماية البيانات).
التدابير التقنية
| التدبير | الحالة | التوضيح |
|---|---|---|
| فصل المستأجرين لكل مدرسة | مُنفَّذ | أمان مستوى الصف (RLS) في PostgreSQL/Supabase؛ يتم تلقائيًا تقييد كل استعلام بـ school_id = current_school_id() للمستخدم المسجّل الدخول (راجع supabase/migrations/0002_auth_and_rls.sql) |
| التشفير أثناء النقل | مُنفَّذ | HTTPS/TLS لجميع حركة المرور إلى لوحة التحكم وواجهات n8n وSupabase |
| التشفير أثناء التخزين | مُنفَّذ | التشفير القياسي أثناء التخزين الخاص بمزود استضافة Supabase/PostgreSQL |
| المصادقة | مُنفَّذ | Supabase Auth (البريد الإلكتروني/كلمة المرور)؛ لا يوجد تسجيل ذاتي عام — تُنشأ الحسابات فقط عبر دعوة من مسؤول المدرسة |
| المصادقة الثنائية للأدوار الحساسة | مُنفَّذة ومفروضة | مصادقة TOTP إلزامية (تطبيق مصادقة) لأدوار الموارد البشرية ومسؤول المدرسة؛ يتم توجيه أي شخص لم يسجّل بعد مباشرةً إلى صفحة التسجيل عند تسجيل الدخول (راجع middleware.ts و/dashboard/beveiliging) |
| أدوار الحد الأدنى من الصلاحيات | مُنفَّذ | تنقل قائم على الأدوار وتحقق من الأدوار من جانب الخادم في لوحة التحكم (موظف/مشغّل/منسق جدول/رئيس فريق/موارد بشرية/بديل/مسؤول)؛ راجع components/DashboardNav.tsx والتحققات الخاصة بكل صفحة |
| تسجيل التدقيق | مُنفَّذ | جدول audit_log، يُعبأ بواسطة SF 21 - EduRegie Audit & Compliance |
| فصل دور الخدمة | مُنفَّذ | تستخدم مسارات عمل n8n مفتاح دور خدمة يكتب خارج نطاق RLS؛ يُصفّي كل استعلام فيه بنفسه حسب school_id (راجع التوضيح أسفل 0002_auth_and_rls.sql) |
| بيئات منفصلة | موصى به | استخدام مشروع Supabase منفصل (أو على الأقل مدرسة تجريبية منفصلة بـ demo_mode = true) للعروض التوضيحية، منفصلة عن أي بيئة إنتاج مستقبلية |
| تسجيل الدخول الموحد (Microsoft Entra ID / Google Workspace / SURFconext) | لم يُنفَّذ بعد | مخطط له في المرحلة 3 من خارطة الطريق (docs/mvp-roadmap.md) |
التدابير التنظيمية
- لا توجد إمكانية إدخال للبيانات الطبية في بوابة المستخدم العادية؛ تنبّه نصوص الواجهة المستخدمين إلى ذلك صراحةً (راجع
/dashboard/ziek-melden). - الوصول إلى مفتاح دور خدمة Supabase وبيئة n8n مقتصر على المورد (Elhoucine Automation)، وبعد التسليم، على مسؤول (مسؤولي) المدرسة الذين تعيّنهم المدرسة.
- تُضاف الحسابات الجديدة فقط عبر دعوة صريحة من مسؤول المدرسة (لا يوجد تسجيل ذاتي) — راجع
app/api/internal/gebruikers/uitnodigen/route.ts. - يمنع وضع العرض التوضيحي (
demo_mode = trueفي إعدادات المدرسة) وصول الإشعارات إلى موظفين أو طلاب حقيقيين إلى أن توافق المدرسة كتابيًا — راجعdocs/productie-runbook.md. - راجع
docs/incidentprocedure.mdللاطلاع على الخطوات الواجب اتباعها في حال (الاشتباه في) خرق للبيانات.
ما ينقص بعد لتحقيق مستوى أمان إنتاجي كامل
- مراجعة أمنية مستقلة/اختبار اختراق قبل أول تسليم إنتاجي مدفوع لمدرسة.
- تمرين رسمي للاستجابة للحوادث مع الفريق.
- توسيع نطاق المصادقة الثنائية ليشمل دور منسق الجدول إذا رغبت المدرسة في ذلك — وهي حاليًا مقتصرة عمدًا على الموارد البشرية/المسؤول، وهما الدوران الأوسع اطلاعًا على بيانات الموظفين.