فحص مستودع GitHub المتصل أو مشروع Azure DevOps

يمكنك إعداد Microsoft Security DevOps لفحص مستودع GitHub المتصل أو مشروع Azure DevOps. استخدم إجراء GitHub أو ملحق Azure DevOps لتشغيل Microsoft Security DevOps فقط على التعليمات البرمجية المصدر للبنية الأساسية كتعليق برمجي (IaC)، والمساعدة في تقليل وقت تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية.

توضح لك هذه المقالة كيفية تطبيق ملف تكوين YAML لقالب لفحص المستودع أو المشروع المتصل خصيصا بحثا عن مشكلات أمان IaC باستخدام قواعد Microsoft Security DevOps.

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

  • بالنسبة إلى Microsoft Security DevOps، قم بإعداد إجراء GitHub أو ملحق Azure DevOps استنادا إلى نظام إدارة التعليمات البرمجية المصدر:
    • إذا كان المستودع الخاص بك في GitHub، فقم بإعداد إجراء Microsoft Security DevOps GitHub.
    • إذا كنت تدير التعليمات البرمجية المصدر في Azure DevOps، فقم بإعداد ملحق Microsoft Security DevOps Azure DevOps.
  • تأكد من أن لديك قالب IaC في المستودع الخاص بك.

إعداد وتشغيل إجراء GitHub لفحص التعليمات البرمجية المصدر IaC المتصلة

لإعداد إجراء وعرض نتائج الفحص في GitHub:

  1. قم بتسجيل الدخول إلى GitHub.

  2. انتقل إلى الصفحة الرئيسية لمستودعك.

  3. في دليل الملفات، حدد .github>workflows>msdevopssec.yml.

    لمزيد من المعلومات حول العمل مع إجراء في GitHub، راجع المتطلبات الأساسية.

  4. حدد أيقونة تحرير هذا الملف (القلم الرصاص).

    لقطة شاشة تبرز أيقونة تحرير هذا الملف لملف msdevopssec.yml.

  5. في قسم Run analyzers من ملف YAML، أضف هذه التعليمة البرمجية:

    with:
        categories: 'IaC'
    

    إشعار

    القيم حساسة لحالة الأحرف.

    إليك مثال:

    لقطة شاشة تعرض المعلومات المراد إضافتها إلى ملف YAML.

  6. حدد Commit changes . . . . .

  7. حدد Commit changes.

    لقطة شاشة توضح مكان تحديد Commit changes في صفحة GitHub.

  8. (اختياري) إضافة قالب IaC إلى المستودع الخاص بك. إذا كان لديك بالفعل قالب IaC في المستودع الخاص بك، فتخط هذه الخطوة.

    على سبيل المثال، قم بتثبيت قالب IaC الذي يمكنك استخدامه لنشر تطبيق ويب Linux أساسي.

    1. حدد ملف azuredeploy.json.

      لقطة شاشة توضح مكان وجود ملف azuredeploy.json.

    2. حدد "Raw".

    3. انسخ جميع المعلومات الموجودة في الملف، كما في المثال التالي:

      {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
          "webAppName": {
            "type": "string",
            "defaultValue": "AzureLinuxApp",
            "metadata": {
              "description": "The base name of the resource, such as the web app name or the App Service plan."
            },
            "minLength": 2
          },
          "sku": {
            "type": "string",
            "defaultValue": "S1",
            "metadata": {
              "description": "The SKU of the App Service plan."
            }
          },
          "linuxFxVersion": {
            "type": "string",
            "defaultValue": "php|7.4",
            "metadata": {
              "description": "The runtime stack of the current web app."
            }
          },
          "location": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]",
            "metadata": {
              "description": "The location for all resources."
            }
          }
        },
        "variables": {
          "webAppPortalName": "[concat(parameters('webAppName'), '-webapp')]",
          "appServicePlanName": "[concat('AppServicePlan-', parameters('webAppName'))]"
        },
        "resources": [
          {
            "type": "Microsoft.Web/serverfarms",
            "apiVersion": "2020-06-01",
            "name": "[variables('appServicePlanName')]",
            "location": "[parameters('location')]",
            "sku": {
              "name": "[parameters('sku')]"
            },
            "kind": "linux",
            "properties": {
              "reserved": true
            }
          },
          {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2020-06-01",
            "name": "[variables('webAppPortalName')]",
            "location": "[parameters('location')]",
            "kind": "app",
            "dependsOn": [
              "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
            ],
            "properties": {
              "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
              "siteConfig": {
                "linuxFxVersion": "[parameters('linuxFxVersion')]"
              }
            }
          }
        ]
      }
      
    4. في مستودع GitHub، انتقل إلى المجلد .github/workflows .

    5. حدد إضافة ملف>إنشاء ملف جديد.

      لقطة شاشة توضح لك كيفية إنشاء ملف جديد.

    6. أدخل اسما للملف.

    7. الصق المعلومات المنسخة في الملف.

    8. حدد الالتزام بملف جديد.

    تتم إضافة ملف القالب إلى المستودع الخاص بك.

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

  9. تحقق من انتهاء فحص Microsoft Security DevOps:

    1. بالنسبة للمستودع، حدد Actions.

    2. حدد سير العمل لمشاهدة حالة الإجراء.

  10. لعرض نتائج الفحص، انتقل إلى تنبيهات فحص رمز الأمان>.

    يمكنك التصفية حسب الأداة لرؤية نتائج IaC فقط.

إعداد وتشغيل ملحق Azure DevOps لفحص التعليمات البرمجية المصدر IaC المتصلة

لإعداد ملحق وعرض نتائج الفحص في Azure DevOps:

  1. قم بتسجيل الدخول إلى Azure DevOps.

  2. حدد مشروعك.

  3. حدد Pipelines.

  4. حدد البنية الأساسية لبرنامج ربط العمليات التجارية حيث تم تكوين ملحق Azure DevOps ل Microsoft Security DevOps.

  5. حدد تحرير البنية الأساسية لبرنامج ربط العمليات التجارية.

  6. في ملف تكوين البنية الأساسية لبرنامج ربط العمليات التجارية YAML، أسفل displayName السطر لمهمة MicrosoftSecurityDevOps@1 ، أضف هذه التعليمة البرمجية:

    inputs:
        categories: 'IaC'
    

    إليك مثال:

    لقطة شاشة توضح مكان إضافة سطر فئات IaC في ملف YAML لتكوين البنية الأساسية لبرنامج ربط العمليات التجارية.

  7. حدد حفظ.

  8. (اختياري) أضف قالب IaC إلى مشروع Azure DevOps. إذا كان لديك بالفعل قالب IaC في مشروعك، فتخط هذه الخطوة.

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

  10. لعرض نتائج فحص IaC، حدد Pipelines، ثم حدد البنية الأساسية لبرنامج ربط العمليات التجارية التي قمت بتعديلها.

  11. راجع الاطلاع على مزيد من التفاصيل، وحدد تشغيل مسار معين.

عرض التفاصيل ومعلومات المعالجة لقواعد IaC المطبقة

أدوات فحص IaC المضمنة مع Microsoft Security DevOps هي Template Analyzer (PSRule مضمنة في Template Analyzer) وTerrascan.

يقوم Template Analyzer بتشغيل القواعد على قوالب Azure Resource Manager (قوالب ARM) وقوالب Bicep. لمزيد من المعلومات، راجع قواعد محلل القالب وتفاصيل المعالجة.

يقوم Terrascan بتشغيل القواعد على قوالب وقوالب ARM ل CloudFormation وDocker وHelm وKubernetes وKustomize وTerraform. لمزيد من المعلومات، راجع قواعد Terrascan.

لمعرفة المزيد حول أدوات فحص IaC المضمنة مع Microsoft Security DevOps، راجع:

في هذه المقالة، تعلمت كيفية إعداد إجراء GitHub وملحق Azure DevOps ل Microsoft Security DevOps للفحص بحثا عن تكوينات أمان IaC الخاطئة وكيفية عرض النتائج.

للحصول على مزيد من المعلومات: