الخلاصة
- تربط شهادة GitHub الصحيحة تشفيرياً بصمة العنصر البرمجي بمنشأ بناء مسجل، لكنها لا تصادق على أن العنصر آمن.
- يظل القرار الحاسم لدى المستهلك: يجب رفض النشر إذا خالف المستودع أو الهوية الثابتة لسير العمل أو شرط الالتزام أو الإصدار أو البيئة أو حدود الثقة في المشغّل السياسة المعتمدة.
- تستخدم المستودعات الخاصة نسخة Sigstore التابعة لـGitHub من دون سجل الشفافية العام المستخدم للمستودعات العامة؛ وهذا اختلاف في قابلية الرصد، لا دليل مستقل على الضعف.
قد ينجح التحقق ويظل الرفض واجباً
تصل صورة حاوية إلى بوابة النشر. التوقيع صحيح، والبصمة مطابقة، وبيان المنشأ سليم. مع ذلك ترفض البوابة الصورة. ربما سُجل مستودع غير متوقع، أو استُدعي سير عمل قابل لإعادة الاستخدام عبر وسم يمكن نقله، أو جاء البناء من التزام خارج خط الإصدار المعتمد، أو من بيئة غير مصرح بها، أو من مشغّل لا يقع ضمن حدود الثقة التي حددها المستهلك.
لا يعني هذا الرفض أن الشهادة أخفقت؛ بل يعني أن الأدلة أدت وظيفتها داخل قرار قبول فعلي.
تصف GitHub شهادات العناصر البرمجية بأنها ادعاءات موقعة تشفيرياً تثبت منشأ البناء. ويمكن أن تحدد سير العمل المرتبط بالعنصر، والمستودع، والمؤسسة، والبيئة، وبصمة SHA للالتزام، والحدث الذي أطلق العملية. وقد تحتوي أيضاً على معلومات أخرى مستمدة من هوية OpenID Connect المستخدمة لإثبات المنشأ.
تُنشأ الشهادة بعد اكتمال البناء، مع منح صلاحيات رمز الهوية وكتابة الشهادات. بالنسبة إلى الملف الثنائي، يمكن ربط البيان بالملف الناتج نفسه. أما صورة الحاوية، فيربط اسمها الكامل وبصمتها البيان بمحتوى محدد بدلاً من وسم قابل للتغيير. وهكذا يستطيع المستهلك التحقق من أن المحتوى المعروض هو المحتوى الذي نتج عن المسار المعلن.
لكن نطاق هذه المعرفة محدود. لا تفحص الشهادة ما إذا كانت الشفرة المصدرية حميدة أو خالية من العيوب، ولا ما إذا كانت التبعيات موثوقة أو تعليمات البناء سليمة. كما لا تثبت بقاء جهاز التنفيذ بلا اختراق. إنها تجعل المنشأ قابلاً للتحقق، لكنها لا تحول كل مخاطر سلسلة توريد البرمجيات إلى حكم واحد بالسلامة.
توضح GitHub هذا الحد صراحة: إنشاء الشهادة وحده لا يحقق منفعة أمنية؛ لا بد من التحقق منها. كما أن الشهادة ليست ضماناً لأمن العنصر البرمجي. على المستهلك تحديد المعايير، وفحص محتوى البيان، واتخاذ قرار مبني على المخاطر. وإذا اكتفى نظام التحقق بصحة التوقيع، فإنه لا يجيب عن السؤال الأهم: هل كان المسار الموقع مسموحاً أصلاً؟
السياسة هي التي تمنح الدليل أثره
يشكل المستودع والمؤسسة المتوقعان بداية مناسبة، لكنهما لا يكفيان. قد تضم المؤسسة نفسها سير عمل مركزياً خضع للمراجعة ومخصصاً للإصدارات، إلى جانب عمليات آلية تختلف جذرياً في ضوابطها. امتلاك كليهما صلاحية إصدار شهادة صحيحة لا يمنحهما الأهلية نفسها للنشر.
لهذا تصبح الهوية الثابتة لسير العمل شرطاً مهماً. تعتبر GitHub بصمة SHA الكاملة للالتزام المرجع الأكثر أماناً عند استدعاء سير عمل خارجي قابل لإعادة الاستخدام، لأنها غير قابلة للتغيير. أما الفروع فتتقدم، ويمكن نقل الوسوم. قد تسجل الشهادة المرجع بدقة، بينما لم يعد المحتوى الذي يشير إليه مطابقاً للنسخة التي خضعت للمراجعة. الاعتماد على اسم سير العمل وحده يترك جزءاً من تعريف البناء خارج ضابط القبول.
يضيف الالتزام وشرط الإصدار والحدث والبيئة حدوداً أخرى. يمكن لسياسة الإنتاج أن تشترط التزاماً معتمداً للإصدار بدلاً من قبول أي التزام في المستودع الصحيح. ويمكنها قصر القبول على بيئة إصدار خاضعة للحوكمة. لا يستنتج التوقيع هذه الشروط تلقائياً؛ بل يقررها المستهلك.
أما الثقة في المشغّل فهي محور مستقل. تحذر GitHub من أن المشغّلات ذاتية الاستضافة لا تتمتع بضمان التشغيل على أجهزة مؤقتة ونظيفة، وأن شفرة غير موثوقة في سير العمل قد تخترقها بصورة مستمرة. لذلك لا تثبت الشهادة الصحيحة أن مشغّلاً معيناً كان سليماً. يتعين على السياسة أن تحدد منفصلةً مجموعات المشغّلات وظروف العزل وبيئات التنفيذ المقبولة.
تحويل السجل إلى بوابة إنفاذ
توثق GitHub نموذجاً للإنفاذ في Kubernetes يعتمد على Sigstore Policy Controller وجذر ثقة GitHub وسياسة صور على مستوى العنقود. وعند تفعيل السياسة في نطاقات الأسماء المختارة، يستطيع المتحكم التحقق من الشهادات قبل قبول الصور ورفض ما يخرج عن سياسة الثقة.
تكشف تفاصيل الإعداد موضع الضابط الحقيقي. تثبيت المتحكم وحده لا يفرض شيئاً؛ يجب إضافة السياسة وتفعيلها في نطاق الاسم المعني. كما تحدد أنماط مطابقة الصور والاستثناءات مساحة التطبيق. ومن ثم، فإن قول مؤسسة ما إنها «تستخدم الشهادات» لا يثبت أن جميع عمليات نشرها تخضع للسياسة أو أن كل مستهلك يطبق الشروط ذاتها.
تختلف قابلية الرصد أيضاً بين المستودعات العامة والخاصة. تستخدم الشهادات العامة نسخة Sigstore العامة وتُسجل في سجل شفافية ثابت ومتاح للقراءة العامة. وتستخدم المستودعات الخاصة نسخة GitHub من Sigstore، المبنية على قاعدة الشفرة نفسها، لكنها لا تملك سجلاً عاماً ولا تتحد إلا مع GitHub Actions. يقلل ذلك نطاق الفحص العام المستقل، لكنه لا يكفي للحكم بأن الآلية الخاصة ضعيفة.
لا تنشر المصادر المتاحة معدلات التبني العامة، أو تواتر الرفض، أو معدلات القبول الخاطئ. ولا تثبت أن جميع المستهلكين يفرضون السياسة أو أن مشغّلاً بعينه لم يتعرض للاختراق. يجب إبقاء هذه المسائل ضمن حدود المجهول.
والخلاصة العملية هي معاملة التحقق من الشهادة كضابط قبول. قبل النشر، يجب اشتراط المستودع المتوقع، وهوية ثابتة لسير العمل، والالتزام أو شرط الإصدار المعتمد، والبيئة المقصودة، وحدود ثقة مقبولة للمشغّل. وعند اختلاف أي شرط، يُرفض العنصر وتُحفظ إفادة رفض تحدد البند المخالف.
المصادر
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
