KoderKoder.ai
الأسعارالمؤسساتالتعليمللمستثمرين
تسجيل الدخولابدأ الآن

المنتج

الأسعارالمؤسساتللمستثمرين

الموارد

اتصل بناالدعمالتعليمالمدونة

قانوني

سياسة الخصوصيةشروط الاستخدامالأمانسياسة الاستخدام المقبولالإبلاغ عن إساءة

اجتماعي

LinkedInTwitter
Koder.ai
اللغة

© 2026 ‏Koder.ai. جميع الحقوق محفوظة.

الرئيسية›المدونة›كيفية بناء تطبيق ويب لإدارة أذونات الأدوات الداخلية
11 نوفمبر 2025·8 دقيقة

كيفية بناء تطبيق ويب لإدارة أذونات الأدوات الداخلية

دليل خطوة بخطوة لتصميم وبناء تطبيق ويب يدير وصول الأدوات الداخلية عبر أدوار، موافقات، سجلات تدقيق، وعمليات آمنة.

كيفية بناء تطبيق ويب لإدارة أذونات الأدوات الداخلية

تحديد المشكلة والنطاق

قبل أن تختار أدوار RBAC والأذونات أو تبدأ في تصميم الشاشات، حدّد بدقة ما الذي يعنيه "أذونات الأدوات الداخلية" في منظمتك. لبعض الفرق هو مجرد "من يمكنه الوصول إلى أي تطبيق"؛ ولدى فرق أخرى يتضمن ذلك إجراءات دقيقة داخل كل أداة، ترقيات مؤقتة، وأدلة تدقيق.

ما الذي يُحتسب كصلاحية؟

دوّن الإجراءات الدقيقة التي تحتاج للتحكم بها، مستخدمًا أفعالًا تتوافق مع طريقة عمل الناس:

  • عرض (وصول للقراءة فقط إلى لوحات القيادة، التذاكر، سجلات العملاء)
  • تعديل (تغيير الإعدادات، تحديث البيانات، إغلاق الطلبات)
  • إدارة (إدارة المستخدمين، تغيير الفوترة، تعديل إعدادات الأمان)
  • تصدير (تحميل تقارير، سحب بيانات عملاء، وصول API)

تصبح هذه القائمة الأساس لتطبيق إدارة الوصول: هي ما تحدد ما تخزنه، ما توافق عليه، وما تدققه.

جرد الأدوات وأين يتم فرض السياسة

قم بجرد الأنظمة والأدوات الداخلية: تطبيقات SaaS، لوحات إدارة داخلية، مخازن بيانات، مجلدات مشتركة، CI/CD، وأي جداول بيانات "مدير ظلي". لكلٍ منها، سجّل ما إذا كانت الأذونات تُفرض:

  • داخل الأداة (أدوار أصلية)
  • عند بوابتك (reverse proxy، طبقة API)
  • بواسطة إجراء (خطوات يدوية، بيانات اعتماد مشتركة)

إذا كان التنفيذ "بواسطة إجراء" فهذا خطر يجب إزالته أو قبوله صراحة.

أصحاب المصلحة ومقاييس النجاح

حدّد صانعي القرار والمشغلين: تقنية المعلومات، الأمن/الامتثال, قادة الفرق، والمستخدمين النهائيين الذين يطلبون الوصول. اتفقوا على مقاييس نجاح قابلة للقياس:

  • الوسيط الزمني لمنح الوصول
  • عدد الحوادث المتعلقة بالأذونات
  • نسبة الوصول التي لها مالك وتبرير عمل
  • جاهزية التدقيق (هل يمكنك الإجابة على "من كان له وصول إلى ماذا، ومتى، ولماذا؟")

الحصول على نطاق صحيح يمنع بناء نظام صلاحيات معقد جدًا للتشغيل — أو بسيط جدًا ليحمي مبدأ الأقل امتياز.

اختر نموذج التفويض (الأدوار، السياسات، والاستثناءات)

نموذج التفويض هو "شكل" نظام الصلاحيات لديك. اختره بشكل صحيح مبكرًا فكل شيء آخر — الواجهة، الموافقات، التدقيق، والفرض — يبقى أبسط.

ابدأ بأبسط نموذج يمكن أن يصمد

معظم الأدوات الداخلية يمكن أن تبدأ بـ التحكم في الوصول بناءً على الأدوار (RBAC):

  • أدوار بسيطة: يحصل المستخدم على دور واحد أو أكثر (مثل Viewer، Operator، Admin).
  • دور + تجاوزات: الأدوار تغطي 90% من الحالات، مع مجموعة صغيرة من المنح/المنع الصريحة لكل مستخدم.
  • قواعد قائمة على السمات (ABAC): الأذونات تعتمد على سمات مثل القسم، الموقع، حساسية البيانات، أو البيئة.

RBAC هو الأسهل للشرح والمراجعة. أضف التجاوزات فقط عندما ترى طلبات "حالات خاصة" متكررة. انتقل إلى ABAC عندما تكون لديك قواعد ثابتة ستؤدي خلاف ذلك إلى انفجار عدد الأدوار (مثال: "يمكنه الوصول للأداة X فقط لمنطقته").

اجعل الأقل امتيازًا هو الافتراضي

صمم الأدوار بحيث يكون الافتراضي وصولًا أدنى، ولا تُمنح الامتيازات إلا بصراحة:

  • ابدأ من "بدون وصول" أو "قراءة فقط" كأساسات.
  • فرق بين "يمكن العرض" و"يمكن التغيير" (و"يمكن الموافقة" عن "يمكن الطلب").
  • تجنّب أدوار "Admin" التي تتضمن كل شيء بصمت؛ اجعل الإجراءات ذات التأثير العالي مرئية.

قرر ما هو عام وما هو خاص بالأداة

عرّف الأذونات على مستويين:

  • أذونات عامة: قدرات على مستوى المؤسسة مثل "إدارة المستخدمين"، "عرض سجلات التدقيق"، أو "الموافقة على الوصول".
  • أذونات خاصة بالأداة: إجراءات داخل كل أداة (مثلاً نشر، تعديل الإعدادات، عرض الأسرار).

هذا يمنع حاجة أداة واحدة من إجبار كل الأدوات الأخرى على نفس بنية الأدوار.

خطط لاستثناءات دون كسر النموذج

الاستثناءات حتمية؛ اجعلها صريحة:

  • وصول مؤقت: منح مرتبط بالوقت ينتهي تلقائيًا.
  • مسؤول كسر-الزجاج (break-glass admin): دور طارئ مع ضوابط إضافية (مدة محدودة، سبب إلزامي، تسجيل مُعمّق).

إذا أصبحت الاستثناءات شائعة، فهذه إشارة لتعديل الأدوار أو إدخال قواعد سياسات—دون السماح لـ"الاستثناءات" أن تصبح امتيازات دائمة غير مُراجعة.

صمم نموذج البيانات

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

الكيانات الأساسية (اجعلها صريحة)

ابدأ بمجموعة صغيرة من الجداول/المجموعات التي تتطابق بوضوح مع المفاهيم الواقعية:

  • المستخدمون (الأشخاص الذين يحتاجون وصولاً)
  • الفرق (مجموعات تدير لها الوصول)
  • الأدوات/التطبيقات (ما يُمنح له الوصول)
  • الأدوار (حزم مسمّاة مثل "مسؤول الفوترة")
  • الأذونات (قدرات دقيقة مثل export_invoices)
  • التعيينات (حقيقة أن مستخدم/فريق له دور لأداة محددة)

لا ينبغي أن "تطفو" الأدوار بلا سياق. في أغلب البيئات الداخلية، يكون للدور معنى فقط ضمن الأداة (مثال: "مسؤول" في Jira مقابل "مسؤول" في AWS).

العلاقات وقواعد الوراثة

توقع علاقات متعددة-لمعنى-متعدد:

  • يمكن أن ينتمي المستخدم إلى عدة فرق، وللفريق عدة مستخدمين.
  • يحتوي الدور على عدة أذونات، ويمكن أن تكون الأذونات في أدوار متعددة.
  • عادة ما تربط التعيينات: (الموضوع = مستخدم أو فريق) → (دور) → (أداة/تطبيق).

إذا دعمت الوراثة عبر الفريق، قرّر القاعدة مبكرًا: الوصول الفعّال = التعيينات المباشرة للمستخدم بالإضافة إلى تعيينات الفريق، مع معالجة تعارضات واضحة (مثلاً: "المنع يفوق السماح" إذا نمذجت المنع).

حقول دورة الحياة التي تُسهّل التدقيق

أضِف حقولًا تشرح التغييرات عبر الزمن:

  • created_by (من منحه)
  • expires_at (الوصول المؤقت)
  • disabled_at (تعطيل مؤقت دون فقدان التاريخ)

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

فهرسة لفحوصات الصلاحيات السريعة

أسرع استعلام غالبًا هو: "هل للمستخدم X الصلاحية Y في الأداة Z؟" قم بفهرسة التعيينات حسب (user_id, tool_id)، وحسِب الأذونات الفعّالة مسبقًا إذا كانت الفحوصات تحتاج أن تكون فورية. حافظ على مسارات الكتابة بسيطة، لكن حسّن مسارات القراءة حيث تعتمد عليها فرضية الوصول.

المصادقة ودمج SSO

المصادقة هي كيف يثبت الأشخاص هويتهم. هدف تطبيق إدارة الصلاحيات الداخلي هو جعل تسجيل الدخول سهلًا للموظفين مع حماية قوية للإجراءات الإدارية.

اختر طريقة تسجيل الدخول

عادة لديك ثلاثة خيارات:

  • SSO (موصى به لمعظم الشركات): يقوم الموظفون بتسجيل الدخول بهوية المؤسسة (Google Workspace، Microsoft Entra ID/ADFS، Okta، Ping).
  • رابط سحري عبر البريد الإلكتروني (بدون كلمة مرور): يدخل المستخدم بريده ويتلقى رابطًا مؤقتًا. بسيط، لكنه أضعف إذا كانت أمان البريد متفاوتًا.
  • كلمات المرور: خيار أخير للتطبيقات الداخلية لأنه يخلق عبء إعادة تعيين وكلمات مرور وسياسات.

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

الاندماج مع SAML أو OIDC (SSO)

معظم الاندماجات الحديثة تستخدم OIDC؛ ولا تزال المؤسسات تستخدم SAML.

  • OIDC: تتحقق من توكن الهوية، تربط معرفًا مستخدمًا ثابتًا (subject/issuer)، وقد تقرأ مطالبات المجموعات/الأدوار.
  • SAML: تتحقق من التصريحات الموقعة، تربط NameID (أو سمة مخصصة)، وتتعامل مع تدوير البيانات الوصفية/الشهادات.

بغض النظر عن البروتوكول، قرّر ما تثق به من IdP:

  • الهوية فقط (من هو المستخدم)، بينما يخزن تطبيقك الصلاحيات.
  • الهوية + المجموعات (من هو المستخدم وإلى أي مجموعات ينتمي)، والتي يمكن أن تُعين أدوارًا أساسية تلقائيًا.

الجلسات: الانتهاء، التجديد، وثقة الجهاز

حدّد قواعد الجلسات مُسبقًا:

  • جلسة وصول قصيرة العمر (مثلاً 8–12 ساعة) مع طلب إعادة مصادقة واضح.
  • استراتيجية التجديد: إما تجديد صامت عبر IdP (OIDC) أو تسجيل دخول بعد انتهاء الجلسة (أبسط وأكثر أمانًا).
  • ثقة الجهاز: تذكّر جهازًا لاتخاذ إجراءات منخفضة المخاطر، لكن اجبَر إعادة مصادقة للتغييرات الإدارية. تتبع الجلسات لكل جهاز حتى يتمكن المشرف من إلغائها.

المصادقة متعددة العوامل للإجراءات الإدارية الحساسة

حتى لو كان IdP يفرض MFA عند تسجيل الدخول، أضف زيادة مستوى المصادقة للإجراءات عالية التأثير مثل منح حقوق المشرف، تغيير قواعد الموافقة، أو تصدير سجلات التدقيق. عمليًا، يعني ذلك إعادة التحقق من "هل تمت المصادقة متعددة العوامل مؤخرًا" (أو إجبار إعادة المصادقة) قبل إتمام الإجراء.

طلب الوصول وسير عمل الموافقات

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

المسار الأساسي: طلب → قرار → منح

ابدأ بمسار بسيط وقابل للتكرار:

  1. يطلب المستخدم الوصول لأداة محددة، بيئة (prod مقابل staging)، ومجموعة صلاحيات.
  2. يراجع الموافقون الطلب (مع سياق مثل التبرير ومدة الطلب).
  3. يمنح النظام الوصول تلقائيًا بعد الموافقة (أو ينشئ مهمة لمشرف إذا لم تتوفر الأتمتة).
  4. يُعلم المستخدم، ويسجل المنح في سجل التدقيق.

اجعل الطلبات مُهيكلة: تجنب نصوص حرة مثل "أعطني صلاحية مشرف". بدلاً من ذلك، اجبر اختيار دور معرف مسبقًا أو حزمة أذونات واطلب تبريرًا قصيرًا.

من يمكنه الموافقة على ماذا

عرّف قواعد الموافقة مُسبقًا حتى لا تتحول الموافقات إلى نقاشات:

  • موافقة المدير تؤكد أن الطلب يتناسب مع مسؤوليات الوظيفة.
  • موافقة مالك التطبيق تؤكد أن مستوى الصلاحية مناسب للأداة (وغالبًا للبيئة المحددة).
  • موافقة الأمن مخصصة للوصول عالي التأثير (أدوار المشرف، كتابة للإنتاج، بيانات حساسة).

استخدم سياسة مثل "المدير + مالك التطبيق" للوصول القياسي، وأضف الأمن كخطوة مطلوبة للأدوار المميزة.

وصول محدود بالوقت مع انتهاء تلقائي

افترض الوصول المحدد زمنيًا افتراضيًا (مثلاً 7–30 يومًا) واسمح بـ"حتى الإلغاء" فقط لقائمة قصيرة من الأدوار المستقرة. اجعل الانتهاء تلقائيًا: نفس سير العمل الذي يمنح الوصول يجب أن يحدد إزالة مجدولة ويبلّغ المستخدم قبل انتهائها.

الوصول العاجل دون فقدان السيطرة

ادعم مسار "عاجل" للاستجابة للحوادث، لكن أضف ضمانات:

  • اشتراط رمز سبب (تذكرة حادث، مرجع انقطاع)
  • مدة افتراضية أقصر (ساعات، لا أيام)
  • تسجيل إضافي وإشعارات لمالكي التطبيق والأمن

بهذه الطريقة، لا يعني الوصول السريع وصولًا غير مرئي.

تجربة لوحة إدارة المشرف التي تمنع الأخطاء

خطط للأدوار قبل البناء
صِغ RBAC والتجاوزات والاستثناءات في وضع التخطيط قبل توليد الكود.
ابدأ المشروع

لوحة المشرف هي المكان الذي "نقرة واحدة" يمكن أن تمنح وصولًا لبيانات الرواتب أو تلغي حقوق الإنتاج. تجربة مستخدم جيدة تعامل كل تغيير صلاحية كتحرير عالي المخاطر: واضح، قابل للتراجع، وسهل المراجعة.

ابدأ بتخطيط مناسب للمشرف

استخدم هيكل تنقل يطابق طريقة تفكير المشرفين:

  • المستخدمون: من لديه وصول ولماذا
  • الأدوار: حزم قابلة لإعادة الاستخدام من الأذونات
  • التطبيقات/الموارد: ما يمكن الوصول إليه
  • الطلبات: الموافقات المعلقة والتاريخ
  • التدقيق: من غيّر ماذا ومتى

هذا التخطيط يقلل أخطاء "أين أذهب؟" ويجعل من الصعب تغيير الشيء الخطأ في المكان الخطأ.

اجعل الأذونات قابلة للقراءة (لا تقتصر على الدقة التقنية)

يجب أن تكون أسماء الأذونات بلغة بسيطة أولًا، والتفاصيل التقنية ثانيًا. على سبيل المثال:

  • "عرض الفواتير" (النطاق: Billing → Invoices:read)
  • "النشر للإنتاج" (النطاق: CI/CD → prod:deploy)

أظهر تأثير الدور في ملخص قصير ("يمنح الوصول إلى 12 موردًا، بما في ذلك الإنتاج") واربط بالتفصيل الكامل.

أضف حواجز للأفعال الخطرة

استخدم الاحتكاك عن قصد:

  • معاينة قبل التطبيق: "هذا سيضيف 3 أذونات ويزيل 1."
  • حوار تأكيد للأذونات الحساسة (إنتاج، تمويل، موارد بشرية)
  • تغييرات جماعية بحذر: تطلب معاينة CSV، إبراز الصفوف غير الصحيحة، وطلب خانة "أفهم"
  • تراجع سهل: "تراجع عن هذا التغيير" من صفحة تفاصيل التغيير

حسّن للمنظمات الكبيرة

يحتاج المشرفون سرعة دون التضحية بالأمان. أضف بحث، فلاتر (تطبيق، دور، قسم، حالة)، وترقيم صفحات في كل قوائم المستخدمين، الأدوار، الطلبات، وسجلات التدقيق. حافظ على حالة الفلتر في عنوان URL حتى تكون الصفحات قابلة للمشاركة والتكرار.

طبقة الفرض: كيف تُفحص الأذونات فعليًا

طبقة الفرض هي مكان تحويل نموذج الأذونات إلى واقع. يجب أن تكون مملة، متسقة، وصعبة التجاوز.

دالة فحص صلاحية واحدة، في كل مكان

اصنع دالة واحدة (أو وحدة صغيرة) تجيب على سؤال واحد: "هل يمكن للمستخدم X تنفيذ الفعل Y على المورد Z؟" يجب أن تستدعيها كل بوابة في الواجهة، معالج API، مهمة خلفية، وأداة إدارية.

هذا يتجنّب إعادة تنفيذ "قريبة بما فيه الكفاية" التي تنحرف مع الزمن. اجعل المُدخلات صريحة (معرّف المستخدم، الفعل، نوع/معرف المورد، السياق)، والمخرجات صارمة (سماح/منع مع سبب للتدقيق).

احمِ المسارات وواجهات البرمجة (وليست الواجهة فقط)

إخفاء الأزرار ليس أمانًا. نفّذ الصلاحيات على الخادم لكل:

  • كل نقطة نهاية API (بما في ذلك نقاط داخلية/إدارية)
  • كل المسارات التي تُعرض من الخادم
  • مهام الخلفية (تصديرات، مزامنة، وظائف مجدولة)

نمط جيد هو middleware يحمل الموضوع (المورد)، يستدعي دالة الفحص، ويفشل مغلقًا (403) إذا كان القرار "منع". إذا كشفت واجهةً /api/reports/export، فعندها يجب أن يُطبّق نفس القيد على نقطة التصدير حتى لو كان الزر معطلاً في الواجهة.

التخزين المؤقت بحذر حتى تبقى القرارات حديثة

يمكن أن يحسّن caching أداء فحوصات الصلاحيات، لكنه قد يبقي وصولًا فعالًا بعد تغيير الدور. فضّل تخزين مدخلات تتغير ببطء (تعريفات الدور، قواعد السياسة)، واجعل ذاكرة قرارات الفحص قصيرة العمر. أبطل ذاكرة التخزين عند أحداث مثل تحديث الأدوار، تغيير تعيينات المستخدمين، أو إلغاء التهيئة. إذا اضطررت لتخزين قرارات لكل مستخدم، أضف عدّاد "نسخة الأذونات" للمستخدم ورفعه عند أي تغيير.

أخطاء شائعة تجنّبها

تجنّب:

  • المسؤول الضمني: "isEmployee=true" أو "أنشأ مساحة العمل" يمنح كل شيء تلقائيًا
  • نقاط نهاية منسية: مسارات v1 القديمة، تصديرات CSV، webhooks، حقول GraphQL، أدوات داخلية
  • فجوات "المنع": غياب السياسة = سماح. الافتراضي يجب أن يكون منعًا ما لم يُسمح صراحة

إذا أردت نموذجًا مرجعيًا للتنفيذ، وثّقه واربطه من دفتر تشغيل الهندسة (مثلاً /docs/authorization) حتى تتبع النقاط النهائية الجديدة نفس مسار الفرض.

سجلات التدقيق والتقارير

سجلات التدقيق هي "نظام الإيصالات" لصلاحياتك. عندما يسأل أحدهم "لماذا لدى أليكس وصول لرواتب؟" يجب أن تكون قادرًا على الإجابة في دقائق — دون تخمين أو التنقيب عبر المحادثات.

ماذا نسجل (وكيف نجعله مفيدًا)

لكل تغيير صلاحية، سجّل من غيّر ماذا، ومتى، ولماذا. يجب ألا يكون "السبب" نصًا حرًا فقط؛ يجب ربطه بسير العمل الذي برر التغيير.

تسجيل لا يقل عن:

  • الفاعل (مشرف/خدمة)، المستخدم أو المجموعة المستهدفة، والمورد (أداة، بيئة، مجموعة بيانات)
  • القيمة القديمة → القيمة الجديدة (مثلاً Finance-Read → Finance-Admin)
  • الطابع الزمني (UTC) والمصدر (واجهة، API، مهمة آلية)
  • معرّف الطلب ومعرّف الموافقة (أو معرّف التذكرة) حتى تتمكن من إعادة تشغيل مسار القرار بالكامل
  • اختياري: تبرير العمل، تاريخ الانتهاء، والسياسة التي سمحت به

استخدم مخطط حدث موحّد حتى تبقى التقارير موثوقة. حتى لو تغيّرت الواجهة بمرور الوقت، يظل سرد التدقيق قابلًا للقراءة.

تسجيل قراءات البيانات الحساسة

ليس كل قراءة بيانات تحتاج سجلًا، لكن وصول البيانات عالية المخاطر غالبًا ما يحتاج.

أمثلة شائعة: تفاصيل الرواتب، تصدير بيانات شخصية للعملاء، عرض مفاتيح API، أو إجراءات "تنزيل الكل".

اجعل تسجيل القراءات عمليًا:

  • سجّل الأحداث وليس الحمولات الكاملة (تجنّب تخزين قيم حساسة في السجلات)
  • سجّل معرفات الموارد، عوامل التصفية المستخدمة، والحجم حيثما كان مناسبًا (مثال: "صدر 2,431 صفًا")
  • استخدم العينات فقط إذا سمح الامتثال ودوّن هذا الاختيار

التقارير والتصديرات (مع ضوابط)

قدّم تقارير أساسية يستخدمها المشرفون: "الأذونات لكل شخص"، "من يمكنه الوصول إلى X"، و"التغييرات خلال آخر 30 يومًا". أضف خيارات تصدير (CSV/JSON) للمراجعين، لكن عامل التصديرات كأفعال حساسة:

  • تطلب إذنًا صريحًا لتصدير بيانات التدقيق
  • ضع وسمًا في التصدير بمن أنشأه ومتى
  • سجّل حدث التصدير نفسه (بما في ذلك الفلاتر وصيغة الملف)

الاحتفاظ ومن يمكنه مشاهدة سجلات التدقيق

حدّد سياسة الاحتفاظ مُسبقًا (مثلاً 1–7 سنوات بحسب المتطلبات التنظيمية) وافصل الواجبات:

  • مجموعة محدودة من الأدوار يمكنها عرض سجلات التدقيق
  • ادعم وصول المراجع للقراءة فقط
  • اجعل السجلات ملحقة وغير قابلة للتلاعب بسهولة (تخزين غير قابل للتعديل أو سلاسل أحداث موقعة)

إذا أضفت مساحة "تدقيق" مخصصة في واجهة المشرف، اربطها من /admin مع تحذيرات واضحة وتصميم يعتمد البحث أولاً.

دورة حياة المستخدم والتوفير

ابنِ نواة RBAC وCRUD
أنشئ المستخدمين والفرق والأدوات والأدوار والتعيينات بنموذج بيانات مبدئي نظيف.
إنشاء تطبيق

تنحرف الصلاحيات عندما ينضم الأشخاص، يغيرون الفرق، يأخذون إجازة، أو يغادرون الشركة. تعامل مع دورة حياة المستخدم كميزة أساسية، لا كفكرة لاحقة.

التوفير: كيف يحصل المستخدمون الجدد على الوصول الصحيح

ابدأ بمصدر حقيقة واضح للهوية: نظام الموارد البشرية، IdP (Okta، Azure AD، Google)، أو كلاهما. ينبغي أن يكون تطبيقك قادرًا على:

  • إنشاء سجل مستخدم تلقائيًا عند ظهور الموظف في IdP.
  • تعيين وصول أساسي باستخدام الأقل امتياز (مثال: دور "موظف" افتراضيًا + أدوار خاصة بالفريق).

إذا دعم موفر الهوية SCIM، استخدمه. SCIM يسمح بمزامنة المستخدمين والمجموعات والحالات تلقائيًا إلى تطبيقك، مما يقلل العمل اليدوي ويمنع "المستخدمين الأشباح". إذا لم يتوفر SCIM، جدولة استيرادات دورية (API أو CSV) واطلب من الملاك مراجعة الاستثناءات.

تغييرات الأدوار: التعامل مع انتقالات الفرق بدون فوضى

انتقالات الفريق هي حيث تتعطل صلاحيات الأدوات غالبًا. نمذج "الفريق" كخاصية مُدارة (مزامنة من HR/IdP)، وعامل تعيينات الأدوار كقواعد مشتقة حيثما أمكن (مثال: "إذا القسم = محاسبة فامنح دور محلل محاسبة").

عند انتقال شخص بين فرق، يجب أن:

  • تزيل الأدوار المستندة إلى الفريق تلقائيًا.
  • تحافظ على الاستثناءات الممنوحة صراحة (وعلّمها لإعادة الموافقة).

إلغاء التهيئة: إغلاق سريع للوصول عند المغادرة

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

  • إبطال الجلسات النشطة ورموز API.
  • إزالة منح الوصول للأدوات وإخطار مالكي الأدوات.

إذا كان تطبيقك يُوفّر الوصول إلى أدوات خارجية، ضع هذه الإزالات في طابور واظهِر أي فشل في لوحة المشرف حتى لا يظل شيء دون ملاحظة.

ضوابط الأمان وفحوص التهديد

تطبيق الصلاحيات هدف جذّاب لأنه يمكنه منح الوصول للعديد من الأنظمة الداخلية. الأمان هنا ليس ميزة واحدة — بل مجموعة ضوابط صغيرة ومتسقة تقلل من فرصة أن يقوم مهاجم (أو مشرف مستعجل) بعمل ضرر.

تحقّق من المدخلات وصد الهجمات الشائعة على الويب

عامل كل حقل نموذج، معامل استعلام، وحمولة API كغير موثوق بها.

  • تحقق من الأنواع والقيم المسموح بها (مثلاً أسماء الأدوار من قائمة ثابتة، لا نص حر)
  • نظّف النص المُدخل الذي قد يُعرض لاحقًا لمنع XSS
  • استخدم حماية CSRF للجلسات المعتمدة على الكوكيز، خاصة على أفعال "منح/إلغاء"

أيضًا ضع افتراضات آمنة في الواجهة: اختر "بدون وصول" مسبقًا واطلب تأكيدًا صريحًا للتغييرات عالية التأثير.

نفّذ التفويض على الخادم — في كل مرة

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

  • إنشاء/تغيير الأدوار والسياسات
  • منح الوصول، إلغاء الوصول، أو تغيير الاستثناءات
  • عرض سجلات التدقيق والتقارير

اجعل ذلك قاعدة هندسية: لا تُنشر نقطة نهاية حساسة دون فحص تفويض وتسجيل حدث تدقيق.

حدود المعدل وضوابط إساءة الاستخدام

نقاط الإدارة والمصادقة أهداف شائعة للهجوم الآلي:

  • حدد معدلات محاولات تسجيل الدخول وإعادة تعيين كلمات المرور
  • حدد معدلات الأفعال الإدارية مثل المنح الجماعي/التصديرات
  • أضف تنبيهات للنشاط المشبوه (مثلاً تغييرات صلاحيات كثيرة بفترة قصيرة)

حيثما أمكن، طلب تحقق مرتفع للمخاطر (إعادة مصادقة أو متطلب موافقة).

الأسرار والتشفير والأقل امتيازًا

خزن الأسرار (أسرار عميل SSO، رموز API) في مدير أسرار مخصص، لا في الشيفرة أو ملفات التكوين.

  • شفر البيانات الحساسة اثناء الراحة والنقل (TLS في كل مكان)
  • استخدم حسابات قاعدة بيانات وخدمات بأقل امتياز يحتاجه التطبيق
  • افصل بين بيانات الاعتماد للقراءة والكتابة حيثما أمكن، خاصة للتقارير وتصديرات التدقيق

فحوص سريعة للتهديد (ما الذي تختبره)

قم بفحوص دورية لـ:

  • تصعيد الامتيازات (مستخدم يمنح نفسه أو فريقه وصولًا أعلى)
  • قضايا IDOR (تغيير معرف في URL للوصول لبيانات فريق آخر)
  • غياب التفويض على نقاط "داخلية"
  • الافتراضات الخطرة (تكاملات جديدة تحصل على وصول واسع تلقائيًا)

هذه الفحوص رخيصة وتكشف أساليب فشل نظام الصلاحيات الشائعة.

استراتيجية الاختبار لتطبيقات ثقيلة الأذونات

اضبط طلبات الوصول بسرعة
أنشئ تدفقات الطلب والموافقة والانتهاء والإشعارات دون توصيل كل شاشة يدويًا.
جرّب الآن

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

1) اختبر القواعد بوحدات (تغذية راجعة سريعة)

ابدأ باختبار وحدة لمقيّم الصلاحيات (الدالة التي تقرر السماح/المنع). اجعل الاختبارات قابلة للقراءة بتسمية السيناريوهات.

  • اختبر قواعد الصلاحيات لحالات السماح والمنع، بما في ذلك حالات الحافة (مثلاً المستخدم معلق، الأداة مؤرشفة، الدور أُزيل منتصف الجلسة)
  • تضمّن مسارات الاستثناء: الوصول المؤقت، مسؤول كسر-الزجاج، و"خدمة ذاتية مع حاجة للموافقة"

نمط جيد هو جدول صغير من الحالات (حالة المستخدم، الدور، المورد، الفعل → القرار المتوقع) حتى لا تتطلب إضافة قواعد جديدة إعادة كتابة كبيرة للمجموعة.

2) اختبارات تكامل للرحلات عالية المخاطر

اختبارات الوحدة لا تكتشف أخطاء الوصل — مثل نسيان المتحكم استدعاء فحص التفويض. أضف بعض اختبارات التكامل حول المسارات الأهم:

  • طلب الوصول → الموافق يوافق/يرفض → المستخدم يكسب/يفقد الوصول
  • تغيير دور → تأثير فوري على الوصول
  • إلغاء تهيئة المستخدم → إزالة الوصول في كل مكان

هذه الاختبارات يجب أن تضرب نفس نقاط النهاية التي تستخدمها الواجهة، وتتحقق من استجابات API وتغييرات قاعدة البيانات الناتجة.

3) ملفات مُعدّات للاختبار يمكنك الوثوق بها

أنشئ ملفات ثابتة لأدوار، فرق، أدوات، ومستخدمين نموذجيين (موظف، متعاقد، مشرف). حافظ عليها مهيكلة ومرقمة عبر مجموعات الاختبار حتى يختبر الجميع ضد نفس معنى "مسؤول مالي" أو "دعم قراءة فقط".

4) قائمة مراجعة تراجع قبل كل إصدار

أضف قائمة مراجعة خفيفة لتغييرات الصلاحيات: أدوار جديدة، تغييرات الدور الافتراضي، تَرحيلات تمس المنح، وأي تغييرات في واجهة المشرف. عندما أمكن، اربط القائمة بعملية الإصدار (مثلاً /blog/release-checklist).

النشر، المراقبة، والعمليات المستمرة

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

خطط بيئاتك (dev، staging، production)

حافظ على عزل dev، staging، وproduction — خاصة بياناتها. يجب أن يعكس staging إعدادات الإنتاج (إعدادات SSO، تبديلات الميزة، مفاتيح السياسات)، لكن استخدم مجموعات هوية منفصلة وحسابات اختبار غير حساسة.

لتطبيقات ثقيلة الأذونات، افصل أيضًا:

  • سجلات التدقيق (حتى لا يلوث اختبارك تقارير الامتثال)
  • سير عمل الموافقة (موافقات staging لا تُخطر الموافقين الحقيقيين)
  • الأسرار والمفاتيح (لا تعيد استخدام مفاتيح توقيع الإنتاج في البيئات الأقل)

مراقبة تلتقط مشاكل الصلاحيات مبكرًا

راقب الأساسيات (التشغيل، الكمون)، لكن أضف إشارات مخصصة للصلاحيات:

  • فشل المصادقة بحسب النوع: جلسة منتهية مقابل خطأ SSO مقابل نقص صلاحية
  • ارتفاع رفض التفويض لأداة/فريق (غالبًا يعني أن تخريطة الأدوار انهارت)
  • نمط مشبوه: طلبات وصول متكررة، تغييرات دور سريعة، أو نشاط إداري غير اعتيادي

اجعل التنبيهات قابلة للتنفيذ: تضمّن المستخدم، الأداة، الدور/السياسة المقيمة، معرّف الطلب، ورابط لحدث التدقيق ذي الصلة في واجهة المشرف.

كتيبات تشغيل: ماذا تفعل عند الساعة الثانية صباحًا

اكتب كتيبات قصيرة للطوارئ الشائعة:

  • إبطال الوصول بسرعة (تعطيل المستخدم، إزالة ربط الأدوار، إبطال الجلسات)
  • استعادة الخدمة (التراجع عن تغيير سياسة، القرار بين fail closed أو fail open، تدوير المفاتيح)
  • إجراء عند انقطاع SSO (وصول كسر-الزجاج محدود الوقت بعد موافقة)

احفظ الكتيبات في المستودع وفي ويكي العمليات، وجرّبها خلال تمارين.

البناء أسرع (دون تخطي الحوكمة)

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

إحدى الطرق التي تتبعها الفرق هي استخدام Koder.ai، منصة vibe-coding تتيح إنشاء تطبيقات ويب وخوادم عبر واجهة محادثة. لتطبيقات ثقيلة الصلاحيات، مفيدة خاصة لتوليد لوحة إدارة أولية، تدفقات الطلب/الموافقة، ونموذج بيانات CRUD بسرعة — مع الحفاظ على التحكم في البنية الأساسية الأساسية (غالبًا React على الويب، Go + PostgreSQL في الخلفية) والسماح بتصدير الشيفرة المصدرية عند الاستعداد للانتقال إلى مسار المراجعة والنشر المعياري. ومع نمو الاحتياجات، تساعد ميزات مثل اللقطات/التراجع ووضع التخطيط على التكرار على قواعد التفويض بأمان أكبر.

الخطوات التالية

إذا أردت أساسًا أوضح لتصميم الأدوار قبل توسيع العمليات، راجع /blog/role-based-access-control-basics. لخيارات التغليف والطرح، تحقق من /pricing.

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

ما الذي يُعتبر "صلاحية" في تطبيق وصول الأدوات الداخلية؟

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

طريقة عملية للبدء هي تسجيل الإجراءات لكل أداة وبيئة (الإنتاج مقابل التحضير)، ثم توحيد الأسماء بحيث تكون قابلة للمراجعة والتدقيق.

كيف أجرد الأدوات وأقرر أين يجب فرض الصلاحيات؟

قم بجرد كل نظام يهمه الوصول — تطبيقات SaaS، لوحات الإدارة الداخلية، مخازن البيانات، CI/CD، المجلدات المشتركة، وأي جداول بيانات "مدراء ظليين".

لكل أداة، سجّل مكان تنفيذ فرض الصلاحيات:

  • داخل الأداة (أدوار أصلية)
  • عند البوابة (reverse proxy / طبقة API)
  • بالإجراء (خطوات يدوية / بيانات اعتماد مشتركة)

أي شيء يُنفّذ "بالإجراء" يجب اعتباره مخاطر صريحة أو أولوية للإزالة.

ما هي مقاييس النجاح التي ينبغي علينا استخدامها لإدارة الصلاحيات الداخلية؟

تتبع مقاييس تعكس السرعة والسلامة معًا:

  • الوسيط الزمني لمنح الوصول
  • الحوادث المتعلقة بالصلاحيات
  • % الوصول المصحوب بمالك وتبرير عمل
  • جاهزية التدقيق: "من كان له وصول إلى ماذا، ومتى، ولماذا؟"

هذه المقاييس تساعدك تقيم ما إذا كان النظام يحسن العمليات ويقلل المخاطر.

متى أستخدم RBAC مقابل RBAC مع استثناءات مقابل ABAC؟

ابدأ بأبسط نموذج يتحمّل الاستثناءات الواقعية:

  • RBAC إذا كان معظم الوصول يُعبر عنه بأدوار مثل Viewer/Operator/Admin
  • RBAC + استثناءات عندما تظهر حالات خاصة نادرة لا يمكن نمذجتها بسهولة
  • ABAC عندما تؤدي قواعد السمات المتسقة إلى تقليل عدد الأدوار بدلاً من تضخيمها (مثال: قواعد حسب المنطقة/القسم)

اختر أبسط نهج يبقى مفهوماً أثناء المراجعات والتدقيق.

كيف نجعل مبدأ الأقل امتيازًا هو الافتراضي دون إبطاء الفرق؟

اجعل الوصول الأدنى هو الإعداد الافتراضي واطلب تخصيصًا صريحًا لكل ما يزيد عنه:

  • ابدأ من "بدون وصول" أو "للقراءة فقط"
  • فصل "العرض" عن "التعديل"، و"الطلب" عن "الموافقة"
  • تجنّب حزم "Admin" التي تمنح كل شيء بصمت؛ اجعل الإجراءات عالية التأثير مرئية

يمكن لسياسة الأقل امتيازًا أن تنجح عندما تكون سهلة الشرح والمراجعة.

ما الفرق بين الأذونات العامة وأذونات الأدوات المحددة؟

عرّف الأذونات العامة للقدرات عبر المنظمة (مثل إدارة المستخدمين، الموافقة على الوصول، عرض سجلات التدقيق) وأذونات خاصة بالأداة للإجراءات داخل كل أداة (مثل النشر، عرض الأسرار).

هذا يمنع تعقيد أداة واحدة من إجبار بقية الأدوات على نفس هيكل الأدوار.

ما نموذج البيانات الذي نحتاجه للإجابة على "من لديه وصول إلى ماذا، ولماذا؟"

على الأقل، نمذج:

  • المستخدمون، الفرق
  • الأدوات/التطبيقات
  • الأدوار، الأذونات
  • التعيينات (الموضوع → دور → أداة)

أضف حقول دورة الحياة مثل created_by، expires_at، وdisabled_at حتى تتمكن من الإجابة على أسئلة تاريخية (مثال: "هل كان هذا الوصول صالحًا يوم الثلاثاء الماضي؟") بدون تكهنات.

كيف يجب أن ندمج المصادقة وSSO (OIDC مقابل SAML)؟

يفضّل استخدام SSO لتطبيقات داخلية حتى يستخدم الموظفون موفر الهوية المؤسسي.

  • OIDC شائع في الإعدادات الحديثة (توكنات ID + معرفات مستقرة)
  • SAML لا يزال مطلوبًا في مؤسسات كثيرة (تصريحات موقعة + تدوير الشهادات/البيانات الوصفية)

قرّر ما إذا كنت تثق بموفر الهوية للهوية فقط، أو الهوية بالإضافة إلى المجموعات (لإسناد وصول أساسي تلقائيًا).

كيف يجب أن يبدو سير عمل طلب الوصول والموافقة؟

استخدم مسار منظم: طلب → قرار → منح → إشعار → تدقيق.

اجعل الطلبات تختار حزمة أدوار/أذونات معرفّة مسبقًا (لا تتركها نصًا حرًا)، واطلب مبررًا قصيرًا، وعرّف قواعد الموافقة مثل:

  • مدير + مالك التطبيق للوصول القياسي
  • إضافة موافقة أمنية للأدوار المميزة/الإنتاج/الحساسة

افتراضيًا؛ اجعل الوصول محددًا زمنيًا مع انتهاء تلقائي.

ماذا يجب أن نضع في سجلات التدقيق، ومن يجب أن يُسمح له بمشاهدتها؟

سجل التغييرات كسجل ملحق لا يتغير: من غيّر ماذا، ومتى، ولماذا، بما في ذلك القيم القديمة → الجديدة ورابط لطلب/موافقة (أو تذكرة) مبررة.

أيضًا:

  • فكّر في تسجيل عمليات القراءة ذات الخطورة العالية (تصدير، عرض مفاتيح API)
  • عامل صادرات التدقيق كأفعال حساسة (إذن صريح، وسم بالمصدر، وتسجيل حدث التصدير)
  • حدّد الاحتفاظ بالبيانات (غالبًا سنة إلى 7 سنوات) وقم بتقييد من يمكنه عرض السجلات (أدوار مدقق قراءة فقط مفيدة)
المحتويات
تحديد المشكلة والنطاقاختر نموذج التفويض (الأدوار، السياسات، والاستثناءات)صمم نموذج البياناتالمصادقة ودمج SSOطلب الوصول وسير عمل الموافقاتتجربة لوحة إدارة المشرف التي تمنع الأخطاءطبقة الفرض: كيف تُفحص الأذونات فعليًاسجلات التدقيق والتقاريردورة حياة المستخدم والتوفيرضوابط الأمان وفحوص التهديداستراتيجية الاختبار لتطبيقات ثقيلة الأذوناتالنشر، المراقبة، والعمليات المستمرةالخطوات التاليةالأسئلة الشائعة
مشاركة
Koder.ai
أنشئ تطبيقك الخاص مع Koder اليوم!

أفضل طريقة لفهم قوة Koder هي تجربتها بنفسك.

ابدأ مجاناًاحجز عرضاً توضيحياً