مقالات
من يحق له ماذا: الأدوار والصلاحيات التي يحتاجها أي نظام
حساب إداري مشترك أو أربعون دورًا لا يفهمها أحد: النتيجة واحدة. الأسئلة الأربعة التي تجيب عنها كل صلاحية، والاختبار الذي يحسم الأمر.
- permissions
- security
- operations
الصلاحية جملة من أربعة أجزاء، ومعظم الأنظمة لا تكتب منها إلا جزأين. ولهذا تنهار الصلاحيات في اتجاهين: حساب إداري واحد يتقاسمه الفريق ويفعل كل شيء، أو أربعون دورًا لا يفهمها أحد فيلتف الناس حولها. وفي الحالتين ينتهي الأمر إلى السؤال نفسه: من يستطيع أن يقول، لشخص معيّن وسجل معيّن، ما يحق له فعله؟
ما الأسئلة الأربعة التي تجيب عنها كل صلاحية؟
من، وعلى أي سجل، وأي فعل، وتحت أي شرط. والنظام الذي يجيب عن أقل من أربعة لا يفرض صلاحيات، بل يفرض تسجيل دخول.
- من: هوية شخص، لا قسم ولا مسمّى وظيفي ولا حساب مشترك. «فريق البيع» ليس شخصًا، بل مجموعة سيحتاج كل واحد منها إلى وصول مختلف بعد ستة أشهر.
- على أي سجل: النطاق، وهو عادةً أصعب من الفعل نفسه. «تعديل الطلبات» ليست صلاحية حتى تقول طلبات من: التي أنشأها هو، أم طلبات فرعه، أم كل الطلبات.
- أي فعل: قراءة، إنشاء، تعديل، حذف، موافقة، تصدير. والصلاحية المسماة «إدارة» تخفي ستة قرارات في كلمة واحدة، أهمها الموافقة والحذف.
- تحت أي شرط: الجزء الذي ينساه الجميع. الطلب يُعدَّل حتى تصدر فاتورته ولا بعدها. والخصم يُمنح تحت حدّ ويحتاج موافقة فوقه. والسعر يتغير خلال الشهر ولا يتغير بعد إقفاله. الشروط هي مكان القاعدة التجارية، والنظام الذي يتجاهلها يعيد القاعدة إلى رسالة واتساب.
لماذا لا يكون الدور مرتبة إدارية؟
لأن الدور حزمة صلاحيات يحتاجها عمل، والمرتبة حكم على المكانة. يتداخلان كثيرًا فيتوقف الناس عن التفريق بينهما، فتُبنى الحزمة من الهيكل الإداري.
وينتج عن ذلك أمران. صاحب السلطة الأكبر يحتاج صلاحيات أقل في الغالب: المالك الذي يقرأ ملخصًا شهريًا لا يحتاج إلى تعديل أمر شراء، بينما قد يحتاج المحاسب الذي يقفل الشهر إلى تصحيح كل شيء تقريبًا. وقد يحتاج شخصان بالمسمّى نفسه حقوقًا مختلفة، كمسؤول المخزن ومسؤول المشتريات وهما في قسمين.
سمِّ الدور باسم العمل لا باسم حامله: بيع عند العدّاد، استلام مخزون، إقفال الشهر. فالمسمّى يعيش أطول من العمل الذي وصفه، ولا أحد يراجع دورًا اسمه «مدير».
ماذا عن حقل يراه شخص ولا يراه آخر؟
أمين الصندوق يحتاج رقم هاتف العميل ليتصل بشأن توصيل، ولا يجوز أن يرى حدّ الائتمان. والجواب المعتاد — سجل العميل كله صلاحية واحدة — يفرض خيارًا واحدًا من اثنين: أن تُمنع المكالمة، أو أن يُنشر رقم يخص قرارًا تجاريًا.
صلاحيات الحقل تستحق تعقيدها لقائمة قصيرة: التكلفة والهامش، وحدّ الائتمان، والراتب، وسعر المورّد، وأرقام الهوية. أبقِ القائمة قصيرة واكتبها. وما عدا ذلك يُحسم بالشاشات: شاشة العدّاد تعرض ما تحتاجه مهمة العدّاد، وشاشة الحسابات تعرض الباقي، وفتح الثانية صلاحية قائمة بذاتها.
وثمة سبب ثانٍ لإخفاء الحدّ لا علاقة له بالأمن: رقم ظاهر على شاشة أمام صفّ من الزبائن يُقرأ بصوت عالٍ ويُجادل فيه أمامهم.
ما الذي يتغير حين يكون للعمل أكثر من فرع؟
الموقع بُعد في الصلاحية، لا دور ثانٍ. «مسؤول فرع» دور واحد، ومن يحمله له نطاق فرع واحد أو أربعة.
وثمة ثلاث ثغرات تتكرر. يُؤخذ النطاق من فرع الحساب الافتراضي، فيصير خاطئًا بهدوء يوم يغطي أحدهم وردية في محل آخر. ويضطر مستخدم الإدارة المركزية إلى اختيار فرع في كل شاشة لأن النظام لا يعرف نطاق «كل الفروع». وتحتاج المناقلة بين فرعين إلى من يرى الطرفين، وهو في الغالب لا أحد.
| السؤال | جواب ضعيف | جواب يعمل |
|---|---|---|
| من | حساب إداري مشترك | شخص باسمه ومفتاحه |
| على أي سجلات | «كل ما في الوحدة» | هذا الفرع، أو ما أنشأه بنفسه |
| أي فعل | «إدارة» | قراءة وتعديل وموافقة وتصدير، منفصلة |
| سحب الصلاحية | تغيير كلمة السر | إيقاف حساب واحد، من اليوم |
كيف تصل إلى قائمة أدوار قصيرة؟
- اكتب الأعمال الخمسة أو الستة التي تُنجز فعلًا في الأسبوع، بأفعال: استلام طلب، تسعيره، تأكيد المخزون، تحضير التوصيل، إصدار الفاتورة، إقفال الشهر.
- اجلس ساعة مع من يؤدي كل عمل، وسجّل كل شاشة وزر يلمسه.
- ادمج أي دورين لا يختلفان إلا بصلاحية واحدة. أما دورَان يختلفان بحقل واحد فهما دور واحد وقاعدة حقل، أو خطأ في التصميم.
- أعطِ كل شخص أصغر مجموعة تسمح له بإنهاء يومه دون سؤال زميل. فإن كان يسأل كل يوم فالمجموعة خاطئة، وسيُعطى كلمة سر مشتركة خلال شهر.
- اكتب الأجوبة الأربعة لكل دور في صفحة واحدة، واطلب من مسؤول غير تقني إعادة وصفها. فإن عجز فالدور غير مكتمل.
- جرّب السحب في الأسبوع نفسه: أوقف حسابًا تجريبيًا وتأكد أن الطلب التالي يُرفض، لا تسجيل الدخول التالي.
أين يخطئ هذا النهج
- الفحص في الواجهة. إخفاء زر ليس صلاحية، فالطلب يصل إلى خادم يثق به. ولهذا يبقى فشل التحقق من الصلاحيات في رأس قائمة OWASP العشر.
- الصلاحية تُقرأ مرة واحدة عند الدخول. تغيّر دورًا في شاشة الإدارة فيحتفظ الشخص بالمجموعة القديمة حتى تنتهي جلسته، وأحيانًا لأسابيع. والصلاحية التي لا تستطيع سحبها غدًا ليست صلاحية، بل واقع في نظامك.
- أربعون دورًا لأن كل شخص أخذ دوره. هذا حساب شخصي بخطوات إضافية، ولا أحد يستطيع شرح أي منها.
- صلاحيات منسوخة عن قائمة القوائم. الشاشة ليست صلاحية. شاشتان تعدّلان السجل نفسه صلاحية واحدة، أيًّا كان موضعهما في القائمة.
- حساب المدير الدائم «للاحتياط». هو منفذ يتجاوز كل نقاش عن الوصول. وإن وجب وجوده فله اسمه وأثره وتاريخ تبديله.
- وصول مؤقت بلا تاريخ انتهاء. يعيش أطول من المشروع لأن أحدًا لا يملك التاريخ.
ما لا يغطيه هذا المقال
لا يخبرك هذا المقال بالأدوار التي يحتاجها عملك؛ ذلك يأتي من مراقبة العمل، ويتغير حين يتغير العمل. وليس حديثًا عن آليات المصادقة: تخزين كلمات السر والجلسات وإعادة التعيين موضوع مستقل له مرجعه. ويفترض أن النظام ملكك تستطيع تغييره؛ فإن كان منتجًا جاهزًا من مورّد، فبعض ما هنا إعداد تطلبه وبعضه ليس للبيع.
نبني أنظمة تجيب فيها كل صلاحية عن من، وعلى أي سجل، وأي فعل، وتحت أي شرط — ويُسحب أي منها بإجراء واحد، في اليوم نفسه.
خدمات في هذا المقال
مقالات
مقالات ذات صلة.
أداة داخلية بلا تسجيل دخول: الخطر الذي تملكه بالفعل
كلمة سر مشتركة ورابط غير منشور ليسا حماية. ما تحتاجه الأداة الداخلية كحد أدنى، وما يحدث حين يغادر أحدهم.
- security
- access
- internal-tools
من غيّر هذا؟ سجل التغييرات الذي لا يطلبه أحد إلا حين يلزم
الشاشة تعرض السعر الجديد وحده، لا القديم ولا صاحبه. ما يجب أن يحمله سجل التغيير، وكيف تبدأ سجلًا في نظام لم يعرف السجل.
- audit
- data
- operations
تسلّم نظام من مطوّر رحل: من أين تبدأ
الوصول قبل الكود: جرد كل حساب، وإيقاف وصول من رحل بحذر، وإثبات استعادة ناجحة، وتجميد النطاق شهرًا. الثلاثون يومًا الأولى بالترتيب.
- تسليم
- صيانة
- مخاطر
ابدأ مشروعًا
لديك شيء تريد بناءه؟
ملخص قصير يكفي. تحصل على نطاق مكتوب وسعر ثابت قبل أن يبدأ أي شيء.
