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

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

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