Partager via


CI/CD dans l’analyse de pipeline avec la CLI Defender for Cloud

L’interface de ligne de commande Microsoft Defender pour cloud (Defender pour Cloud CLI) vous permet d’incorporer l’analyse de sécurité directement dans vos flux de travail d’intégration continue et de déploiement continu (CI/CD). L’interface CLI orchestre les scanneurs de sécurité et peut s’exécuter localement pour les développeurs.

Fonctionnalités clés

  • Évaluation des vulnérabilités d’image conteneur et ingestion automatique dans Cloud Security Explorer.
  • Interface CLI unifiée multiplateforme qui fonctionne avec n’importe quel exécuteur CI (Azure Pipelines, GitHub Actions, Jenkins, Bitbucket, GitLab, CircleCI, Travis CI, AWS CodeBuild, etc.).
  • Sortie SARIF standard qui s'intègre aux annotations de demande de tirage (pull request) et aux portails de qualité.
  • L’authentification basée sur les jetons est limitée à un seul abonnement Azure pour un contrôle granulaire ou l’authentification du connecteur Azure DevOps.

Prerequisites

  • Un abonnement Azure avec Defender for Cloud intégré. Si vous n’avez pas encore de compte Azure, créez-en un gratuitement.

  • Defender CSPM activé.

  • L’un des outils de pipeline CI/CD suivants : Jenkins, BitBucket Pipelines, Google Cloud Build, Bamboo, CircleCI, Travis CI, TeamCity, Oracle DevOps services ou AWS CodeBuild.

  • Terminal Windows ou Linux/WSL pour les analyses de bureau locales.

  • Autorisation Administrateur de sécurité pour créer l’ID client et les jetons secrets si vous utilisez l’authentification basée sur des jetons, ou un connecteur Azure DevOps ou GitHub établi si vous utilisez l’authentification basée sur le connecteur.

Configuration de l’authentification

Defender pour Cloud CLI prend en charge deux méthodes d’authentification pour s’aligner sur les pratiques de sécurité d’entreprise.

Authentification basée sur les jetons

Les administrateurs de sécurité créent des jetons dans le portail Microsoft Defender pour Cloud (MDC) et les configurent en tant que variables d’environnement dans des pipelines CI/CD ou des terminaux locaux. Cette approche offre une flexibilité sur les systèmes de build et permet un ciblage précis par abonnement.

Authentification basée sur le connecteur

L’authentification basée sur le connecteur est actuellement disponible pour Azure DevOps ou GitHub. Lorsque vous établissez un connecteur entre Azure DevOps et Defender pour Cloud, le processus d’authentification se produit automatiquement. Vous n’avez pas besoin d’ajouter de jetons à vos pipelines.

Pour obtenir des instructions détaillées et des exemples, consultez :

Configurer votre pipeline CI/CD

Choisissez l’exemple de configuration qui correspond à votre plateforme CI/CD et à votre méthode d’authentification.

Azure DevOps (authentification basée sur le connecteur)

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

GitHub (authentification basée sur un jeton)

- 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 }}

Jenkins (Authentification basée sur un jeton)

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}'
      }
    }
  }
}