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

