ال محرك انكور هي أداة مفتوحة المصدر لفحص صور الحاويات وتحليلها بحثًا عن الثغرات الأمنية ومشكلات السياسة. وهي متاحة كصورة حاوية Docker يمكن تشغيلها داخل منصة التزامن ، أو كتثبيت مستقل.
هذه أداة أمان مفيدة تمكّن المطورين وفرق ضمان الجودة من اختبار الثغرات الموجودة في الصور التي يستخدمونها في إنشاء التطبيقات وتحديدها ومعالجتها.
في هذه المقالة ، سنلقي نظرة على كيفية تثبيت واستخدام الماسح الضوئي لصورة ثغرة Anchore. بشكل عام ، هناك العديد من طرق التنفيذ. ومع ذلك ، سوف أركز على الاثنين التاليين,
- باستخدام AnchoreCLI خيار سطر الأوامر
- القائم على واجهة المستخدم الرسومية Jenkins Anchore Container Image Scanner توصيل في.
سنوضح لك كيفية تثبيت المحرك ، وتكوينه ، وبدء تشغيله ، وتكوين واستخدام أداة سطر الأوامر AnchoreCLI بالإضافة إلى البرنامج المساعد Jenkins. بالنسبة لكل طريقة من الطريقتين ، ستتعلم كيفية إضافة الصور لمسحها وإجراء المسح وعرض التقارير.
في نهاية المقال ، ستتعلم الأشياء الثلاثة التالية.
- تثبيت وتكوين محرك انكور
- التثبيت والتكوين والاستخدام AnchoreCLI
- تكوين واستخدام البرنامج المساعد الماسح حاوية صورة الماسح في جنكينز
Contents
المتطلبات الأساسية
فيما يلي متطلبات هذا البرنامج التعليمي:
- جهاز محلي أو افتراضي مع Ubuntu 18.04 وما يلي ؛
- عامل ميناء
- إنشاء عامل الميناء
- تركيب وتشغيل Jenkins
- مستخدم sudo
الخطوة 1: – إعداد أدلة العمل وتنزيل ملفات التكوين.
قم بإنشاء دليل عمل لملفات Anchore الخاصة بك. داخل هذا الدليل ، ستنشئ دليلين فرعيين ، أحدهما للتهيئة والآخر لقاعدة البيانات.
إنشاء دليل رئيسي لملفات الارتساء
مخدر مرسى
انتقل إلى الدليل الجديد وأنشئ الدلائل الفرعية للتكوين وقاعدة البيانات.
مؤتمر نزع السلاح مرساة
تكوين mkdir
مقدير ديسيبل
قم بتنزيل ملفات التكوين
بمجرد أن يصبح الدليل جاهزًا ، سنقوم بتنزيل ملفي تكوين (docker-compose.yaml و config.yaml) من مشروع Github.
لتنزيل docker-compose.yaml
انتقل إلى دليل مرساة الصفحة الرئيسية واستخدم الأمر
تجعيد الشعر https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/docker-compose.yaml > إرساء-إنشاء. yaml
ثم قم بتنزيل config.yaml إلى الدليل ~ / anchore / config
curl https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/config.yaml -o ~ / anchore / config / config.yaml
ملف config.yaml هو ملف تكوين بالإعدادات الأساسية التي تتطلبها خدمة محرك الارتساء. يحتوي على العديد من المعلمات ، بما في ذلك الإعدادات الافتراضية ومستوى السجل ومنفذ الاستماع واسم المستخدم وكلمة المرور وغيرها من الميزات التي يمكنك تعديلها لتلبية متطلبات محددة.
من الممارسات الأمنية الجيدة تغيير كلمة المرور ، ويمكنك القيام بذلك عن طريق تحرير ملف config.yaml. ومع ذلك ، في هذا البرنامج التعليمي ، سنستخدم الإعدادات الافتراضية.
لمتابعة بيانات الاعتماد الافتراضية ، (اسم المستخدم – المشرف وكلمة المرور – foobar) ، انتقل إلى الخطوة 2.
تغيير بيانات اعتماد Anchore Engine (اختياري)
من دليل الربط استخدم الأمر
nano ~ / anchore / config / config.yaml
حدد اسم المستخدم (المشرف) وكلمة المرور (foobar) وقم بتغيير قيمك المفضلة.
صحافة CTRL + X, ثم ص للحفظ والخروج.
مع وجود أدلة العمل وملفات التكوين في مكانها ، يكون النظام جاهزًا لتثبيت محرك Anchore.
الخطوة 2: – تثبيت وبدء تشغيل محرك التثبيت
ستستخدم Docker لإنشاء وتركيب مشغل Anchore وقاعدة البيانات.
من الدليل الرئيسي للمرور ، قم بتشغيل.
إنشاء عامل الميناء -d
سيؤدي هذا إلى سحب صورة Anchore تلقائيًا ثم إنشاء محرك Anchore وقاعدة البيانات في المنزل و ~ / anchore / database / الدلائل على التوالي. عند الانتهاء ، سيبدأ الأمر محرك الارتساء.
بعد تثبيت محرك الارتساء وبدء تشغيله بنجاح ، يمكنك الآن مسح الصور باستخدام سطر أوامر الارتساء AnchoreCLI. ومع ذلك ، تحتاج أولاً إلى تثبيت الأداة المساعدة لسطر الأوامر AnchoreCLI ، كما هو موضح أدناه.
تثبيت وتكوين AnchoreCLI
في هذه الخطوة ، ستتعلم كيفية تثبيت وتكوين AnchoreCLI أداة سطر الأوامر.
الخطوة 3: – تثبيت AnchoreCLI
في هذا البرنامج التعليمي ، سنقوم أولاً بتثبيت أداة python-pip ، والتي ستستخدم بعد ذلك لتثبيت AnchoreCLI من المصدر.
لتثبيت بايثون بايب. إلى دليل الصفحة الرئيسية للمرور وتشغيله
sudo apt-get update
sudo apt-get تثبيت بيثون-بيب
sudo pip install – أدوات إعداد الترقية
تحميل هذا AnchoreCLI باستخدام python-pip
نقطة تثبيت مرساة
سيقوم هذا الأمر بتنزيل وتثبيت ملفات AnchoreCLI. بعد التثبيت ، نحتاج الآن إلى مصدر ملف .profile لاستخدام الأمر
مصدر ~ /. profile
للتحقق من نجاح التثبيت وإصدار Anchorecli ، استخدم الأمر
مرساة cli – نسخة
للتحقق من حالة نظام anchore-CLI ، استخدم الأمر
anchore-cli –url http: // localhost: 8228 / v1 –u admin –p foobar system status
يرجى ملاحظة أنه يجب عليك تمرير عنوان URL لمحرك Anchore واسم المستخدم وكلمة المرور.
تحديد معلمات محرك الربط
بشكل افتراضي ، سيحاول AnchoreCLI الوصول إلى Anchore Engine بدون مصادقة. ومع ذلك ، لن يعمل هذا ، وتحتاج إلى توفير بيانات اعتماد Anchore Engine مع كل أمر.
يتضمن هذا تمرير معلمات اسم المستخدم وكلمة المرور وعنوان URL مع كل أمر Anchore CLI. وبدلاً من تقديمها في كل مرة ، يكون البديل هو تعريفها كمتغيرات بيئية بالصيغة التالية.
لتمرير URL ، قم بتشغيل
ANCHORE_CLI_URL = http: // localhost: 8228 / v1
يحدد هذا عنوان URL لمحرك Anchore مع المنفذ 8228 ، الذي يستخدمه.
تعيين اسم المستخدم وكلمة المرور باستخدام القيم الافتراضية ؛ وإلا ، استبدلها بالقيم الجديدة التي حددتها الخطوة 1.
ANCHORE_CLI_USER = المشرف
ANCHORE_CLI_PASS = foobar
ما سبق يعين المعلمات فقط للغلاف الحالي. لتعيين shell الحالي والعمليات الأخرى التي تبدأ منه ، نستخدم أمر التصدير
تصدير ANCHORE_CLI_URL
تصدير ANCHORE_CLI_USER
تصدير ANCHORE_CLI_PASS
مع تحديد المعلمات ، اكتمل إعداد AchoreCLI ، وأنت على استعداد لمسح الصور ضوئيًا.
الخطوة 4: – إضافة وتحليل الصور
الآن بعد أن تم تشغيل Anchore Engine وتهيئة CLI ، ستتعلم كيفية إضافة الصور وتحليلها لمشكلات الأمان. في هذا البرنامج التعليمي ، سنقوم بتحليل صورتين. -openjdk: 8-jre-alpine مع نقاط الضعف وديبيان: الأحدث بدون .
تحليل الصور
للمتابعة ، نحتاج أولاً إلى إضافة الصور إلى المحرك. لإضافة الصور
صورة anchore-cli إضافة openjdk: 8-jre-alpine
إضافة ديبيان صورة ثابتة: الأحدث
صورة anchore-cli أضف docker.io/library/debian:latest
أضف المزيد من الصور
صورة anchore-cli add openjdk: 10-jdk
صورة anchore-cli add openjdk: 11-jdk
بعد إضافة صورة إلى Anchore Engine ، يبدأ التحليل على الفور. إذا كان هناك العديد من الصور التي تم تحميلها ، يتم وضعها في قائمة الانتظار وتحليلها واحدة تلو الأخرى. يمكنك التحقق من التقدم والاطلاع على قائمة الصور المحملة مع حالة تحليلها.
لرؤية القائمة ، قم بتشغيل الأمر
قائمة صور مرساة cli
انتاج |
[البريد الإلكتروني محمي]: ~ / anchore $ قائمة صور anchore-cli
صورة كاملة لتحليل ملخص الحالة
docker.io/openjdk:10-jdk sha256: 923d074ef1f4f0dceef68d9bad8be19c918d9ca8180a26b037e00576f24c2cb4analyzed
docker.io/openjdk:11-jdk sha256: 9923c0853475007397ed5c91438c12262476d99372d4cd4d7d44d05e9af5c077analyzed
docker.io/openjdk:8-jre-alpine sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52analyzed
اعتمادًا على عدد الصور والحجم والوقت المنقضي بعد إضافتها ، سيتم تحليلها لأولئك المكتملين ، والتحليل لمن هم قيد التقدم ولن يتم تحليلها للصور المدرجة في قائمة الانتظار.
الخطوة 5: – استرجاع وعرض نتائج التحليل
بمجرد اكتمال التحليل ، يمكنك التحقق من النتائج والاطلاع على نتائج عمليات فحص الثغرات الأمنية وفحوصات السياسة والمشكلات الأخرى التي حددها المحرك.
للتحقق من نتائج مسح الثغرات الأمنية على openjdk: صورة ضعيفة لـ 8-jre-alpine
يركض
anchore-cli image vuln openjdk: 8-jre-alpine all
انتاج |
[البريد الإلكتروني محمي]: ~ / anchore $ anchore-cli image vuln openjdk: 8-jre-alpine all
الثغرات IDPackage الخطورة إصلاح CVE يحيل URL الضعف
CVE-2018-1000654 libtasn1-4.13-r0 High 4.14-r0 http://cve.mitre.org/cgi-bin/cvename.cgi؟name=CVE-2018-1000654
CVE-2019-12900 libbz2-1.0.6-r6 High 1.0.6-r7 http://cve.mitre.org/cgi-bin/cvename.cgi؟name=CVE-2019-12900
CVE-2019-14697 musl-1.1.20-r4 High 1.1.20-r5 http://cve.mitre.org/cgi-bin/cvename.cgi؟name=CVE-2019-14697
CVE-2019-14697 musl-utils-1.1.20-r4 High 1.1.20-r5 http://cve.mitre.org/cgi-bin/cvename.cgi؟name=CVE-2019-14697
CVE-2019-8457 sqlite-libs-3.26.0-r3 High 3.28.0-r0 http://cve.mitre.org/cgi-bin/cvename.cgi؟name=CVE-2019-8457
CVE-2018-14498 libjpeg-turbo-1.5.3-r4 Medium 1.5.3-r5 http://cve.mitre.org/cgi-bin/cvename.cgi؟name=CVE-2018-14498
يعرض التقرير معرف CVE ، الحزمة المعرضة للخطر ، الخطورة ، وما إذا كان هناك إصلاح أم لا. بالنسبة لصورنا openjdk: 8-jre-alpine ، يظهر التحليل أن لديها خمس نقاط ضعف عالية وعددًا كبيرًا من الثغرات المتوسطة والمهملة. (بعضها غير موضح أعلاه).
لعرض نتائج الثغرات للحصول على صورة ثابتة دبيان: الأحدث
قم بتشغيل الأمر
anchore-cli image vuln docker.io/library/debian:latest all
انتاج |
[البريد الإلكتروني محمي]: ~ / anchore $ anchore-cli image vuln debian: أحدث الكل
الثغرة الأمنية IDPackage Severity Fix CVE RefsVulnerability URL
CVE-2005-2541 tar-1.30 + dfsg-6 لا يذكر أي شيء https://security-tracker.debian.org/tracker/CVE-2005-2541
CVE-2019-1010022libc-bin-2.28-10 لا يكاد يذكر https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010022libc6-2.28-10 لا يذكر أي شيء https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010023libc-bin-2.28-10 لا يكاد يذكر https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010023libc6-2.28-10 لا يذكر أي شيء https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010024libc-bin-2.28-10 لا يكاد يذكر https://security-tracker.debian.org/tracker/CVE-2019-1010024
كما يتبين من التقرير ، فإن الصورة debian: الأحدث لديها نقاط ضعف لا تذكر ولا إصلاحات.
لمشاهدة نتائج تقييم السياسة للصورة غير المستقرة openjdk: 8-jre-alpine
يركض
anchore-cli تقييم check openjdk: 8-jre-alpine
الإخراج – تظهر النتائج فشل
[البريد الإلكتروني محمي]: ~ / anchore $ anchore-cli تقييم الشيك openjdk: 8-jre-alpine
ملخص الصورة: sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52
العلامة الكاملة: docker.io/openjdk:8-jre-alpine
الحالة: فشل
آخر تقييم: 2019-09-20T12: 03: 32Z
معرف السياسة: 2c53a13c-1765-11e8-82ef-23527761d060
الصورة openjdk: 8-jre-alpine تنتهك معرف السياسة المحدد (معرف السياسة: 2c53a13c-1765-11e8-82ef-23527761d060) وبالتالي تُرجع حالة الفشل.
الآن بعد أن رأينا كيف يستجيب محرك Anchore بعد اكتشاف انتهاك السياسة ، فقد حان الوقت للتحقق مما إذا كان سلوكه مستقرًا مع صورة دبيان الثابتة: الأحدث.
التحقق من سياسة دبيان: أحدث صورة مستقرة
anchore-cli تقييم check docker.io/library/debian:latest –detail
[البريد الإلكتروني محمي]: ~ / anchore $ anchore-cli تقييم الشيكات docker.io/library/debian:latest –detail
ملخص الصورة: sha256: d3351d5bb795302c8207de4db9e0b6eb23bcbfd9cae5a90b89ca01f49d0f792d
علامة كاملة: docker.io/library/debian:latest
رقم الصورة: c2c03a296d2329a4f3ab72a7bf38b78a8a80108204d326b0139d6af700e152d1
الحالة: تمرير
آخر تقييم: 2019-09-20T12: 00: 06Z
معرف السياسة: 2c53a13c-1765-11e8-82ef-23527761d060
الإجراء النهائي: تحذير
سبب الإجراء النهائي: تقييم السياسة
مشغل البوابة تفاصيل الحالة
لم يتم العثور على توجيه ملف الخزانة “HEALTHCHECK” ، تطابق حالة “not_exists”
تُظهر النتائج حالة مرور وإجراء نهائي للتحذير بسبب عدم تطابق المعلومات مع توجيه ملف Dockerfile. هذا لا يفشل ولكن قد يتطلب التحقق من المشكلة ومعالجتها.
تكوين واستخدام البرنامج المساعد الماسح لصور الحاويات في جينكينز
الخطوة 6: – إضافة وتكوين البرنامج المساعد الماسح لصور الحاويات في مرساة جينكينز
في هذه الخطوة ، سوف ندمج محرك Anchor مع خادم Jenkins. Jenkins هو خادم مفتوح المصدر يعتمد على جافا لأتمتة مجموعة واسعة من المهام المتكررة في دورة تطوير البرمجيات.
ال البرنامج المساعد مرساة متاح في Jenkins ولكن غير مثبت افتراضيًا.
سجّل الدخول إلى Jenkins باستخدام متصفح الويب
http: // your_server_ip_or_domain: 8080
أدخل اسم المستخدم وكلمة المرور.
اذهب إلى قائمة جنكينز
حدد موقع وحدد إدارة جنكينز
اذهب إلى إدارة الإضافات
على ال علامة التبويب المتاحة, قم بالتمرير لأسفل إلى أدوات البناء وحدد الماسح صورة حاوية الماسح
انقر على التثبيت بدون إعادة تشغيل اختيار.
بعد التثبيت الناجح لل البرنامج المساعد الماسح لصورة حاوية, الخطوة التالية هي تكوين أوراق الاعتماد.
انتقل إلى جنكينز القائمة وحدد إدارة جنكينز التبويب.
افتح تكوين النظام.
حدد موقع تكوين مرساة.
تحديد وضع المحرك
دخول محرك انكور التفاصيل (عنوان URL للمحرك واسم المستخدم وكلمة المرور والمنفذ 8228 – المنفذ الافتراضي للمحرك).
URL – http: // your_server_IP: 8228 / v1
أدخل اسم المستخدم = admin
أدخل كلمة المرور = foobar أو كلمة المرور الجديدة إذا قمت بتغييرها الخطوه 3 (في الاعلى)
انقر حفظ
تكوين البرنامج المساعد مرساة
الخطوة 8: – إضافة صور ومسح ضوئي
انقر عنصر جديد في لوحة تحكم Jenkins في القائمة العلوية اليسرى
سيؤدي هذا إلى فتح شاشة بها العديد من الخيارات.
اكتب الاسم المطلوب لمشروع الاختبار الخاص بك في حقل أدخل اسم العنصر.
في هذا المشروع ، سنستخدم بناء خط الأنابيب.
حدد خط انابيب وانقر حسنا.
أنت الآن جاهز لمسح الصور. في حالتنا ، سنستخدم الصور الموجودة بالفعل في سجل عامل الميناء الذي يمكن الوصول إليه بواسطة محرك انكور.
للقيام بذلك ، ستضيف البرنامج النصي لخط الأنابيب الذي سيحدد الصورة لمسحها.
الخطوة 9: – إضافة البرنامج النصي لخط الأنابيب
قم بالتمرير لأسفل إلى قسم خط الأنابيب وأضف البرنامج النصي لتحديد الصورة المراد مسحها ضوئيًا. سنبدأ مع openjdk: 8-jre-alpine الذي يحتوي على بعض الثغرات الأمنية.
العقدة {
def imageLine = ‘openjdk: 8-jre-alpine’`
ملف writeFile: “anchore_images” ، نص: imageLine`
اسم المرساة: “anchore_images”
}}
انقر حفظ
الخطوة 10: – قم بتشغيل الإنشاء ومراجعة تقارير المسح
من قائمة جنكينز
انقر ابني الآن
سيؤدي ذلك إلى بدء عملية البناء ، والتي تستغرق بضع دقائق حسب حجم الصورة. بعد الانتهاء ، سيظهر رقم وزر ملون أسفل تاريخ البناء. سيكون هذا باللون الأحمر لـ Fail أو Blue for Pass. سيؤدي النقر فوق الزر إلى عرض المزيد من النتائج.
الخطوة 11: – مراجعة النتائج
انقر فوق بناء # لعرض المزيد من التفاصيل
هذا يفتح إخراج وحدة التحكم نافذة تشير إلى فشل – تقرير الارتساء (FAIL)
تشير التقارير التفصيلية إلى ما إذا كان التحليل فاشلًا أو تمريرة ويوفر العديد من التقارير التي توضح نقاط الضعف والتحذيرات وغيرها بناءً على التكوين. بشكل افتراضي ، يتم تكوين المكون الإضافي لفشل البناء (قف) كلما كانت هناك نقاط ضعف. فيما يلي لقطات شاشة لتقارير السياسة والأمان.
ملخص تقييم سياسة المرسى
فيما يلي لقطة شاشة لنتائج الأمان للصورة الضعيفة.
قائمة نقاط الضعف والتعرض الشائعة (CVE)
إذا قمنا الآن بمسح صورة مستقرة ، ديبيان: الأحدث ، مع عدم وجود ثغرات ، نحصل على النتائج أدناه.
ملخص تقييم سياسة مرسى (تمرير)
تصريح قائمة نقاط الضعف والتعرض الشائعة (CVE)
استنتاج
الماسح الضوئي لصور الحاوية Anchore هو أداة قوية لتحليل الصور تحدد مجموعة واسعة من نقاط الضعف وقضايا السياسة في صور Docker. لديها العديد من خيارات التخصيص ويمكن تكوينها حول كيفية الاستجابة عند اكتشاف المشكلات أثناء التحليل. أحدها هو كسر البناء عندما يواجه المحرك ثغرة شديدة.
إذا كنت تتطلع إلى بناء حياتك المهنية في DevSecOps ، فراجع هذا بالطبع Udemy.
العلامات:
المصدر المفتوح