Partilhar via


Solucionar problemas de análise de dependências

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

Pré-requisitos

Categoria Requerimentos
Permissões - Para visualizar um resumo de todos os alertas para um repositório: Colaborador permissões para o repositório.
- Para descartar alertas em Segurança Avançada: permissões de administrador do projeto.
- Para gerir permissões em Segurança Avançada: Membro do grupo Administradores de Coleção de Projetos ou Segurança Avançada: gerir configurações permissões definidas 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

Sugestão

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

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 no assistente de tarefas.

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

Verificação de dependência não identificando nenhum componente

Se a tarefa de análise de dependências for concluída sem sinalizar qualquer componente e sem gerar alertas para componentes com vulnerabilidades conhecidas, certifique-se de incluir uma etapa de restauração de pacote antes da AdvancedSecurity-Dependency-Scanning@1 tarefa.

Por exemplo, para um projeto C# (.NET Core), aqui está um trecho 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://learn.microsoft.com/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 trecho 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 em que a tarefa de verificação de dependência é executada antes do tempo limite é de 300 segundos ou 5 minutos. Se a tarefa estiver a expirar antes da conclusão, poderá definir uma variável de pipeline DependencyScanning.Timeout, que espera um número inteiro que represente segundos, tal 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 seu diretório de digitalização

Por padrão, a tarefa de verificação de dependência processará o Agent.BuildDirectory diretório. Se quiser definir o escopo da verificação para uma pasta específica, você pode definir uma variável DependencyScanning.SourcePath de pipeline para qualquer caminho de arquivo de diretório no agente de compilação que deseja analisar. Não há suporte para execuções de tarefas de varredura de múltiplas dependências no mesmo trabalho de pipeline. Se o caminho de verificação tiver como escopo o subdiretório, não será possível adicionar novamente a tarefa para verificar um diretório diferente.

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

Verificação de dependência publicando resultados no 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 de pipeline em vez do repositório de código-fonte.

Para habilitar o encaminhamento de resultados pretendidos, defina a variável de ambiente do pipeline advancedsecurity.publish.repository.infer: true para inferir o repositório a publicar do 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"

Verificação de dependência ausente anotações de solicitação pull ao ajustar onde os resultados são publicados

Se você estiver usando o 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 solicitação pull apareça conforme o esperado.

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

Cenário de quebra-vidro para tarefa de construção

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

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

A tarefa de compilação de verificação de dependência usa a identidade do pipeline para chamar as APIs REST de Segurança Avançada. Por padrão, pipelines no mesmo projeto têm acesso para buscar alertas. Se você remover essas permissões da conta de serviço de compilação 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 Advanced Security: View Alerts permissão à conta de serviço de compilação usada em seu pipeline, que para pipelines com escopo de projeto é [Project Name] Build Service ([Organization Name]), e para pipelines com escopo de coleta é Project Collection Build Service ([Organization Name]).