Compartir a través de


Solución de problemas de examen de dependencias

Aprenda a solucionar problemas de análisis de dependencias en GitHub Advanced Security para Azure DevOps.

Prerrequisitos

Categoría Requisitos
Permisos - Para ver un resumen de todas las alertas de un repositorio: permisos de colaborador para el repositorio.
- Para descartar alertas en Seguridad Avanzada: permisos de administrador de Project.
- Para administrar permisos en Advanced Security: miembro del grupo Administradores de la colección de proyectos o del grupo Advanced Security: administrar configuración con el permiso configurado en Permitir.

Para obtener más información sobre los permisos de Advanced Security, consulte Administrar permisos de Advanced Security.

Análisis de dependencias sin identificar ningún componente

Si la tarea de escaneo de dependencias se está completando sin marcar ningún componente y sin generar alertas para los componentes con vulnerabilidades conocidas, asegúrese de tener un paso de restauración de paquetes antes de la tarea AdvancedSecurity-Dependency-Scanning@1.

Por ejemplo, para un proyecto de C# (.NET Core), este es un fragmento de código YAML de ejemplo:

- 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 un proyecto de JavaScript, este es un fragmento de código YAML de ejemplo:

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

- task: AdvancedSecurity-Dependency-Scanning@1

Tiempo de espera de la tarea de examen de dependencias

La hora predeterminada en la que se ejecuta la tarea de análisis de dependencias antes de que se agote el tiempo de espera es de 300 segundos (5 minutos). Si la tarea agota el tiempo de espera antes de la finalización, puede establecer una variable de canalización DependencyScanning.Timeout, que espera un entero que represente segundos, como DependencyScanning.Timeout: 600. Cualquier cosa con el tiempo de espera predeterminado de 300 segundos no tiene ningún efecto.

Para usar esta variable, agregue DependencyScanning.Timeout como una variable de canalización:

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

Ajustando el directorio de escaneo

De forma predeterminada, la tarea de análisis de dependencias procesará el Agent.BuildDirectory directorio. Si quiere limitar el ámbito del examen a una carpeta específica, puede establecer una variable DependencyScanning.SourcePath de canalización en cualquier ruta de acceso de archivo de directorio del agente de compilación que quiera analizar. No se admiten varias ejecuciones de tareas de examen de dependencias en el mismo trabajo de canalización. Si la ruta de escaneo está limitada a un subdirectorio, no se puede agregar nuevamente la tarea para escanear otro directorio.

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

Publicación de los resultados del escaneo de dependencias en el repositorio no deseado

Si tiene una definición de canalización hospedada en un repositorio y el código fuente que va a examinar GitHub Advanced Security estaba en otro, los resultados se pueden procesar y enviar al repositorio incorrecto, publicar en el repositorio que contiene la definición de canalización en lugar del repositorio de código fuente.

Para habilitar el enrutamiento de resultados previsto, establezca la variable de entorno de la canalización advancedsecurity.publish.repository.infer: true para inferir el repositorio desde el cual publicar en el directorio de trabajo.

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"

Faltan anotaciones de solicitud de incorporación de cambios de examen de dependencias al ajustar dónde se publican los resultados

Si usa advancedsecurity.publish.repository.infer o define una alternativa advancedsecurity.publish.repository, es posible que tenga que establecer DependencyScanning.SourcePath: $(System.DefaultWorkingDirectory) para que las rutas de acceso de archivo se determinen con precisión para que la anotación de solicitud de incorporación de cambios aparezca según lo previsto.

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

Escenario de emergencia para la tarea de compilación

Si la tarea de compilación de examen de dependencias bloquea una ejecución correcta de la canalización y usted necesita omitir urgentemente la tarea de compilación, puede establecer una variable de canalización DependencyScanning.Skip: true.

Permisos de tarea de examen de dependencias

La tarea de compilación de análisis de dependencias usa la identidad de canalización para llamar a las API de REST de Advanced Security. De forma predeterminada, las canalizaciones del mismo proyecto tienen acceso para capturar alertas. Si quita esos permisos de la cuenta de servicio de compilación o si tiene una configuración personalizada, por ejemplo, una canalización hospedada en un proyecto diferente al del repositorio, conceda estos permisos manualmente.

Conceda el permiso Advanced Security: View Alerts a la cuenta de servicio de compilación que se usa en la canalización, que para las canalizaciones con ámbito de proyecto, es [Project Name] Build Service ([Organization Name])y, para las canalizaciones con ámbito de recopilación, es Project Collection Build Service ([Organization Name]).