كيفية إجراء فحص أمني لصور Docker باستخدام Anchore

Anchore Engine هي أداة مسح مفتوحة المصدر تعمل على تقييم أمان صور Docker الخاصة بك. يمنحك تقرير Anchore نظرة ثاقبة على إصدارات الحزمة القديمة والثغرات الأمنية الكامنة في التبعيات.




ستحتاج إلى إنشاء صورة Docker الخاصة بك وإرسالها إلى سجل قبل أن تتمكن من فحصها. يستخدم Anchore ملفات Docker عندما تكون متاحة لتحديد مشكلات التكوين المحتملة ولكنه يعتمد على فحص الصور المبنية عند تجميع قوائم الثغرات الأمنية.


هندسة معمارية للمرساة

كان إعداد Anchore يتطلب تاريخيًا تثبيتًا مخصصًا لـ Anchore Engine الذي يعمل بشكل مستقل عن بيئة بناء الصورة الخاصة بك. تتيح لك واجهة سطر أوامر منفصلة التفاعل مع المحرك.

يتطلب هذا النموذج استخدام سلسلة من أوامر CLI لتسجيل صورة مع Anchore، وبدء المسح، والوصول إلى النتائج. تتقدم الخطوات مع Anchore من خلال سحب صورتك من السجل الخاص بك، وإنشاء تقرير، وإتاحته للاستخدام.

تقدم Anchore الآن عمليات مسح مضمنة أيضًا. تتيح لك هذه العمليات أمرًا واحدًا لمسح صورة والحصول على النتائج في محطتك. سنركز على هذه الإمكانية في هذه المقالة.


تشغيل البرنامج النصي المضمن

يتم توفير عمليات المسح المضمنة بواسطة نص Bash المستضاف على خادم Anchore. قم بتنزيل النص على جهازك وجعله قابلاً للتنفيذ:

curl -s  -o anchore.sh 

chmod +x anchore.sh

لقطة شاشة لإعداد البرنامج النصي للفحص المضمن في Anchore

الآن يمكنك استخدام البرنامج النصي المضمن لبدء فحص صورة الحاوية:

./anchore.sh -r alpine:latest

قد تستغرق عملية الفحص الأولى بعض الوقت. سيقوم البرنامج النصي بسحب صورة Anchore Engine Docker، وبدء تشغيل مثيل جديد لـ Anchore، وتكوين PostgreSQL ومثيل سجل Docker. ثم سينتظر حتى يبدأ تشغيل Anchore Engine.

لقطة شاشة لمسح صورة الحاوية باستخدام Anchore


بمجرد تشغيل المحرك، سيتم سحب صورة Docker المستهدفة وتحليلها. سترى بعد ذلك تقرير الأمان معروضًا في محطتك. سينتهي البرنامج النصي بتنظيف البيئة وإيقاف حاوية Docker الخاصة بـ Anchore Engine.

نتائج المسح

تتضمن نتائج المسح بيانات وصفية حول الصورة متبوعة بجدول للمشكلات التي تم العثور عليها. يقوم Anchore بتحليل الصورة وفقًا للسياسات التي تم تكوينها. تبحث المجموعة الافتراضية عن نقاط ضعف معروفة في حزم البرامج والمشكلات المحتملة مع ملف Dockerfile المستخدم لبناء الصورة.

لقطة شاشة لنتائج مسح Anchore


تظهر نتيجة المسح الإجمالية في Status الخط الموجود أعلى جدول الثغرات الأمنية. إذا رأيت pass، إن Anchore راضية عن أن صورتك آمنة وجاهزة للاستخدام الإنتاجي. fail وهذا يعني أنه يجب عليك مراجعة الأخطاء ومعالجتها حيثما أمكن.

تتضمن كل ثغرة أمنية تم العثور عليها تصنيفًا لشدتها من LOW ل CRITICALتتضمن المشكلات المتعلقة بمعرف CVE رابطًا لعرض التفاصيل على موقع MITRE الإلكتروني.

إنشاء ملفات التقارير

في حين أن جدول الإخراج الافتراضي يعمل بشكل جيد للاستخدام البشري، يمكن لـ Anchore أيضًا إنتاج ملفات تقارير JSON والتي يمكنك أرشفتها أو إدخالها في أدوات أخرى. أضف -r قم بتشغيل البرنامج النصي للفحص لتمكين هذه الميزة.

لقطة شاشة لملف JSON الخاص بمسح Anchore

سوف يقوم المذيع بكتابة التقارير في anchore-reports داخل دليل العمل الخاص بك. ينتج كل فحص مجموعة من ملفات JSON تتعلق بأقسام مختلفة من التقرير، مثل الثغرات الأمنية وحزم أنظمة التشغيل ومتطلبات السياسة.


يتيح لك فحص الملفات الحصول على معلومات تفصيلية حول كل نتيجة، مما يوفر بيانات أكثر بكثير مما توفره مخرجات المحطة الطرفية. ويمتد هذا إلى درجات CVSS، وإصدارات الحزمة الدقيقة، وإشارة البائع إلى ما إذا كان سيتم إنتاج إصلاح أم لا.

مسح أرشيفات الصور المحفوظة

يمكن لبرنامج Anchore مسح أدلة أرشيفات صور Docker المحفوظة بالإضافة إلى الصور الفعلية الموجودة في السجلات. قم بتصدير مجموعة من صور Docker باستخدام docker save، ضعهم في دليل، ثم استخدم -v حجة لجعل البرنامج النصي Anchore يفحص هذه الأرشيفات:

docker save my-image:latest -o docker-images/my-image 

./anchore -v docker-images

توفير ملف Dockerfile للصورة

يقبل البرنامج النصي المضمن -d حجة تتيح لك توفير المسار إلى ملف Dockerfile محلي. سيتحقق Anchore من الصورة المبنية وملف Dockerfile، مما يتيح تحديد مشكلات وقت البناء التي قد تؤثر على وضع أمان الصورة.

./anchore.sh my-image:latest -d /dockerfiles/my-image


استخدام السياسات المخصصة

يمكن توسيع Anchore من خلال استخدام مجموعات سياسات مخصصة. يتم إنشاء السياسات من مجموعة من “البوابات” و”المحفزات” و”الإجراءات”. تتيح لك هذه قواعد البناء التي تقوم بمراجعة صور الحاويات وفقًا لمتطلبات الأمان الدقيقة لديك.

تنتج بوابة كل سياسة أحد ثلاثة إجراءات: “انتقال”، وهو المرور الذي يسمح باستمرار المسح، و”تحذير”، مما يسمح باستمرار التشغيل ولكن مع تحذير، و”إيقاف”، مما يشير إلى أنه لا ينبغي معالجة الصورة بشكل أكبر.

يتم تجميع السياسات على هيئة “حزم” تربط مجموعات القواعد بالسجلات والصور التي تنطبق عليها. يمكنك إضافة حزمة سياسات إلى عملية المسح الخاصة بك عن طريق تجاوز -b العلم عند تشغيل البرنامج النصي:

./anchore.sh -b policy-bundle.json

سيتضمن ذلك سياساتك المخصصة، مما يمنحك الثقة في أن الصورة تلبي معايير الأمان الخاصة بك.


إليك مجموعة سياسات مبسطة تصدر تحذيرًا إذا لم تقدم ملف Dockerfile إلى Anchore باستخدام-d العلم الموصوف أعلاه. إن توفير ملف Dockerfile المستخدم لبناء الصورة يمنح Anchore أوسع تغطية ممكنة، لذا فمن المنطقي التحذير عند عدم توفير أي تغطية.

{ 

"action": "WARN",

"comment": "No Dockerfile given!",

"gate": "dockerfile",

"params": (),

"trigger": "no_dockerfile_provided"

}

تنطبق هذه السياسة على dockerfile البوابة التي يتحقق منها Anchore ما إذا كان ملف Dockerfile الخاص بك يفي بمعايير أفضل الممارسات. ينفذ Anchore no_dockerfile_provided يتم تشغيله عند بدء المسح في حالة عدم وجود ملف Dockerfile الخاص بالصورة.

خاتمة

يتيح لك Anchore إنشاء تقارير أمان لصور Docker من خلال البحث عن حزم البرامج القديمة والثغرات الأمنية المعروفة ومشكلات تكوين ملفات Docker ومصادر المشكلات المحتملة الأخرى. يمكنك كتابة مجموعات السياسات الخاصة بك لتخصيص ما يتم فحصه ومواءمة Anchore مع معايير الأمان الخاصة بك.


على الرغم من أن Anchore يستخدم بنية خادم العميل، فإن البرنامج النصي “المضمّن” للمشروع يجرد تعقيد التثبيت حتى تتمكن من مسح الصور المحلية بسرعة والحصول على التقرير مباشرة في محطتك الطرفية. إذا كنت ستستخدم Anchore بانتظام، أو تقوم بمسح الصور في خطوط أنابيب CI/CD الخاصة بك، فمن الأفضل أن تقوم بمسح الصور الموجودة في خطوط أنابيب CI/CD الخاصة بك. نشر مخصص مثال Anchore Engine، ثم استخدم CLI لإنتاج التقارير. يتطلب هذا عملية متعددة المراحل لكل فحص، ولكنه يمنحك أيضًا مزيدًا من المرونة عند الوصول إلى أقسام التقارير ومزامنة موجزات بيانات الثغرات الأمنية.

أضف تعليق