Compartilhar via


Solucionar problemas de verificação de dependência

Saiba como solucionar problemas de verificação de dependência no GitHub Advanced Security para Azure DevOps.

Pré-requisitos

Categoria Requisitos
Permissões – Para exibir um resumo de todos os alertas de um repositório: permissões de colaborador para o repositório.
– Para ignorar alertas na Segurança Avançada: permissões de administrador do projeto .
– Para gerenciar permissões em Segurança Avançada: Membro do grupo Administradores de Coleção de Projetos ou Segurança Avançada: gerenciar a permissão de configurações definida como Permitir.

Para obter mais informações sobre permissões de Segurança Avançada, consulte Gerenciar permissões de Segurança Avançada.

Configuração manual da tarefa de verificação de dependência

Dica

Para obter os resultados de verificação mais precisos, adicione a tarefa de verificação de dependência após as etapas de build ou a etapa de restauração do pacote em um pipeline que compila o código que você deseja examinar.

Adicione a tarefa Advanced Security Dependency Scanning (AdvancedSecurity-Dependency-Scanning@1) diretamente ao seu arquivo de pipeline YAML ou selecione a tarefa Advanced Security Dependency Scanning a partir do assistente de tarefas.

Captura de tela da configuração do pipeline de verificação de dependência para YAML.

A varredura de dependências não está identificando nenhum componente

Se a tarefa de verificação de dependência estiver sendo concluída sem sinalizar nenhum componente nem gerar alertas sobre os componentes com vulnerabilidades conhecidas, certifique-se de ter uma etapa de restauração de pacote antes da tarefa AdvancedSecurity-Dependency-Scanning@1.

Por exemplo, para um projeto C# (.NET Core), aqui está um snippet yaml de exemplo:

- 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://v4.hkg1.meaqua.org/en-us/azure/devops/pipelines/tasks/reference/dotnet-core-cli-v2?view=azure-pipelines 
    feedsToUse: 'select'
    ...

- task: AdvancedSecurity-Dependency-Scanning@1

Para um projeto JavaScript, aqui está um snippet yaml de exemplo:

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

- task: AdvancedSecurity-Dependency-Scanning@1

Tempo limite da tarefa de verificação de dependência

O tempo padrão para a execução da tarefa de verificação de dependências é de 300 segundos, ou 5 minutos, antes de atingir o tempo limite. Se a tarefa estiver atingindo o tempo limite antes da conclusão, você poderá definir uma variável de pipeline DependencyScanning.Timeout, que espera um inteiro representando segundos, como DependencyScanning.Timeout: 600. Qualquer coisa abaixo do tempo limite padrão de 300 segundos não tem efeito.

Para usar essa variável, adicione DependencyScanning.Timeout como uma variável de pipeline:

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

Ajustar o diretório de verificação

Por padrão, a tarefa de verificação de dependência processará o Agent.BuildDirectory diretório. Se você quiser definir o escopo da verificação para uma pasta específica, poderá definir uma variável DependencyScanning.SourcePath de pipeline para qualquer caminho de arquivo de diretório no agente de build que você deseja analisar. Não há suporte para as várias execuções de tarefas de verificação de dependência no mesmo trabalho de pipeline. Se o caminho de verificação estiver no escopo do subdiretório, você não poderá adicionar novamente a tarefa para verificar um diretório diferente.

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

Resultados de publicação de verificação de dependência para o repositório não intencional

Se você tiver uma definição de pipeline alojada em um repositório e o código-fonte a ser verificado pelo GitHub Advanced Security estiver em outro, os resultados poderão ser processados e enviados para o repositório incorreto, publicando no repositório que contém a definição do pipeline em vez do repositório de código-fonte.

Para habilitar o roteamento de resultados pretendido, defina a variável de ambiente do pipeline \advancedsecurity.publish.repository.infer: true para que ela infira o repositório a ser publicado a partir do repositório no diretório de trabalho.

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"

Anotações de verificação de dependências de pull request ausentes quando se ajusta o local em que os resultados são publicados.

Se você estiver usando advancedsecurity.publish.repository.infer ou definindo uma alternativa advancedsecurity.publish.repository, talvez seja necessário definir DependencyScanning.SourcePath: $(System.DefaultWorkingDirectory) para que os caminhos de arquivo sejam determinados com precisão para que a anotação de pull request apareça conforme o esperado.

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

Cenário de quebra de vidro para a tarefa de build

Se a tarefa de build de verificação de dependência estiver bloqueando uma execução bem-sucedida do pipeline e você precisar ignorar urgentemente a tarefa de build, poderá definir uma variável DependencyScanning.Skip: truede pipeline.

Permissões de tarefa de verificação de dependência

A tarefa de build de verificação de dependência usa a identidade do pipeline para chamar as APIs REST de Segurança Avançada. Por padrão, os pipelines no mesmo projeto têm acesso para buscar alertas. Se você remover essas permissões da conta de serviço de build ou se tiver uma configuração personalizada, por exemplo, um pipeline hospedado em um projeto diferente do repositório, conceda essas permissões manualmente.

Conceda permissão Advanced Security: View Alerts à conta de serviço de build usada em seu pipeline, que para pipelines com escopo de projeto é [Project Name] Build Service ([Organization Name]), e para pipelines com escopo de coleção é Project Collection Build Service ([Organization Name]).