English

دراسة الحالة 12 · خدمات دورة الحياة الهندسية

صلاحيات على مستوى مساحة العمل تسري على كل مشروع وأصل فيها

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

الشريك
شركة استشارية متعددة الجنسيات
المدة
من أكتوبر 2024 إلى يناير 2026
قواعد وصول
6
مباشرة، وعبر المجموعة، وبالملكية، وبرتبة الإجراء، وبالوراثة، وقراءة المورد الأب
مستويات هرمية
4
مساحة العمل والمشروع والأصل والنسخة
أنواع رموز الوصول
3
رموز Entra ID، ورموز بين الخدمات، ورموز WebSocket قصيرة الأجل

التحدي

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

ما بنيناه

نموذج سياسات مبني على Casbin يتبع التسلسل الهرمي لموارد المنصة ويُطبَّق على كل مسار (route). يمكن أن يأتي الوصول من منح مباشر، أو من مجموعة، أو من الملكية، أو من إجراء أعلى، أو من مورد أب، وتتغلب قواعد المنع على قواعد السماح، ويُفحص كل طلب بعد التحقق من هوية مُرسله.

ما تم تسليمه

  • صلاحيات تُورث من مساحة العمل إلى المشروع والأصل والنسخة
  • وصول قائم على المجموعات، وقواعد للملكية والمنع
  • فحص للصلاحيات على كل مسار خارج قائمة السماح، يتحقق منه اختبار

نبذة عن الشريك

شريكنا شركة استشارية متعددة الجنسيات تتعامل فرقها مع كميات كبيرة من المستندات وجداول البيانات وقواعد البيانات والبريد الإلكتروني. وأراد الشريك منصة داخلية واحدة تبني فيها هذه الفرق خطوط معالجة البيانات والوكلاء الأذكياء بنفسها، بدلًا من التعاقد على تطبيق جديد لكل حاجة. وكان على المنصة أن تعمل داخل بيئة Microsoft 365 وAzure لدى الشريك، وأن تفصل عمل كل فريق عن غيره، وأن تنقل العمل من مرحلة التجربة إلى بيئة الإنتاج عبر بيئات خاضعة للرقابة. وتتناول دراسة الحالة هذه جزءًا واحدًا من تلك المنصة، وتصف تسع دراسات حالة المنصة كاملة.

التحدي

أصول أكثر من أن تُدار واحدًا تلو الآخر

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

الاستثناءات

أحيانًا يجب أن يفقد شخص واحد الوصول إلى أصل واحد داخل مشروع يحق له رؤية بقية محتواه.

أنواع مختلفة من الجهات المُرسِلة

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

التصفح يحتاج إلى سياق

المستخدم الذي يملك صلاحية الوصول إلى خط معالجة واحد يحتاج مع ذلك إلى رؤية المشروع ومساحة العمل اللذين يضمانه.

الأهداف

  • منح الوصول مرة واحدة على المستوى المناسب ليسري على ما دونه
  • دعم المجموعات والملكية
  • ترتيب الإجراءات بحيث تشمل الصلاحية الأوسع الصلاحية الأضيق
  • السماح لقاعدة منع بأن تتغلب على الوصول الموروث
  • التحقق من هوية كل جهة مُرسِلة قبل فحص الصلاحيات
  • جعل إضافة مسار دون فحص للصلاحيات أمرًا مستحيلًا

دورنا

تولّت كارسنترك القيادة التقنية والبنية المعمارية ضمن فريق هندسي متعدد التخصصات، وأسهمت مباشرة في التنفيذ. بُنيت المنصة على مدى 16 شهرًا، من أكتوبر 2024 إلى يناير 2026، بواجهة خلفية مبنية على Python وFastAPI وتعمل على Azure.

النطاق والجدول الزمني

بُني نموذج التفويض ومعالجة رموز الوصول بين مارس ويوليو 2025.

الجدول الزمني للتسليم من سجل المشروع، مقارنةً بمدة بناء المنصة كاملة
الجدول الزمني للتسليم من سجل المشروع، مقارنةً بمدة بناء المنصة كاملة

المنهجية

نمذجة التسلسل الهرمي صراحةً

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

ترتيب الإجراءات

الإجراءات مرتبة، فالمستخدم المسموح له بإدارة مورد مسموح له أيضًا بتعديله وقراءته.

فصل الهوية عن الصلاحية

تتحقق البرمجية الوسيطة (middleware) من الهوية أولًا، عبر استراتيجية HTTP أو WebSocket. ثم يجيب فحص السياسة عن سؤال واحد: هل يمكن لهذه الجهة تنفيذ هذا الإجراء على هذا المورد؟

التنفيذ

نظرة عامة على البنية المعمارية
نظرة عامة على البنية المعمارية

نموذج السياسات

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

تطبيق الصلاحيات

تفحص تبعية (dependency) في FastAPI الصلاحية على كل مسار باستثناء قائمة سماح صريحة، مثل فحوص سلامة الخدمة وتسجيل الدخول. ويسرد اختبار جميع المسارات ويُخفق إذا وُجد أي مسار آخر دون فحص. وتصل تغييرات السياسات إلى كل نسخة من واجهة API عبر مراقب (watcher) في Casbin.

تخزين السياسات

تُخزَّن السياسات في PostgreSQL عبر محوّل Casbin غير متزامن.

الهوية

يصادق المستخدمون برموز Microsoft Entra ID. وتستخدم الخدمات رموز وصول من آلة إلى آلة. وتستخدم اتصالات WebSocket رموز تفويض قصيرة الأجل تصدرها المنصة.

طريقة العمل خطوةً بخطوة
طريقة العمل خطوةً بخطوة

الأدوات والتقنيات

الأداةالغرض
Casbinنموذج السياسات وتطبيقها
PostgreSQLتخزين السياسات
Microsoft Entra IDهوية المستخدمين
البرمجية الوسيطة في FastAPIالتحقق من الهوية
SQLAlchemyمحوّل سياسات غير متزامن

ما تم تسليمه

قواعد وصول
6
مستويات هرمية
4
أنواع رموز الوصول
3
خاضع للفحص
كل مسار
  • نموذج صلاحيات هرمي يُطبَّق على كل مسار
  • قواعد للمجموعات والملكية ورتبة الإجراء والمنع
  • التحقق من الهوية للمستخدمين والخدمات واتصالات WebSocket
  • إظهار المورد الأب للمستخدمين الذين يملكون وصولًا إلى مورد تابع له

لماذا يهم ذلك

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

إذا كانت مؤسستكم تخطط لمنصة من هذا النوع، أو تحتاج إلى تصميم جزء محدد منها وتسليمه، يسعدنا أن نناقش ذلك معكم.