CI/CD / السلامة والتنسيق والتحسين / الدرس 13
التحقق من سلسلة التوريد عند حدود المستهلك
تحقق من منتج الناتج وانطباق سياسة المدخلات قبل التبني.
في هذه الصفحة
أهداف الدرس
- تمييز التجزئة والتوقيع والمنشأ وجرد الاعتمادات.
- نمذجة شروط السياسة لادعاءات بناء موثقة.
تجيب السجلات عن أسئلة مختلفة
تحدد التجزئة البايتات ويوثق التوقيع إفادة ضمن نظام هوية وثقة ويصف المنشأ علاقات البناء، بينما يصف جرد الاعتمادات أو SBOM المكونات بحدود اكتماله. لا يثبت أي منها وحده خلو البرنامج من الضرر. يحتاج مستهلك Parcel معرفة أن المرشح جاء من مصدر وبانٍ مقبولين واجتاز الفحوص وطابق الحزمة المنزلة. لا يعوض جرد جميل علاقة المصدر بالناتج ويبقى البناء الخبيث الموقع خبيثاً.
وثّق الهوية قبل تقييم الحقول
يمكن لوثيقة JSON ادعاء أي بانٍ أو مراجعة. يجب توثيق الإفادة بنظام الإثبات المختار ومطابقة تجزئة موضوعها بالناتج ثم تقييم المصدر والباني والمعلمات المتوقعة. ينبغي للسياسة تسمية الهويات والشروط المقبولة بدلاً من قبول أي توقيع صالح. التحقق من التوقيع والسياسة خطوتان منفصلتان. السجل التالي ليس إفادة فعلية؛ يوضح توقعات دون مادة تشفيرية مختلقة أو ادعاء مطابقة SLSA.
{"expected_builder":"parcel-approved-builder","expected_source":"parcel-reviewed-source","expected_candidate":"candidate-r8","required_checks":["unit","contract"]}
هذه أسماء افتراضية لمدخلات سياسة محلية، لا هويات توقيع أو مواضيع شهادات أو تجزئات أو مخطط منشأ كامل. يجب توثيق الدليل قبل الوثوق بحقولـه.
قد تغير مدخلات غير متوقعة البناء
يمكن لبانٍ مقبول إنتاج ناتج غير مقصود بمعلمات غير آمنة أو وصفة غير مراجعة. افحص موضع المصدر والمراجعة ونقطة الدخول وحل الاعتماد والمدخلات الخارجية المؤثرة. لا ينبغي لإصدار مميز قبول رابط نص عشوائي لمجرد عمل المهمة على منصة موثوقة. قلل مرونة المعلمات وفضّل الإعداد المراجع في المصدر. سجّل الاستثناءات حتى يميز المستهلك البناء المعتاد من تشغيل معدل يدوياً باسم مشابه.
اجعل سياسة المستهلك قابلة للاختبار
يفترض النموذج الكامل نجاح التوثيق مسبقاً ويقيّم سياسة صغيرة على ادعاءات افتراضية. يرفض بانياً غير متوقع رغم تطابق اسم المرشح. ليس تحقق توقيع ولا محلل منشأ ولا منتج أمن. يفصل القيمة الأساسية: يحدد التوثيق صاحب الادعاء ويقرر المستهلك قبوله. اختبر المصدر والباني الخطأ والدليل المفقود والمعلمات غير المتوقعة.
expected = {"builder": "approved", "source": "reviewed"}
def accepted(claim):
return all(claim.get(k) == v for k, v in expected.items())
print(accepted({"builder": "approved", "source": "reviewed"}))
print(accepted({"builder": "other", "source": "reviewed"}))
True
False
لا يستطيع النموذج توثيق وثيقة ولا يجوز تقديمه كمدقق إثبات. يوضح توقعات مطابقة بعد التوثيق فقط.
طوّر الثقة بالأدلة
قد تغير ترقية الباني وهوية التوقيع ونقل المصدر المنشأ بصورة مشروعة. عالجها كتغييرات سياسة مراجعة بدلاً من إضعاف التحقق كلما حُجب إصدار. احفظ دليلاً يفسر قبول مرشح قديم وفق سياسة سابقة. قد يفرض ضعف اعتماد لاحق إعادة تقييم رغم بقاء المنشأ صحيحاً. تدعم السلامة التتبع والقرارات المضبوطة ولا تجمد حالة أمن الاعتمادات أو تلغي التحديث والاستجابة.
الأخطاء الشائعة وإصلاحها
يُقبل أي توقيع صالح للإنتاج.
- لماذا يحدث؟
- اختلطت الصحة التشفيرية بسياسة هوية وبناء مقبولة.
- كيف تصلحه؟
- اشترط الهوية والموضوع والباني والمدخلات المقصودة.
- كيف تتجنب تكراره؟
- اختبر رفض ادعاءات صحيحة لكنها غير مخولة.
يسمي الادعاء المصدر الصحيح ويخص بايتات أخرى.
- لماذا يحدث؟
- لم يُربط الموضوع بالناتج المنزل.
- كيف تصلحه؟
- طابق تجزئة الناتج ببيانات الموضوع الموثقة.
- كيف تتجنب تكراره؟
- اجعل الربط إلزامياً قبل بقية الادعاءات.
يُعطّل المدقق عند حجب إصدار.
- لماذا يحدث؟
- لا توجد عملية استثناء مضبوطة لتطور السياسة.
- كيف تصلحه؟
- حقق الهوية أو المدخل المتغير وراجع تحديثاً محدوداً.
- كيف تتجنب تكراره؟
- أصدر نسخ السياسة واحفظ دليل القبول.
اختبر فهمك
1. يسرد SBOM المكتبات المعلنة. هل يثبت المصدر المراجع؟
اعرض الحل المشروح
لا. الجرد والمنشأ ادعاءان منفصلان. تحقق من منشأ موثق مرتبط بالحزمة ثم قيّم المصدر والباني. افهم نطاق الجرد أيضاً؛ قد يكون ناقصاً أو يخص ناتجاً آخر.
2. شغّل بانٍ موثوق نصاً غير مراجع بمعلمة. هل يكفي توقيعه؟
اعرض الحل المشروح
لا. قد يشهد بصدق على تشغيل غير مقبول. يجب أن تفحص سياسة المستهلك الوصفة والمعلمات المؤثرة. قيّد المدخلات المرنة بدلاً من الاعتماد على اسم المنصة.
أهم ما تعلمته
- وثّق الادعاء واربط موضوعه ثم قيّم التوقعات.
- تدعم أدلة السلامة والجرد القرار دون إثبات خلو الضرر.