ضوابط يمكن أن تُخفِق، واختبارات تكشف الإخفاق، ومخرجات تُثبته.
ليس كل نص في السياسة ضابطًا. الضابط يستحق اسمه عندما يمكن أن يفشل، ويمكن اختبار فشله، ويترك دليلًا بعد الاختبار.
والعبارة التي تفقد واحدة من هذه الخصائص الثلاث ليست ضابطًا، بل قيمة؛ ومكان القيم مقدمة السياسة، لا فهرس الضوابط. فجملة «على الوكيل أن يلتزم بالسياسة» يكفي لتحقيقها أن تكون مكتوبة، فتظل الخلية خضراء إلى الأبد ولا يُختبر شيء. وعبارة «يمارس الفريق تقديرًا سليمًا» قد تكون صحيحة تمامًا، لكنها لا تصلح أساسًا لقرار نشر. أمّا «أداة الدفع ترفض أي معاملة فوق العتبة ما لم تجد سجلَّي موافقة» فهذا ضابط يمكن اختباره مباشرة.
الضوابط لا تعمل كلها في اللحظة نفسها، ولهذا يحتاج الوكيل عالي المخاطر إلى أكثر من نوع واحد. ومن المفيد التفكير فيها في ثلاث عائلات زمنية.
الضابط الوقائي (preventive) يقلل احتمال وقوع المشكلة: نطاق أداة مبنيّ على مبدأ أقل الامتيازات (least privilege)، أو شرط موافقة مُنفَّذ في طبقة الأدوات يمنع الأداة من تنفيذ الإجراء بدونه. والضابط الكاشف (detective) يقلل الزمن اللازم لمعرفة أن شيئًا حدث: كاشف حقن مربوط بتنبيه، أو تنبيه على استخدام أداة محظورة. والضابط الاستجابي (responsive) يقلل الضرر بعد وقوع المشكلة: تعطيل هوية الوكيل، أو إرجاع إصدار سابق وفق مسار إبطال اختبره أحدهم فعلًا وقاس زمنه.
ولا يستبدل أحدها الآخر. فالضابط الوقائي قد يفشل، والوقاية التي تُخفق بصمت لا تختلف عن غياب الضابط أصلًا. والكاشف من دون مسار استجابة ينتج تنبيهات لا يستطيع أحد التصرف بناءً عليها. والاستجابة من دون اكتشاف قد تأتي متأخرة.
في الممارسة، تتكرر سبعة مجالات تغطي معظم ما يحتاجه برنامج الوكلاء.
الموافقة البشرية: مَن يوافق، على ماذا، وهل يستطيع النظام منع التنفيذ إذا غابت الموافقة؟ المطلوب ليس «يراجع إنسان»، بل وظيفة مُسمّاة، أو وظيفتان، تسجّل موافقة لا يستطيع الإجراء أن يُنفَّذ بدونها. والتحكم في الوصول: ما الهوية التي يعمل بها الوكيل، وهل تلتزم بأقل الامتيازات وتقتصر على نطاق وظيفته؟ وهو الضابط الوحيد الذي يصمد بصرف النظر عمّا يدخل السياق. وتفويض الإجراءات: ما الذي تسمح به الأدوات فعليًا — العتبات، والعمليات المسموح بها، والوسائط المطلوبة، وبوابات على الخطوات التي لا رجعة فيها.
وضوابط البيانات: ما الحقول الحساسة، وإلى أي أدوات أو مناطق يجوز أن تنتقل؟ فهي تصنّف الحقول وتقرر أي الفئات يجوز أن تصل إلى أي الأدوات. وضوابط الأدوات: ما النطاق والآثار الجانبية المُعلَنة، وما القائمة المسموحة والممنوعة؟ والمهم أن تُنفَّذ قائمة المنع لا أن تُوصف فقط. وضوابط السياق: كيف نفصل التعليمات الموثوقة عن المحتوى غير الموثوق عند التجميع، وكيف نشترط تتبّع مصدر الوقائع عالية الأثر ونُلزم بالاستناد قبل إنتاج ادعاء من فئة معيّنة؟ وإعادة التقييم: ما التغييرات التي تبطل الأدلة وتعيد النظام إلى الاختبار؟ وهي تأخذ محفِّزات التغيير من سجل المكوّنات وتوصلها بشيء يفرض فعلًا تشغيلًا جديدًا.
ولاحظ أن كثيرًا من الضوابط الجيدة قرارات هندسية: أربعة من هذه المجالات السبعة قرارات في البنية التحتية وردت في الجزء الثاني. فالحوكمة لا تعني بناء طبقة بعيدة عن المنتج؛ تعني تحويل القرارات الهندسية المهمة إلى تعهدات يمكن قياسها ومراجعتها. والضابط، بهذا المعنى، هو الموضع الذي يتحول فيه قرارٌ في البنية التحتية إلى تعهّد خاضع للحوكمة.
سنكتب ضابط FIN-07 بصيغة تصلح للمراجعة. وأنفع صيغة بطاقةٌ متكررة، فالتكرار هو ما يجعل الفهرس قابلًا للمراجعة.
الغرض — منع إعادة توجيه مدفوعات المورّدين احتياليًا.
الشرط — أي تغيير في الحساب البنكي للمورّد يحتاج إلى بيانات من مصدر مُتحقَّق وموافقتين بشريتين، ويُنفذ الشرطان في طبقة الأدوات.
النوع — وقائي، ومعه ضابط كاشف مصاحب (FIN-11: تسجيل محاولة الحقن والتنبيه عليها).
الاختبار — سيناريو خصومي يتضمن محاولة إعفاء محقونة، إضافة إلى فحص مباشر للأداة في غياب سجلات الموافقة.
الدليل — سجل التتبع على مستوى الجولة، وسجل استدعاء الأداة، وصفوف جدول الموافقات.
المالك — مسؤول أنظمة الحسابات الدائنة.
العتبة — صفر إعفاءات ناجحة. لا درجات جزئية.
الحالة — مُخفِق في الإصدار v2.3.0؛ مُجتاز في الإصدار v2.3.1.
أثر الإخفاق — منع وكيل المدفوعات من النشر (BLOCK).
هذه البطاقة توضح لماذا تسمية الضابط حسب السلوك أفضل من تسميته حسب رقم بند في إطار، فعبارة «إجراءات الكتابة الخارجية تتطلب موافقة» أجدى عمليًا من «ضابط الإشراف البشري 3.2». ويمكن للضابط نفسه أن يحقق عدة التزامات، ثم نخزن إحالات الأطر كبيانات وصفية. وتكراره لكل إطار على حِدة يضمن أن تتناقض حالاته.
أحيانًا يكون الحل البنيوي الصحيح يحتاج إلى وقت. لا يعني ذلك أن نسكت عن الفجوة. نستخدم ضابطًا تعويضيًا محددًا له تاريخ انتهاء سريان: نطاق أضيق، أو حد أقل، أو إنسان في مسار كان سيصبح آليًا، أو قاعدة مراقبة تلتقط ما لا تستطيع الوقاية منعه.
وما يفرق الضابط التعويضي عن تجاوز صامت هو السجل: مَن وافق؟ عمّا يعوّض؟ على أي نطاق؟ لماذا؟ إلى متى؟ وما الشرط الذي يجب أن يتحقق لإنهاء الاستثناء وإغلاقه؟
الضوابط تخبرك بما يجب أن يصمد. والحوكمة تحدّد ما يحدث عندما لا تصمد.
الضابط الذي لا تستطيع اختباره إعلانُ نيّة، لا تدبيرُ حماية.
دقِّق ضوابطك القائمة في ضوء اختبار الخصائص الثلاث، ثم املأ الفجوة الأوضح. تجد الفِرَق عادةً أن فهرسها وقائي إلى حد بعيد، ولا يكاد يكشف شيئًا.