Delen via


Problemen met het scannen van afhankelijkheden oplossen

Meer informatie over het oplossen van problemen met het scannen van afhankelijkheden in GitHub Advanced Security voor Azure DevOps.

Vereiste voorwaarden

Categorie Behoeften
toestemmingen - Een overzicht van alle waarschuwingen voor een opslagplaats weergeven: Inzender machtigingen voor de opslagplaats.
- Waarschuwingen verwijderen in Geavanceerde beveiliging: Projectbeheerder machtigingen.
- Voor het beheren van machtigingen in Geavanceerde beveiliging: lid van de beheerders van projectverzamelingen groep of Geavanceerde beveiliging: instellingen beheren machtigingen ingesteld op Toestaan.

Zie Geavanceerde beveiligingsmachtigingen beherenvoor meer informatie over geavanceerde beveiligingsmachtigingen.

Afhankelijkheid scannen identificeert geen onderdelen

Als de scantaak voor afhankelijkheden wordt voltooid zonder dat er onderdelen worden gemarkeerd en er geen waarschuwingen worden gegenereerd voor onderdelen met bekende kwetsbaarheden, moet u ervoor zorgen dat u vóór de AdvancedSecurity-Dependency-Scanning@1 taak een herstelstap voor pakketten hebt.

Voor een C#-project (.NET Core) ziet u hier bijvoorbeeld een YAML-voorbeeldfragment:

- 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

Voor een JavaScript-project ziet u hier een YAML-voorbeeldfragment:

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

- task: AdvancedSecurity-Dependency-Scanning@1

Time-out voor het scannen van afhankelijkheden

De standaardtijd waarop de afhankelijkheidenscan wordt uitgevoerd voordat er een time-out optreedt, is 300 seconden of 5 minuten. Als er een time-out optreedt voordat de taak is voltooid, kunt u een pijplijnvariabele DependencyScanning.Timeoutinstellen, die een geheel getal verwacht dat seconden vertegenwoordigt, zoals DependencyScanning.Timeout: 600. Alles onder de standaardtime-out van 300 seconden heeft geen effect.

Als u deze variabele wilt gebruiken, voegt u deze toe DependencyScanning.Timeout als een pijplijnvariabele:

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

Het aanpassen van uw scanmap

De scantaak voor afhankelijkheden verwerkt standaard de Agent.BuildDirectory map. Als u de scan wilt instellen op een specifieke map, kunt u een pijplijnvariabele DependencyScanning.SourcePath instellen op een mapbestandspad in de buildagent die u wilt analyseren. Uitvoeringen van taken voor het scannen van afhankelijkheid in dezelfde pijplijntaak worden niet ondersteund. Als het scanpad is gericht op submap, kunt u de taak niet opnieuw toevoegen om een andere map te scannen.

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

Publicatieresultaten van afhankelijkheden scannen naar de onbedoelde opslagplaats

Als u een pijplijndefinitie in de ene opslagplaats hebt en de broncode die moet worden gescand door GitHub Advanced Security zich in een andere bevindt, kunnen resultaten worden verwerkt en verzonden naar de onjuiste opslagplaats, en worden ze gepubliceerd naar de opslagplaats die de pijplijndefinitie bevat in plaats van de broncodeopslagplaats.

Als u beoogde resultaatroutering wilt inschakelen, stelt u de omgevingsvariabele advancedsecurity.publish.repository.infer: true voor de pijplijn in om de opslagplaats af te leiden van de opslagplaats in de werkmap.

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"

Ontbrekende annotaties voor afhankelijkheidsscan-pull-aanvragen bij het aanpassen van de publicatielocatie van resultaten

Als u ofwel advancedsecurity.publish.repository.infer gebruikt of een alternatief advancedsecurity.publish.repository definieert, dan moet u mogelijk DependencyScanning.SourcePath: $(System.DefaultWorkingDirectory) instellen zodat bestandspaden nauwkeurig worden bepaald en de pull request-aantekening correct wordt weergegeven zoals verwacht.

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

Noodscenario voor bouwwerktaak

Als de build-taak voor het scannen van afhankelijkheden een geslaagde uitvoering van uw pijplijn blokkeert en u de buildtaak dringend moet overslaan, kunt u een pijplijnvariabele DependencyScanning.Skip: trueinstellen.

Taakmachtigingen voor het scannen van afhankelijkheden

De build-taak voor het scannen van afhankelijkheden maakt gebruik van de pijplijnidentiteit om de Advanced Security REST API's aan te roepen. Pijplijnen in hetzelfde project hebben standaard toegang om waarschuwingen op te halen. Als u deze machtigingen verwijdert uit het buildserviceaccount of als u een aangepaste installatie hebt, bijvoorbeeld een pijplijn die wordt gehost in een ander project dan de opslagplaats, moet u deze machtigingen handmatig verlenen.

Verleen Advanced Security: View Alerts toestemming aan het buildserviceaccount dat wordt gebruikt in uw pijplijn, wat voor pijplijnen met projectbereik [Project Name] Build Service ([Organization Name]), en voor pijplijnen met een verzamelingsbereik Project Collection Build Service ([Organization Name]) is.