التحقق من الصور باستخدام Gitlab CI / CD

مرحباً بالجميع ، عشية بدء الدورة "CI / CD on AWS و Azure و Gitlab" قمنا بإعداد ترجمة لمواد مثيرة للاهتمام.




في هذه المقالة ، سنتحدث عن كيفية التحقق من صور الحاوية على منصة Gitlab CI / CD باستخدام Sysdig Secure .

لن يتم نشر صور الحاوية التي لا تتوافق مع سياسات الأمان المحددة في Sysdig Secure في سجل الحاوية وستوقف خط الأنابيب.



مكتشف الضعف مع Gitlab CI / CD


يعد Gitlab CI / CD خادمًا للتكامل والتوصيل المستمر مفتوح المصدر مدمجًا في منصة Gitlab لتطوير البرامج والتعاون.

بعد تكوين Gitlab CI / CD للمستودع الخاص بك ، في كل مرة يلتزم فيها المطورون بالفروع المتعقبة في المستودع ، يتم تشغيل البرامج النصية لخط الأنابيب تلقائيًا.

يمكن استخدام خطوط الأنابيب هذه لأتمتة العديد من العمليات. على سبيل المثال ، بالنسبة لاختبار ضمان الجودة ، قم بإنشاء أدوات توزيع البرامج (مثل صور Docker أو حزم Linux) أو ، لما سنتحدث عنه في هذه المقالة - للتحقق من التكوين والبحث عن نقاط الضعف والتحقق من الامتثال.

التحقق من الصور على خط أنابيب Gitlab CI / CD: تحول الأمان الأيسر


كما هو الحال في أي مكان آخر في مجال تكنولوجيا المعلومات ، كلما وجدت ضعفًا سريعًا في الحاوية ، كان من الأسرع والأسهل إصلاحها دون عواقب.

يعد تضمين عمليات فحص الثغرات الأمنية في تجميع خطوط الأنابيب ممارسة جيدة لعدة أسباب:

  • لن تذهب نقاط الضعف الحالية إلى الإنتاج ؛
  • «secure-by-default», , , .
  • , . , - .

العروض الآمنة Sysdig مجموعة كاملة المواصفات من الأدوات لفحص الحاويات من الصور جنبا إلى جنب مع العديد من المهام تفتيش أمن الحاويات الأخرى مثل التهديدات وقت كشف أداء التنميط على أساس التعلم الآلي وقابلة للتوسيع قوالب الكشف عن التهديد من خارج منطقة الجزاء، وأجبرت Kubernetes بسبس ، والاستجابة لل حوادث و الخبرات على الامتثال . دعونا نلقي نظرة على كيفية عمل خدمة Sysdig Secure Image Validation مع Gitlab.

متطلبات التحقق من الأمان على Gitlab


لإكمال الخطوات التالية ، ستحتاج إلى:


تكوين خط أنابيب Gitlab CI / CD لفحص الصور باستخدام Sysdig Secure


سنرى عمليا كيف يمكن دمج هاتين المنصتين. باستخدام هذا الدليل ، ستتعلم كيفية العمل مع مسح Sysdig Secure Image في دقائق.

تكوين بيانات اعتماد الوصول


سيحتاج خط أنابيب Gitlab CI / CD إلى بيانات اعتماد الوصول للتواصل مع الواجهة الخلفية Sysdig Secure. للقيام بكل شيء بشكل صحيح ، انسخ رمز الدخول من إعدادات واجهة مستخدم Sysdig> ملف تعريف المستخدم .

ثم قم بإعداد متغير عالمي جديد لمشروع Gitlab الخاص بك:

  1. في مشروعك ، انتقل إلى الإعدادات> CI / CD وحدد المتغيرات .
  2. أنشئ متغيرًا جديدًا SYSDIG_SECURE_TOKENوأضف مفتاح Sysdig Secure API في حقل القيمة .
  3. انقر فوق الزر Masked بحيث لا تتم طباعة الرمز المميز لواجهة برمجة التطبيقات في سجلات خطوط الأنابيب.

تعريف خط أنابيب Gitlab


أولاً ، نحتاج إلى ملف Docker يحدد الصورة التي ستجمعها. يمكنك تحميل أي ملف Docker تريده لمشروعك ، أو ببساطة استخدام المثال التالي:

FROM debian:stretch
RUN apt update && apt install python-pip python-numpy openssh-server -y && rm -rf /var/lib/apt
RUN pip install flask
COPY app.py /app.py
EXPOSE 5000 22
ENTRYPOINT ["python", "./app.py"]

ثم تحتاج إلى إنشاء ملف جديد .gitlab-ci.ymlفي جذر المشروع. يصف هذا الملف جميع الخطوات (المراحل) اللازمة لتجميع بيئتنا. سيحدد جميع المراحل اللازمة.

هناك 3 مراحل في خط الأنابيب الخاص بنا:

  • تجميع صورة الحاوية ؛
  • مسح صورة بحثًا عن الثغرات الأمنية أو انتهاكات السياسة ؛
  • نقل الصورة إلى مستودع الوجهة.

variables:
  CI_REGISTRY_IMAGE: "sysdiglabs/dummy-vuln-app"
  SCAN_IMAGE_NAME: "sysdiglabs/secure_inline_scan:latest"
  SYSDIG_SECURE_ENDPOINT: "https://secure.sysdig.com"

docker-build-master:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  before_script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
  script:
    - docker build --pull -t "$CI_REGISTRY_IMAGE" .
    - docker run --rm -v /var/run/docker.sock:/var/run/docker.sock "$SCAN_IMAGE_NAME" /bin/inline_scan analyze -s "$SYSDIG_SECURE_ENDPOINT" -k "$SYSDIG_SECURE_TOKEN" "$CI_REGISTRY_IMAGE"
    - docker push "$CI_REGISTRY_IMAGE"
  only:
    - master

أنشئ صورة حاوية


يحدث تجميع الصورة مع docker build --pull -t "$CI_REGISTRY_NAME". يأخذ تعليمات من ملف Docker الخاص بك ويولد صورة محلية جديدة ، والتي سيتم التحقق منها في الخطوة التالية.

البحث عن الثغرات الأمنية


المرحلة التالية هي فحص الحاويات. سنقوم هنا بفحص الصورة بحثًا عن نقاط الضعف والتحقق من التكوين ، وتخزين النتائج على الواجهة الخلفية لـ Sysdig.

من مزايا المسح المحلي لـ Sysdig أنك لا تفقد السيطرة على صورك ، حيث لا تحتاج إلى نقل الصورة إلى سجل آخر أو عرضها من الخارج من أجل إجراء المسح. يتم ذلك داخل العداء ، ويتم إرسال النتائج فقط إلى Sysdig Secure.

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock "$SCAN_IMAGE_NAME" /bin/inline_scan analyze -s "$SYSDIG_SECURE_ENDPOINT" -k "$SYSDIG_SECURE_TOKEN" "$CI_REGISTRY_IMAGE"

عند هذه النقطة ، سيعرض Sysdig Secure رمز خطأ إذا كانت الصورة تستوفي أيًا من شروط التوقف المحددة في سياستك (على سبيل المثال ، الثغرة الحرجة). سيؤدي إيقاف خط الأنابيب إلى منع نقل الصور الضعيفة إلى سجل الحاوية.





في Sysdig Secure ، يمكننا إلقاء نظرة على معلومات إضافية وفهم سبب عدم اكتمال التحقق الأمني:



كما ترى في لقطة الشاشة ، تترك الحاوية المنفذ 22 مفتوحًا ، والذي يوجد في قائمة المنافذ المحظورة ، ويحتوي أيضًا على بعض نقاط الضعف الخطيرة في مكتبة Python.

نقل الصورة إلى مستودع الوجهة


بعد التحقق بنجاح من وجود ثغرات ، سيتم دفع خط الأنابيب لرسو السفن وسيتم نشر الصورة في سجل الحاوية. إذا لم تحدد أي بيانات اعتماد أو تخزين بعيد ، يستخدم Gitlab القيمة الافتراضية .

استنتاج


باستخدام Sysdig Secure image scanning ، يمكنك التحقق من الصور على خط أنابيب Gitlab CI / CD دون إرسالها من البنية التحتية إلى السجل العام أو الوسيط ، والتحقق من التكوين ومنع تسرب الثغرات إلى الإنتاج.

ابحث عن الثغرات المعروفة وتحقق من التكوين للامتثال لتوصيات الأمان ، بما في ذلك إرشادات ملف Dockerfile ، والقوائم البيضاء والسوداء للحزم أو مكتبات الطرف الثالث المثبتة في الصورة الأساسية ، مثل ملفات JAR / WAR في Java أو مديري حزم اللغة مثل npm لـ Javascript ، نقطة لبيثون والأحجار الكريمة لروبي.

في حالة حدوث فشل ، يمكنك الإبلاغ بسرعة عن هذا إلى مؤلف الحاوية لحل المشكلة بسرعة وإنشاء سياسة أمان للحاوية بشكل افتراضي. لتجربة Sysdig Secure ، يمكنك أن تطلبعرض اليوم!

هذا كل شئ. تعرف على المزيد حول الدورة هنا .

All Articles