توقيع الاعتماديات والآثار البرمجية
التحقق من المصدر باستخدام SLSA وSigstore.
توقيع الاعتماديات والآثار البرمجية درس مجاني في Cyber Security Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cyber Security Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.
أهمية إثبات المنشأ
توضح لك SBOM ما يوجد داخل العنصر البرمجي، بينما يوضح إثبات المنشأ من أين أتى وكيف بُني. يربط التوقيع العنصر البرمجي بمنشأ يمكن التحقق منه، بحيث يستطيع المستهلكون رفض أي عنصر لم يُنتج عبر خط البناء الموثوق لديكم.
من دون إثبات المنشأ، لا يمكن تمييز مهاجم يستبدل ملف tarball في السجل لديكم عن إصدار شرعي.
الملخصات، لا الوسوم
أساس سلامة المحتوى هو العنونة بالمحتوى. تحدد التجزئة التشفيرية (الملخص) لعنصر برمجي تلك البايتات بالضبط بشكل فريد. أما الوسوم القابلة للتغيير مثل latest فيمكن إعادة توجيهها، بينما لا يمكن تغيير الملخص.
# pull by immutable digest, not a tag
docker pull my-app@sha256:1d52838af602b4b5a831beb13a0e4d073280665ea7be7f69ce2382f29c5a613f
# compute a file digest
sha256sum release-1.4.0.tar.gzأساسيات التوقيعات الرقمية
يستخدم التوقيع الرقمي مفتاحًا خاصًا لتوقيع تجزئة العنصر البرمجي؛ ويمكن لأي شخص يملك المفتاح العام المطابق التحقق منه. ويضمن ذلك أمرين:
- السلامة — لم يُعدَّل العنصر البرمجي بعد توقيعه
- الأصالة — وقّعه حامل المفتاح الخاص
الصعوبة الحقيقية ليست في الرياضيات، بل في إدارة المفاتيح وتوزيع الثقة: كيف يعرف المتحقق أي مفتاح عام ينبغي الوثوق به؟
التوقيع دون مفاتيح باستخدام Sigstore
يفرض التوقيع التقليدي على الفرق حماية مفاتيح خاصة طويلة الأجل، وهي مفاتيح قد تتسرب. يوفر Sigstore التوقيع دون مفاتيح: إذ يصدر شهادة قصيرة الأجل مرتبطة بهوية OIDC، مثل حمل عمل في CI أو بريد إلكتروني لمطور، ثم يوقّع ويسجل الحدث في سجل شفافية عام يسمى Rekor.
لا يوجد مفتاح طويل الأجل يمكن سرقته، ويمكن تدقيق كل توقيع علنًا.
التوقيع باستخدام Cosign
Cosign هي أداة Sigstore لتوقيع صور الحاويات والعناصر البرمجية الأخرى. وفي وضع التوقيع دون مفاتيح، تستخدم رمز OIDC المميز الخاص بخط البناء، ولذلك لا يوجد ملف مفتاح على القرص.
# keyless sign in CI (uses ambient OIDC identity)
COSIGN_EXPERIMENTAL=1 cosign sign my-registry/my-app@sha256:1d5283...
# verify, asserting the expected signer identity
cosign verify my-registry/my-app@sha256:1d5283... \
--certificate-identity-regexp '.*@my-org\.com' \
--certificate-oidc-issuer https://accounts.google.comسجل الشفافية
يسجل Sigstore كل حدث توقيع في Rekor، وهو سجل عام يكشف العبث ولا يسمح إلا بالإضافة. وهذه آلية كشف قوية:
- يمكنكم إثبات متى تم توقيع شيء ما
- لا يستطيع مهاجم يسرق هوية ما التوقيع سرًا — فالحدث مسجل علنًا
- تصبح التوقيعات الشاذة، مثل الهوية غير المتوقعة أو التوقيع خارج ساعات العمل، قابلة للاكتشاف
تحول الشفافية الاختراق الصامت إلى دليل يمكن رصده.
SLSA: مستويات سلامة البناء
إن SLSA (مستويات سلسلة توريد العناصر البرمجية) إطار يقيّم مدى موثوقية عملية البناء لديكم. وتتطلب المستويات الأعلى ضمانات أقوى ضد العبث.
- L1 — يتوفر إثبات منشأ موثق
- L2 — إثبات منشأ موقّع من خدمة بناء مستضافة
- L3 — عمليات بناء محصنة ومعزولة؛ ولا يمكن تزوير إثبات المنشأ حتى من شخص داخل خط البناء
إن SLSA خارطة طريق: اختاروا مستوى مستهدفًا وسدوا الفجوات للوصول إليه.
إفادات منشأ البناء
إفادة المنشأ هي بيان موقّع يصف كيفية بناء عنصر برمجي: commit المصدر، وهوية أداة البناء، ومعلمات البناء، والمدخلات. ويوحّد تنسيق in-toto هذه المعلومات وفق معيار موحد.
# generate and attach SLSA provenance for an image
cosign attest --type slsaprovenance \
--predicate provenance.json \
my-registry/my-app@sha256:1d5283...
# verify provenance matches expected source repo
cosign verify-attestation --type slsaprovenance my-registry/my-app@sha256:1d5283...فرض التوقيعات عند القبول
لا يكون التوقيع مفيدًا إلا إذا رفضت جهة ما العناصر البرمجية غير الموقعة. في Kubernetes، يمكن لوحدة تحكم القبول حظر أي صورة تفتقر إلى توقيع صالح وإثبات منشأ صادر عن هويتكم الموثوقة.
- تتحقق وحدات تحكم السياسات من توقيعات Cosign قبل بدء الحاوية
- ترفض الصور الموقعة بهويات غير متوقعة
- تتطلب إثبات منشأ يشير إلى مستودع المصدر المعتمد لديكم
وبذلك تكتمل الحلقة: لا تعمل العناصر البرمجية غير الموثوقة إطلاقًا.
توقيع التبعيات من جهة المصدر
تكون قيمة إثبات المنشأ أكبر عندما يمتد إلى ما تستهلكونه، لا إلى ما تشحنونه فحسب. وتضيف الأنظمة البيئية توقيعًا وإثبات منشأ أصليين:
- يربط إثبات منشأ npm الحزمة المنشورة بـ commit المصدر وتشغيل CI الخاص بها
- تأتي صور الحاويات الأساسية على نحو متزايد مرفقة بتوقيعات Cosign
- تختبر سجلات اللغات التحقق المدعوم من Sigstore
فضّلوا التبعيات التي تنشر إثبات منشأ قابلًا للتحقق، وتحققوا منه أثناء التثبيت حيثما كان ذلك مدعومًا.
تقديم التحقق
تتسم استراتيجية التوقيع العملية بطبقات متعددة، ويجري التحقق فيها من البداية إلى النهاية:
- ثبّتوا المدخلات باستخدام الملخص
- استخدموا التوقيع دون مفاتيح للعناصر البرمجية، وأرفقوا بها SBOM وإفادات إثبات المنشأ
- سجلوا كل شيء في سجل شفافية
- افرضوا التحقق عند النشر باستخدام سياسة قبول
لا تتجاوز قوة السلسلة قوة أضعف حلقة لم يُتحقق منها، لذا تحققوا عند كل نقطة استهلاك.
تحقق سريع: التوقيع دون مفاتيح
فكّروا في سبب تحسين التوقيع دون مفاتيح لأمن سلسلة التوريد.
مراجعة: توقيع التبعيات والعناصر البرمجية
تعلمتم كيفية إثبات المنشأ وفرض التحقق منه.
- ثبّتوا باستخدام الملخص، لا الوسوم القابلة للتغيير
- توفر التوقيعات الرقمية السلامة والأصالة؛ أما التحدي فيكمن في إدارة المفاتيح
- يتيح Sigstore + cosign التوقيع دون مفاتيح مع سجل شفافية عام هو Rekor
- يقيّم SLSA سلامة البناء؛ وتسجل إفادات إثبات المنشأ كيفية بناء العناصر البرمجية
- ترفض سياسات القبول أي عنصر غير موقّع أو غير موثوق عند النشر
التالي: تحصين خط CI/CD الذي ينتج هذه العناصر البرمجية.
الأسئلة الشائعة
هل درس «توقيع الاعتماديات والآثار البرمجية» مجاني؟
نعم — نص درس «توقيع الاعتماديات والآثار البرمجية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cyber Security Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.
ماذا ستتعلم في «توقيع الاعتماديات والآثار البرمجية»؟
التحقق من المصدر باستخدام SLSA وSigstore. تتمرن على Cyber Security Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cyber Security Academy؟
لا تُشترط خبرة سابقة. Cyber Security Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «توقيع الاعتماديات والآثار البرمجية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cyber Security Academy هذا؟
نعم. كل درس في Cyber Security Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تهديدات سلسلة التوريد
- قائمة مكونات البرمجيات (SBOM)
- توقيع الاعتماديات والآثار البرمجية
- تأمين مسارات CI/CD