مشاركة عبر


CI/CD في مسح خطوط الأنابيب باستخدام Defender for Cloud CLI

واجهة سطر الأوامر من Microsoft Defender for Cloud (Defender for Cloud CLI) تتيح لك تضمين فحص الأمان مباشرة في سير عمل التكامل المستمر والنشر المستمر (CI/CD). يقوم جهاز CLI بتنظيم أجهزة المسح الأمنية ويمكن تشغيله محليا للمطورين.

الإمكانات الأساسية

  • تقييم ثغرات صورة الحاوية والإدخال التلقائي في مستكشف أمان السحابة.
  • واجهة برمجة موحدة متعددة المنصات تعمل مع أي أدوات CI/CD.
  • إخراج SARIF المستند إلى المعايير الذي يتكامل مع التعليقات التوضيحية لطلب السحب وبوابات الجودة.
  • المصادقة القائمة على الرموز تحدد اشتراك Azure واحد للتحكم الدقيق أو مصادقة Azure DevOps Connector.

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

  • اشتراك Azure مع إلحاق Defender for Cloud. إذا لم يكن لديك حساب Azure بالفعل، فبادر بإنشاء حساب مجانا.

  • تم تفعيل CSPM في Defender.

  • واحدة من أدوات خط أنابيب CI/CD التالية: Azure Pipelines، GitHub Actions، Jenkins، BitBucket Pipelines، GitLab، Google Cloud Build، Bamboo، CircleCI، Travis CI، TeamCity، خدمات Oracle DevOps، أو AWS CodeBuild.

  • طرفية ويندوز أو لينكس/WSL لمسح سطح المكتب المحلي.

  • إذن مسؤول الأمن لإنشاء معرف العميل والرموز السرية إذا كان يستخدم المصادقة المعتمدة على الرموز، أو تم إنشاء موصل Azure DevOps أو GitHub إذا استخدمت المصادقة المعتمدة على الموصلات.

إعداد المصادقة

يدعم Defender for Cloud CLI طريقتين للمصادقة لتتوافق مع ممارسات أمان المؤسسات. المصادقة القائمة على الموصل متوفرة حاليا وهي الطريقة المفضلة للمصادقة في Azure DevOps وGitHub.

  1. المصادقة القائمة على الموصل
  2. المصادقة المعتمدة على الرموز

قم بتكوين خط أنابيب CI/CD الخاص بك

اختر مثال التكوين الذي يتوافق مع منصة CI/CD وطريقة المصادقة الخاصة بك.

Azure DevOps (المصادقة القائمة على الموصل)

- task: MicrosoftDefenderCLI@2
    inputs:
      command: 'run'
      scanType: 'image'
      imageName: $(ImageName)
      break: false

GitHub (المصادقة المعتمدة على الرموز)

- name: Download Defender for Cloud CLI
  run: |
    curl -L -o defender "https://aka.ms/defender-cli_linux-x64" && chmod +x defender
- name: Run Defender for Cloud CLI Scan (Built)
  run: |
    #replace image-name with the Container image built      
    ./defender scan image '${{ image-name }}'
  continue-on-error: true
  env:
    DEFENDER_TENANT_ID: ${{ secrets.DEFENDER_TENANT_ID }}
    DEFENDER_CLIENT_ID: ${{ secrets.DEFENDER_CLIENT_ID }}
    DEFENDER_CLIENT_SECRET: ${{ secrets.DEFENDER_CLIENT_SECRET }}

جينكينز (المصادقة المعتمدة على الرموز)

environment {
  DEFENDER_TENANT_ID=credentials('defender-tenant-id')
  DEFENDER_CLIENT_ID=credentials('defender-client-id')
  DEFENDER_CLIENT_SECRET=credentials('defender-client-secret')
} 

stage('Download & Run Defender for Cloud CLI') {
  steps {
    script {
      node {
        sh 'curl -L -o defender "https://aka.ms/defender-cli_linux-x64"'
        sh 'chmod +x defender'
        sh './defender scan image ${IMAGE_NAME}'
      }
    }
  }
}