Partager via


Résolution des problèmes d’analyse des dépendances

Découvrez comment résoudre les problèmes d’analyse des dépendances dans GitHub Advanced Security pour Azure DevOps.

Conditions préalables

Catégorie Spécifications
Autorisations - Pour afficher un résumé de toutes les alertes d’un référentiel : Contributeur autorisations pour le référentiel.
- Pour ignorer les alertes dans Advanced Security : administrateur de projet autorisations.
- Pour gérer les autorisations dans Advanced Security : vous devez être membre du groupe Administrateurs de collection de projets ou disposer de l’autorisation Advanced Security : gérer les paramètres définie sur Autoriser.

Pour plus d’informations sur les autorisations Advanced Security, consultez Gérer les autorisations Advanced Security.

Configuration manuelle de la tâche d’analyse des dépendances

Conseil / Astuce

Pour obtenir les résultats d’analyse les plus précis, ajoutez la tâche d’analyse des dépendances après les étapes de génération ou l’étape de restauration de package dans un pipeline qui génère le code que vous souhaitez analyser.

Ajoutez la tâche Analyse avancée des dépendances de sécurité (AdvancedSecurity-Dependency-Scanning@1) directement à votre fichier de pipeline YAML ou sélectionnez la tâche Analyse avancée des dépendances de sécurité dans l'assistant de tâches.

Capture d'écran de la configuration du pipeline d'analyse des dépendances pour YAML.

L'analyse des dépendances n'identifie aucun composant

Si la tâche d’analyse des dépendances se termine sans marquer de composants et ne parvient pas à générer des alertes pour les composants présentant des vulnérabilités connues, vérifiez que vous disposez d’une étape de restauration de package avant la AdvancedSecurity-Dependency-Scanning@1 tâche.

Par exemple, pour un projet C# (.NET Core), voici un exemple d’extrait de code YAML :

- task: DotNetCoreCLI@2
  displayName: 'Restore NuGet packages'
  inputs:
    command: 'restore'
    projects: '**/*.csproj'

    # If you are using a private package feed such as Azure Artifacts, you will need additional variables.
    # For more information, see https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/dotnet-core-cli-v2?view=azure-pipelines 
    feedsToUse: 'select'
    ...

- task: AdvancedSecurity-Dependency-Scanning@1

Pour un projet JavaScript, voici un exemple d’extrait de code YAML :

- task: Npm@1
  displayName: 'npm install'
  inputs:
    command: 'install'
    workingDir: '$(System.DefaultWorkingDirectory)'

- task: AdvancedSecurity-Dependency-Scanning@1

Délai d'expiration de la tâche d'analyse des dépendances

Le délai par défaut d'exécution de la tâche d'analyse des dépendances avant l'expiration est de 300 secondes, soit 5 minutes. Si la tâche expire avant la fin, vous pouvez définir une variable de pipeline DependencyScanning.Timeout, qui attend un entier représentant des secondes, comme par exemple DependencyScanning.Timeout: 600. Tout ce qui se trouve sous le délai d’expiration par défaut de 300 secondes n’a aucun effet.

Pour utiliser cette variable, ajoutez DependencyScanning.Timeout en tant que variable de pipeline :

- task: AdvancedSecurity-Dependency-Scanning@1
  env:
    DependencyScanning.Timeout: 600

Modification du répertoire d'analyse

Par défaut, la tâche d’analyse des dépendances traite le Agent.BuildDirectory répertoire. Si vous souhaitez étendre votre analyse à un dossier spécifique, vous pouvez définir une variable DependencyScanning.SourcePath de pipeline sur n’importe quel chemin de fichier de répertoire dans l’agent de build que vous souhaitez analyser. Plusieurs exécutions de tâches d’analyse des dépendances dans le même travail de pipeline ne sont pas prises en charge. Si le chemin d’analyse est limité au sous-répertoire, vous ne pouvez pas rajouter la tâche pour analyser un autre répertoire.

- task: AdvancedSecurity-Dependency-Scanning@1
  env:
    DependencyScanning.SourcePath: scan/code/path

Analyse des dépendances et publication des résultats dans le référentiel inattendu

Si vous avez une définition de pipeline hébergée dans un référentiel et que le code source à analyser par GitHub Advanced Security se trouvait dans un autre, les résultats peuvent être traités et envoyés au référentiel incorrect, en publiant dans le référentiel contenant la définition du pipeline plutôt que dans le référentiel de code source.

Pour activer le routage des résultats prévu, définissez la variable advancedsecurity.publish.repository.infer: true d’environnement de pipeline pour déduire le dépôt à publier à partir du référentiel dans le répertoire de travail.

trigger:
  - main

resources:
  repositories:
    # PipelineRepo: The repository containing the pipeline definition.
    # This is optional and only needed if you plan to reference files or scripts from this repo.
    - repository: PipelineRepo
      type: git
      name: DevOpsPipelineRepo
      ref: refs/heads/main
      trigger:
        - main
    # SourceRepo: The repository where scanning and publishing will occur.
    - repository: SourceRepo
      type: git
      name: code-to-analyze-repo
      ref: refs/heads/main
      trigger:
        - main

jobs:
  - job: "DependencyScan"
    displayName: "Dependency Scanning with Inferred Publishing"
    variables:
      # Enable repository inference
      advancedsecurity.publish.repository.infer: true
    steps:
      # Checkout the SourceRepo
      - checkout: SourceRepo

      # Perform Dependency Scanning
      - task: AdvancedSecurity-Dependency-Scanning@1
        displayName: "Analyze Dependencies for Vulnerabilities"

Analyse des annotations de demande de tirage des dépendances manquantes lors de l'ajustement de l'emplacement de publication des résultats

Si vous utilisez advancedsecurity.publish.repository.infer ou définissez une alternative advancedsecurity.publish.repository, vous devrez peut-être définir DependencyScanning.SourcePath: $(System.DefaultWorkingDirectory) afin que les chemins d'accès aux fichiers soient déterminés avec précision pour que l'annotation de la demande de tirage s'affiche comme prévu.

- task: AdvancedSecurity-Dependency-Scanning@1
  env:
    DependencyScanning.SourcePath: $(System.DefaultWorkingDirectory)

Scénario de secours pour la tâche de génération

Si la tâche de génération d’analyse des dépendances bloque l’exécution réussie de votre pipeline et que vous devez ignorer de manière urgente la tâche de génération, vous pouvez définir une variable DependencyScanning.Skip: truede pipeline.

Autorisations de tâche d’analyse des dépendances

La tâche de construction pour l'analyse des dépendances utilise l'identité du pipeline pour appeler les API REST de sécurité avancée. Les pipelines du même projet ont par défaut accès aux alertes d’extraction. Si vous supprimez ces autorisations du compte de service de build ou si vous avez une configuration personnalisée, par exemple, un pipeline hébergé dans un projet différent du référentiel, accordez ces autorisations manuellement.

Accordez à Advanced Security: View Alerts l’autorisation au compte de service de build utilisé dans votre pipeline qui est [Project Name] Build Service ([Organization Name]) pour des pipelines délimités par le projet et Project Collection Build Service ([Organization Name]) pour des pipelines délimités par la collection.