Installer et exécuter Defender CLI (préversion)

La ligne de commande Defender est un outil en ligne de commande pour MDASH et d’autres scanners de sécurité dans Microsoft Defender. Il utilise un système d’IA multi-modèles et agentique pour aider les équipes de sécurité et d’ingénierie à détecter et corriger les vulnérabilités du code. Grâce à la CLI Defender, vous pouvez effectuer des scans de code agent et appliquer des correctifs localement ou dans des pipelines CI/CD. La CLI Defender est distribuée comme un exécutable autonome pour Windows, macOS et Linux.

Prerequisites

  • Le CLI Defender prend en charge deux méthodes d’authentification : utiliser l’authentification basée sur une application pour les pipelines CI/CD et autres automatisations non interactives, et l’authentification interactive pour les scans locaux des terminaux par les utilisateurs connectés. Les autorisations dont vous avez besoin dépendent de votre méthode d’authentification. Pour plus de détails, voir la configuration de la CLI Defender pour la sécurité du code agent.
  • Définissez la variable d’environnement du tenant, par exemple DEFENDER_ASPM_TENANT_ID. Les variables requises dépendent de la méthode d’authentification que vous utilisez. Pour plus de détails, voir la configuration de la CLI Defender pour la sécurité du code agent.
  • Clone local du référentiel que vous souhaitez analyser.

Installer Defender CLI

Téléchargez le fichier binaire CLI pour votre plateforme :

# Windows x64
Invoke-WebRequest ` 
    -Uri "https://cli.dfd.security.azure.com/public/v2/latest/Defender_win-x64.exe" ` 
    -OutFile "defender.exe"

Numériser

Par défaut, les scans s’exécutent de manière asynchrone. Cela signifie que lorsque vous soumettez un scan, le scanner n’attend pas qu’il se termine. Il sort immédiatement et vous rend un ID de poste. L’ID de la tâche sert de référence persistante qui peut ensuite être utilisée pour télécharger les artefacts des résultats de la numérisation, annuler la tâche, attendre la fin de la tâche ou interroger son statut actuel.

Dans les commandes suivantes, remplacez l’espace réservé <TARGET_SOURCE> par l’un des chemins vers votre répertoire de code source cible, par exemple my-code\project1. Si vous exécutez la CLI Defender depuis le répertoire de votre code, utilisez . pour vous référer au répertoire actuel.

# Step 1: Submit and get a job ID
./defender scan ai-scan submit <TARGET_SOURCE>
# Output: Job submitted: <JOB_ID>

# Step 2: Check job status
./defender status <JOB_ID>

# Step 3: (Optional) Wait for completion and download results
./defender status wait <JOB_ID> -o results.sarif

Numériser avec une configuration de numérisation (Aperçu)

Une configuration de scan permet de sélectionner quels modèles d’IA effectuent votre scan. Deux configuations sont disponibles :

Configuration Models À utiliser lorsque
Standard GPT-5.4, GPT-5.3-Codex, GPT-5.4-Mini Analyse de code agentique polyvalente (configuration standard).
mai-cyber (préversion) GPT-5.4, GPT-5.3-Codex, GPT-5.4-Mini + MAI-Cyber-1-Flash Vous souhaitez que les modèles de référence soient enrichis avec le modèle MAI-Cyber-1-Flash spécialisé en cybersécurité.

Voir les configurations disponibles et les paramètres par défaut actuels :

./defender scan profile model list
./defender scan profile model show-default

Effectuez un scan avec une configuration spécifique (qui supprime la norme par défaut uniquement pour ce scan) :

# Standard:
./defender scan ai-scan submit <TARGET_SOURCE> --model-profile standard

# May Cyber:
./defender scan ai-scan submit <TARGET_SOURCE> --model-profile mai-cyber

Filtrer par gravité

Lors de la soumission d’un scan, vous pouvez limiter les résultats retournés aux résultats de gravité élevée et critique uniquement. Cela réduit la sortie aux problèmes qui présentent le plus grand risque, accélérant ainsi le tri et aidant les équipes à prioriser la remédiation là où cela compte le plus. Utilisez le drapeau --severity pour définir le seuil, avec les valeurs acceptées de low (par défaut), medium, high, ou critical.

./defender scan ai-scan submit <TARGET_SOURCE> --severity high

Gérer les tâches

La commande Defender CLI status permet un accès rapide aux tâches suivies par Codename MDASH. Il vous permet de lister tous les emplois actuellement suivis, de consulter les détails d’un travail spécifique, de bloquer et télécharger un fichier SARIF, de retélécharger le SARIF pour une exécution donnée, et plus encore.

./defender status                         # List all tracked jobs
./defender status <JOB_ID>                # Show details of a job
./defender status result <JOB_ID>         # Download a finished report
./defender status log <JOB_ID>            # Print the path of the auto-saved debug log for a run

Téléchargez le résultat

Les scans s’exécutent de manière asynchrone par défaut et prennent un certain temps à être terminés. Au lieu de vérifier à plusieurs reprises le statut de la tâche, la wait commande attend que la tâche soit terminée et télécharge les résultats dans un fichier SARIF. Pour plus de détails, voir Consulter les résultats de l’analyse du code agentique depuis le terminal.

La commande suivante attend la fin du scan <JOB_ID> , puis enregistre les résultats sur results.sarif:

./defender status wait <JOB_ID> -o results.sarif

Retéléchargez le résultat

Une fois qu’une tâche a atteint un état terminal (complété ou échoué), téléchargez ses résultats à l’aide de la commande ci-dessous. Cette commande est particulièrement utile si vous avez effacé le fichier SARIF local, si la commande originale wait a été interrompue avant qu’elle ne soit terminée, ou si vous avez soumis la tâche depuis une machine mais souhaitez récupérer les résultats d’une autre. Remplacez-le <JOB_ID> par votre véritable ID de poste.

./defender status result <JOB_ID>

Annuler le travail

L’annulation d’une analyse ne rembourse pas les jetons qui ont déjà été consommés. Lors d’une analyse, MDASH effectue des appels en direct à un LLM qui consomment des tokens au fur et à mesure du traitement. Si vous annulez une analyse déjà en cours d’exécution, MDASH arrête la planification du nouveau travail, mais vous êtes toujours facturé pour tous les jetons consommés avant que l’annulation ne prenne effet. L’annulation d’une analyse peut empêcher toute consommation supplémentaire de jetons pour les opérations à venir, mais elle ne rembourse pas les jetons qui ont déjà été utilisés.

./defender status cancel <JOB_ID>

Résolution des problèmes

Lors du dépannage de problèmes de la ligne de commande Defender, les administrateurs ou les équipes de support peuvent vous demander de fournir le journal sauvegardé automatiquement pour aider à diagnostiquer le problème. Pour trouver le chemin du journal pour une exécution spécifique, utilisez la commande suivante sur la même machine où le scan a eu lieu, en remplaçant <JOB_ID> par l’ID de la tâche du scan.

./defender status log <JOB_ID>

Lors de la résolution de problèmes de comportement inattendu de la CLI, une option est de relancer la commande avec un niveau de journal supérieur, comme debug, qui fait apparaître une sortie de diagnostic plus détaillée que le niveau d’information par défaut. Cela peut vous aider à identifier la cause. Cependant, cette approche ne fonctionne que si vous pouvez reproduire le problème en relançant la commande. Pour adapter l’exemple ci-dessous à votre scénario :

  • Remplacez l’espace réservé <failing-command> par la commande qui échoue. Par exemple : scan ai-scan submit .
  • Réglez --log-level au niveau approprié. Valeurs attendues : trace, debug, info (par défaut), warn, error.
  • Optionnellement, définissez --log-file sur un chemin de fichier. Lorsque cette option est utilisée, la CLI écrit la sortie de débogage dans le fichier spécifié au lieu de l’afficher uniquement dans la console.
./defender <failing-command> --log-level debug --log-file ./defender-debug.log

Par exemple, si un balayage échoue, relancez la commande et ajoutez le drapeau --log-level à la commande comme suit :

./defender scan ai-scan submit <TARGET_SOURCE> --log-level debug