مشاركة عبر


تكوين التصحيح المستمر في Azure Container Registry

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

المتطلبات الأساسية

  • يمكنك استخدام Azure Cloud Shell أو تثبيت محلي ل Azure CLI مع حد أدنى من الإصدار 2.15.0 أو أحدث.
  • لديك مجموعة موارد موجودة مع Azure Container Registry (ACR).
  • لديك سجل حاويات Azure مع تمكين مهام ACR (مهام ACR غير مدعومة في المستوى المجاني من ACR).

تثبيت سير عمل التصحيح المستمر

قم بتشغيل الأمر التالي لتثبيت ملحق CLI:

    az extension add -n acrcssc

تمكين سير عمل التصحيح المستمر

  1. سجل الدخول إلى Azure CLI باستخدام az login.
az login
  1. تسجيل الدخول إلى ACR.
az acr login -n <myRegistry>
  1. قم بتشغيل الأمر التالي لإنشاء ملف باسم continuouspatching.json، والذي يحتوي على JSON للتصحيح المستمر. اسم ملف JSON مرن.
cat <<EOF > continuouspatching.json
{
    "version": "v1",
    "tag-convention" : "<incremental|floating>",
    "repositories": [{
        "repository": "<Repository Name>",
        "tags": ["<comma-separated-tags>"],   
        "enabled": <true|false>
    }] 
}
EOF

يخزن المخطط مستودعات وعلامات معينة بتنسيق صفيف. يتم تعريف كل متغير هنا:

  • version يسمح لفريق ACR بتعقب إصدار المخطط الذي تعمل عليه. لا تغير هذا المتغير ما لم يتم إرشادك إلى.

  • tag-convention هو حقل اختياري. القيم المسموح بها هي "تزايدي" أو "عائم" - راجع المفاهيم الرئيسية للتصحيح المستمر لمزيد من المعلومات.

  • repositories هو صفيف يتكون من مستودع مفصل ومعلومات العلامة

    • repository يشير إلى اسم المستودع
    • tags هو صفيف من العلامات مفصولة بفواصل. يمكن استخدام حرف * البدل للدلالة على جميع العلامات داخل هذا المستودع.
    • enabled هي قيمة منطقية صحيحة أو خاطئة تحدد ما إذا كان المستودع المحدد ممكنا أم لا.

فيما يلي تفاصيل تكوين مثال للعميل الذي يريد تصحيح جميع العلامات (استخدام الرمز *) داخل المستودع python، وتصحيح العلامات و jammy-20240111 على وجه التحديد jammy-20240125 في المستودع ubuntu.

مثال JSON:

{
"version": "v1",
"tag-convention" : "incremental",
"repositories": [{
        "repository": "python",
        "tags": ["*"],
        "enabled": true
    },
    {
        "repository": "ubuntu",
        "tags": ["jammy-20240111", "jammy-20240125"],
        "enabled": true, 
    }]
}
  1. بعد إنشاء ملف التكوين الخاص بك، يوصى بتنفيذ تشغيل جاف للتحقق من تحديد البيانات الاصطناعية المقصودة بواسطة معايير JSON. يتطلب التشغيل الجاف معلمة تسمى schedule، والتي تحدد عدد مرات تشغيل دورة التصحيح المستمرة. يتم قياس علامة الجدول بالأيام، مع الحد الأدنى لقيمة يوم واحد، وقيمة قصوى 30 يوما. على سبيل المثال، إذا كنت تريد تصحيح صورة كل يوم، يمكنك تحديد الجدول الزمني ك 1d، أو يوم واحد. إذا كنت تريد تصحيحا أسبوعيا (مرة واحدة في الأسبوع)، يمكنك ملء الجدول الزمني ك 7d، أو 7 أيام.

مخطط الأوامر:

az acr supply-chain workflow create -r <registryname> -g <resourcegroupname> -t continuouspatchv1 --config <JSONfilepath> --schedule <number of days> --dry-run 

مثال على الأمر:

az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --dry-run   

إخراج --dry-run العلامة كافة البيانات الاصطناعية المحددة بواسطة تكوين ملف JSON. يمكن للعملاء التحقق من تحديد البيانات الاصطناعية الصحيحة. مع نموذج تكوين ubuntu، يجب عرض النتائج التالية كمخرجات.

Ubuntu: jammy-20240111
Ubuntu: jammy-20240125

أمر التعليمات للاطلاع على جميع العلامات المطلوبة/الاختيارية:

az acr supply-chain workflow create --help
  1. بمجرد رضاك عن نتائج التشغيل الجاف، قم بتشغيل create الأمر مرة أخرى دون العلامة --dry-run لإنشاء سير عمل التصحيح المستمر رسميا.

إشعار

--schedule تتبع المعلمة مضاعف يوم ثابت بدءا من اليوم 1 من الشهر. يعني ذلك:

  • إذا قمت بتحديد --schedule 7d الأمر وتشغيله في الثالث، فسيكون التشغيل المجدول التالي في 7th - لأن 7 هو المضاعف الأول من 7 (أيام) بعد الثالث، ويحسب من اليوم الأول من الشهر.
  • إذا كان --schedule هو 3d واليوم هو 7 ، ثم القادم المقرر تشغيل الأراضي على 9 -- منذ 9 هو المضاعف التالي من 3 الذي يلي 7.
  • إذا أضفت العلامة --run-immediately، يمكنك تشغيل تصحيح فوري. سيظل التشغيل المجدول اللاحق محاذاته إلى أقرب مضاعف يوم من أول الشهر، استنادا إلى القيمة الخاصة بك --schedule .
  • يتم إعادة تعيين عداد الجدول كل شهر. بغض النظر عن الجدول الزمني المعين، سيتم تشغيل سير العمل في الأول من كل شهر، ثم اتبع قيمة الجدول الزمني المحددة لبقية الشهر. إذا كان التصحيح الخاص بي يعمل في 28 يناير، وجدولي الزمني هو 7d، سيتم تشغيل التصحيح التالي في فبراير الأول، ثم الثامن، ويستمر بعد 7 أيام.

مخطط الأوامر:

az acr supply-chain workflow create -r <registryname> -g <resourcegroupname> -t continuouspatchv1 --config <JSONfilename> --schedule <number of days> --run-immediately

مثال على الأمر:

az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --run-immediately

بناء على أمر ناجح (سواء قمت بتضمين --run-immediatelyأم لا)، يجب أن ترى:

  • رسالة نجاح تؤكد وضع مهام سير العمل في قائمة الانتظار.

  • معلمة إخراج تشير إلى وقت جدولة التشغيل التالي لسير العمل الخاص بك، حتى تتمكن من تتبع وقت حدوث التصحيح مرة أخرى بالضبط.

أمر التعليمات لجميع العلامات المطلوبة/الاختيارية.

az acr supply-chain workflow create --help

استخدام مدخل Microsoft Azure لعرض مهام سير العمل

  1. بمجرد نجاح سير العمل، انتقل إلى مدخل Microsoft Azure لعرض المهام قيد التشغيل. في قائمة الخدمة، تحت الخدمات، اختر **المستودعات. يجب أن ترى مستودعا جديدا باسم csscpolicies/patchpolicy. يستضيف هذا المستودع أداة تكوين JSON التي تتم الإشارة إليها باستمرار للتصحيح المستمر.

  2. بعد ذلك، تحت قسم الخدمات، اختر اختيار المهام. يجب أن ترى ثلاث مهام جديدة:

لقطة شاشة تعرض المهام التي تم إنشاؤها للتصحيح المستمر.

المهام:

  • cssc-trigger-workflow - تقوم هذه المهمة بمسح ملف التكوين واستدعاء مهمة الفحص على كل صورة على حدة.
  • cssc-scan-image - تقوم هذه المهمة بفحص الصورة بحثا عن الثغرات الأمنية في نظام التشغيل. تؤدي هذه المهمة إلى تشغيل مهمة التصحيح فقط إذا تم العثور على ثغرات أمنية في نظام التشغيل.
  • cssc-patch-image - تقوم هذه المهمة بتصحيح الصورة. تعمل هذه المهام بالتزامن لتنفيذ سير عمل التصحيح المستمر.
  1. يمكنك أيضا التحديد على "عمليات التشغيل" ضمن طريقة العرض "المهام" لمشاهدة عمليات تشغيل مهام معينة. هنا يمكنك عرض معلومات الحالة حول ما إذا كانت المهمة قد نجحت أو فشلت، بالإضافة إلى عرض سجل تصحيح الأخطاء.

لقطة شاشة تعرض تشغيل المهام للتصحيح المستمر.

استخدام CLI لعرض مهام سير العمل

يمكنك أيضا تشغيل أمر عرض CLI التالي للاطلاع على مزيد من التفاصيل حول كل مهمة وسير العمل العام. إخراجات الأمر:

  • جدولة
  • تاريخ الإنشاء
  • بيانات النظام مثل تاريخ التعديل الأخير، حسب من، وما إلى ذلك.

مخطط الأوامر:

az acr supply-chain workflow show -r <registry> -g <resourceGroup> -t continuouspatchv1   

مثال على الأمر:

az acr supply-chain workflow show -r myRegistry -g myResourceGroup -t continuouspatchv1 

أمر التعليمات لجميع العلامات المطلوبة/الاختيارية:

az acr supply-chain workflow show --help

تحديث سير عمل التصحيح المستمر

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

مخطط الأوامر:

az acr supply-chain workflow update -r <registry> -g <resourceGroup> -t continuouspatchv1 --config <JSONfilename> --schedule <number of days>

مثال على الأمر:

az acr supply-chain workflow update -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d

أمر التعليمات لجميع العلامات المطلوبة/الاختيارية:

az acr supply-chain workflow update --help

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

حذف سير عمل التصحيح المستمر

لحذف سير عمل التصحيح المستمر، يرجى تشغيل أمر CLI التالي.

مخطط الأوامر:

az acr supply-chain workflow delete -r <registry> -g <resourceGroup> -t continuouspatchv1 

مثال على الأمر:

az acr supply-chain workflow delete -r myregistry -g myresourcegroup -t continuouspatchv1

أمر التعليمات لجميع العلامات المطلوبة/الاختيارية:

az acr supply-chain workflow delete --help

بمجرد حذف سير العمل بنجاح، سيتم حذف المستودع "csscpolicies/patchpolicy" تلقائيا. سيتم حذف المهام الثلاث التي تقوم بتشغيل سير العمل الخاص بك أيضا، بالإضافة إلى أي عمليات تشغيل مدرجة في قائمة الانتظار حاليا.