Compartir vía


Configuración de GitHub Advanced Security para Azure DevOps

GitHub Advanced Security para Azure DevOps agrega el conjunto de características de seguridad de GitHub Advanced Security a Azure Repos.

GitHub Advanced Security para Azure DevOps incluye lo siguiente:

  • Protección contra inserción del examen de secretos: compruebe si las inserciones de código incluyen confirmaciones que exponen secretos como credenciales
  • Examen de repositorio de examen de secretos: examine el repositorio y busque secretos expuestos que se hayan confirmado accidentalmente
  • Análisis de dependencias: búsqueda de vulnerabilidades conocidas en dependencias de código abierto (directas y transitivas)
  • Examen de código: use el motor de análisis estático CodeQL para identificar vulnerabilidades de aplicación de nivel de código, como la inyección de código SQL y la omisión de autenticación

Actualmente, GitHub Advanced Security para Azure DevOps solo está disponible para Azure DevOps Services y no tenemos pensado llevar este producto a Azure DevOps Server. GitHub Advanced Security para Azure DevOps solo está disponible para repositorios de Git de código.

GitHub Advanced Security para Azure DevOps funciona con Azure Repos. Si quiere usar GitHub Advanced Security con repositorios de GitHub, vea GitHub Advanced Security.

Requisitos previos

Tiene permisos asignados como miembro del grupo Administradores de la colección de proyectos. Para agregar miembros al grupo Administradores de la colección de proyectos o cambiar un permiso de nivel de colección de proyectos, vea Cambio de permisos de nivel de colección de proyectos.

Requisitos previos adicionales para agentes autohospedados

Si en la organización se usan agentes autohospedados, hay más requisitos:

URL de dominio Descripción
https://governance.dev.azure.com Para las organizaciones que usan el dominio dev.azure.com para acceder a su instancia de DevOps
https://dev.azure.com Para las organizaciones que usan el dominio dev.azure.com para acceder a su instancia de DevOps
https://advsec.dev.azure.com Para las organizaciones que usan el dominio dev.azure.com para acceder a su instancia de DevOps
https://{organization_name}.governance.visualstudio.com Para las organizaciones que usan el dominio {nombre_de_la_organización}.visualstudio.com para acceder a su instancia de DevOps
https://{organization_name}.visualstudio.com  Para las organizaciones que usan el dominio {nombre_de_la_organización}.visualstudio.com para acceder a su instancia de DevOps
https://{organization_name}.advsec.visualstudio.com Para las organizaciones que usan el dominio {nombre_de_la_organización}.visualstudio.com para acceder a su instancia de DevOps
  • Ejecute una versión compatible del entorno de ejecución de .NET (actualmente .NET 8.x). Si no hay una versión compatible en el agente, la tarea de compilación de examen de dependencias descarga .NET.

  • Asegúrese de que el paquete CodeQL está instalado en la memoria caché de herramientas del agente en el agente. Puede usar la variable enableAutomaticCodeQLInstall: true con la tarea de canalización Advanced-Security-CodeQL@1 para canalizaciones YAML o marcar la casilla Enable automatic CodeQL detection and installation para las canalizaciones clásicas. Como alternativa, para obtener instrucciones de la instalación manual, consulte Análisis de código para GitHub Advanced Security para Azure DevOps.

Habilitar GitHub Advanced Security

Puede habilitar Advanced Security a nivel de organización, proyecto o repositorio. Para acceder a cada una de las herramientas de examen y los resultados, primero debe habilitar Advanced Security. Una vez que habilite Advanced Security, se bloquean las inserciones futuras que contengan secretos en un repositorio con esta directiva habilitada y el examen de secretos del repositorio se produce en segundo plano.

Incorporación a nivel de repositorio

  1. Vaya a Configuración del proyecto para el proyecto de Azure DevOps.
  2. Seleccione Repos>Repositorios.
  3. Seleccione el repositorio para el que quiera habilitar Advanced Security.
  4. Seleccione Habilitar y Comenzar la facturación para activar Advanced Security. Aparecerá un icono de escudo en la vista de cualquier repositorio con Advanced Security habilitada.

Captura de pantalla de la habilitación de GitHub Advanced Security.

Incorporación a nivel de proyecto

  1. Vaya a Configuración del proyecto para el proyecto de Azure DevOps.
  2. Seleccione Repositorios.
  3. Seleccione la pestaña Configuración.
  4. Seleccione Habilitar todo y verá que aparece una estimación del número de confirmadores activos del proyecto.
  5. Seleccione Comenzar facturación para activar Advanced Security para cada repositorio existente del proyecto.
  6. Opcionalmente, seleccione Habilitar automáticamente Advanced Security para nuevos repositorios, de forma que los repositorios recién creados tengan habilitado Advanced Security tras la creación.

Captura de pantalla de habilitación de nivel de proyecto en Advanced Security.

Incorporación a nivel de organización

  1. Vaya a la configuración de la organización para su organización de Azure DevOps.
  2. Seleccione Repositorios.
  3. Seleccione Habilitar todo y verá que aparece una estimación del número de confirmadores activos de la organización.
  4. Seleccione Comenzar facturación para activar Advanced Security para cada repositorio existente de cada proyecto en su organización.
  5. Opcionalmente, seleccione Habilitar automáticamente Advanced Security para nuevos proyectos, de forma que los proyectos recién creados tengan habilitado Advanced Security tras la creación.

Captura de pantalla de habilitación de nivel de organización en Advanced Security.

Configuración del examen de secretos

La protección contra inserción del examen de secretos y el examen de repositorios se habilitan automáticamente al activar Advanced Security. Puede habilitar o deshabilitar la protección contra inserción de secretos desde la página de configuración del repositorio.

Captura de pantalla de habilitación de protección de inserción.

Como se ha mencionado, el examen del repositorio de el examen de secretos se inicia automáticamente al habilitar Advanced Security para un repositorio seleccionado.

Configuración del examen de dependencias

El examen de dependencias es una herramienta de análisis basada canalizaciones. Los resultados se agregan por repositorio. Se recomienda agregar la tarea de examen de dependencias a todas las canalizaciones que le gustaría examinar.

Sugerencia

Para obtener los resultados de análisis más precisos, agregue la tarea de análisis de dependencias siguiendo los pasos de compilación y/o restauración de paquetes de un proceso que compile el código que quiera analizar.

Agregue la tarea Advanced Security Dependency Scan (AdvancedSecurity-Dependency-Scanning@1) directamente al archivo de canalización de YAML o seleccione la tarea Advanced Security Dependency Scan desde el asistente de tareas.

Captura de pantalla de configuración de procedimiento de análisis de dependencias para YAML.

Configuración del examen de código

El examen de código también es una herramienta de análisis basada en canalizaciones en la que los resultados se agregan por repositorio.

Sugerencia

Se recomienda agregar la tarea de examen de código a una canalización clonada independiente de la canalización de producción principal, o bien crear una canalización. Esto se debe a que el examen de código puede ser una tarea de compilación que use más tiempo.

Agregue las tareas en el orden siguiente:

  1. Advanced Security Initialize CodeQL (AdvancedSecurity-Codeql-Init@1)
  2. Pasos de creación personalizados
  3. Advanced Security Perform CodeQL Analysis (AdvancedSecurity-Codeql-Analyze@1)

Captura de pantalla de configuración de procedimiento de análisis de código para YAML.

Además, deberá especificar qué lenguajes va a analizar en la tarea Initialize CodeQL. Se puede usar una lista separada por comas para analizar varios lenguajes a la vez. Los lenguajes admitidos son csharp, cpp, go, java, javascript, python, ruby, swift. Si usa agentes autohospedados, también puede agregar la variable enableAutomaticCodeQLInstall: true para instalar automáticamente los bits de CodeQL más recientes para el agente.

Este es un ejemplo de canalización de inicio:

trigger:
  - main

pool:
  # Additional hosted image options are available: https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/hosted#software
  vmImage: ubuntu-latest

steps:

  - task: AdvancedSecurity-Codeql-Init@1
    inputs:
      languages: "java"
      # Supported languages: csharp, cpp, go, java, javascript, python, ruby, swift
      # You can customize the initialize task: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-codeql-init-v1?view=azure-pipelines
      # If you're using a self-hosted agent to run CodeQL, use `enableAutomaticCodeQLInstall` to automatically use the latest CodeQL bits on your agent:
      enableAutomaticCodeQLInstall: true

#   Add your custom build steps here
# - Ensure that all code to be scanned is compiled (often using a `clean` command to ensure you're building from a clean state).
# - Disable the use of any build caching mechanisms as this can interfere with CodeQL's ability to capture all the necessary data during the build.
# - Disable the use of any distributed/multithreaded/incremental builds as CodeQL needs to monitor executions of the compiler to construct an accurate representation of the application.
# - For dependency scanning, ensure you have a package restore step for more accurate results.

# If you had a Maven app:
#   - task: Maven@4
#     inputs:
#       mavenPomFile: 'pom.xml'
#       goals: 'clean package'
#       publishJUnitResults: true
#       testResultsFiles: '**/TEST-*.xml'
#       javaHomeOption: 'JDKVersion'
#       jdkVersionOption: '1.17'
#       mavenVersionOption: 'Default'

# Or a general script:
#   - script: |
#       echo "Run, Build Application using script"
#       ./location_of_script_within_repo/buildscript.sh

  - task: AdvancedSecurity-Dependency-Scanning@1 # More details on this task: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-dependency-scanning-v1?view=azure-pipelines

  - task: AdvancedSecurity-Codeql-Analyze@1 # More details on this task: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-codeql-analyze-v1?view=azure-pipelines

Sugerencia

Los análisis de CodeQL para Kotlin/Swift están actualmente en versión beta. Durante la versión beta, el análisis de estos lenguajes será menos completo que el análisis de CodeQL de otros. Usa java para analizar el código escrito en Java, Kotlin o ambos. Use javascript para analizar el código escrito en JavaScript, TypeScript o ambos.

Si el lenguaje especificado es cpp, java, csharp o swift, se necesitan pasos de compilación personalizados.

Configuración de anotaciones de solicitud de incorporación de cambios

Para el examen de dependencias y el análisis de código, las anotaciones se configuran automáticamente para las solicitudes de incorporación de cambios en las que se aplica una directiva de validación de compilación con las tareas de análisis de dependencias o de análisis de código incluidas en la canalización. Para obtener más información sobre cómo configurar directivas de validación de compilación, consulte Validación de compilación.

Las anotaciones de solicitud de incorporación de cambios también requieren un examen de Advanced Security en la rama predeterminada y la rama de destino antes de examinar la rama de origen (solicitud de incorporación de cambios). Para obtener más información sobre cómo resolver alertas para ramas de solicitudes de incorporación de cambios, consulte Administración de alertas de análisis de dependencias en solicitudes de incorporación de cambios y Administración de alertas de análisis de código en solicitudes de incorporación de cambios.

Si, por cualquier motivo, debe deshabilitar Seguridad avanzada, las alertas y el estado de las alertas se conservarán en la pestaña Seguridad avanzada para la próxima vez que vuelva a habilitar Seguridad avanzada.

Pasos siguientes