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 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 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/{organization_name} Para las organizaciones que usan el dominio dev.azure.com para acceder a su instancia de DevOps
https://dev.azure.com/{organization_name} Para las organizaciones que usan el dominio dev.azure.com para acceder a su instancia de DevOps
https://advsec.dev.azure.com/{organization_name} 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 6.0.x). Si no hay una versión compatible en el agente, la tarea de compilación de examen de dependencias descarga .NET.

  • Instale la agrupación CodeQL en la caché de herramientas del agente mediante el script de instalación de la arquitectura, disponible en GitHub. Estos scripts requieren que la $AGENT_TOOLSDIRECTORY variable de entorno se establezca en la ubicación del directorio de herramientas del agente en el mismo, por ejemplo, C:/agent/_work/_tool. Como alternativa, puede implementar manualmente los pasos siguientes:

    1. Elija la última agrupación de versiones de CodeQL en GitHub.
    2. Descargue y descomprima la agrupación en el siguiente directorio dentro del directorio de herramientas del agente, normalmente ubicado en _work/_tool: ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. Con la versión actual de v2.16.0, la carpeta se llamaría ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/. Más información sobre el directorio de herramientas del agente.
    3. Cree un archivo vacío llamado x64.complete dentro de la carpeta ./CodeQL/0.0.0-[codeql-release-bundle-tag]. Siguiendo el ejemplo anterior, la ruta de acceso del archivo final al archivo x64.complete debería ser ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete.

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.

Screenshot of enabling 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.

Screenshot of project-level enablement for 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.

Screenshot of org-level enablement for 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.

Screenshot of enabling push protection.

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 examen más precisos, asegúrese de agregar la tarea de examen de dependencias siguiendo los pasos de compilación de una canalización que compile el código que quiera examinar.

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.

Screenshot of dependency scanning pipeline setup for 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)

Screenshot of code scanning pipeline setup for 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.

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

#   Add your custom build steps here
# - Ensure that all code to be scanned is compiled (often using a `clean` command to ensure you are 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. 

# 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 AutoBuild o personalizados. Para otros lenguajes, si AutoBuild se incluye, el paso se completa correctamente sin realizar ninguna acción.

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

Pasos siguientes