Skip to main content

Revisión de dependencias

La revisión de dependencias le permite detectar dependencias no seguras antes de introducirlas en el entorno y proporciona información sobre las licencias, los dependientes y la antigüedad de las dependencias.

¿Quién puede utilizar esta característica?

La revisión de dependencias está disponible para los siguientes tipos de repositorio:

  • Repositorios públicos en GitHub.com
  • Repositorios propiedad de la organización en GitHub Team con GitHub Code Security habilitado

Acerca de la revisión de dependencias

La revisión de dependencias te permite entender los cambios a las dependencias y el impacto de seguridad de estos cambios en cada solicitud de cambios. Proporciona una visualización fácil de entender para los cambios de dependencia con un diferencial importante en la pestaña "Archivos cambiados" de una solicitud de incorporación de cambios. La revisión de dependencias te informa sobre:

  • Qué dependencias se agregaron, eliminaron o actualizaron junto con las fechas de lanzamiento
  • Cuántos proyectos utilizan estos componentes
  • Datos de las vulnerabilidades para estas dependencias

Para una solicitud de cambios que contiene cambios en los manifiestos de paquete o archivos de bloqueo, puedes mostrar una revisión de dependencias para ver qué ha cambiado. La revisión de dependencias incluye detalles de los cambios a las dependencias indirectas en los archivos de bloqueo, y te dice si cualquiera de las dependencias que se agregaron o actualizaron contienen vulnerabilidades conocidas.

Nota:

"Acción de revisión de dependencias" hace referencia a la acción específica que puede informar de las diferencias en una solicitud de incorporación de cambios en el contexto de GitHub Actions y añadir mecanismos de aplicación al flujo de trabajo de GitHub Actions. Para obtener más información, consulte El Acción de revisión de dependencias más adelante en este artículo.

Algunas veces puede que solo quieras actualizar la versión de una dependencia en un manifiesto y generar una solicitud de cambios. Sin embargo, si la versión actualizada de esta dependencia directa también tiene dependencias actualizadas, tu solicitud de cambios podría tener más cambios de lo que esperas. La revisión de dependencias para cada archivo de bloqueo y de manifiesto proporciona un aforma sencilla para ver lo que ha cambiado y te deja saber si cualquiera de las versiones nuevas de las dependencias contienen vulnerabilidades conocidas.

Cuando verificas las revisiones de dependencias en una solicitud de cambios y cambias cualquier dependencia que se marque como vulnerable, puedes evitar que las vulnerabilidades se agreguen a tu proyecto. Para obtener más información sobre cómo funciona la revisión de dependencias, consulte Revisar los cambios en las dependencias en un pull request.

Dependabot alerts encontrará vulnerabilidades que ya están en las dependencias, pero es mucho mejor evitar introducir posibles problemas que corregirlos más adelante. Para obtener más información sobre Dependabot alerts, consulta Dependabot alerts.

La revisión de dependencias es compatible con los mismos lenguajes de programación y ecosistemas de administración de paquetes que la gráfica de dependencias. Para obtener más información, vea Ecosistemas de paquetes que soportan el gráfico de dependencias.

Para obtener más información sobre las características de la cadena de suministro disponibles en GitHub, consulte Seguridad de la cadena de suministro.

Habilitar la revisión de dependencias

La característica de revisión de dependencias se encuentra disponible cuando habilitas la gráfica de dependencias. Para obtener más información, consulte Habilitar el grafo de dependencias.

Acerca de Acción de revisión de dependencias

La "Acción de revisión de dependencias" hace referencia a la acción específica que puede informar sobre las diferencias en una solicitud de cambios dentro del contexto de GitHub Actions. Vea dependency-review-action. Puedes usar Acción de revisión de dependencias en el repositorio para aplicar revisiones de dependencias en las solicitudes de incorporación de cambios. La acción analiza las versiones vulnerables de las dependencias introducidas por los cambios de versión del paquete en las solicitudes de incorporación de cambios y le advierte sobre las vulnerabilidades de seguridad asociadas. Esto proporciona una mejor visibilidad de los cambios en una solicitud de incorporación de cambios y ayuda a evitar que se agreguen vulnerabilidades al repositorio.

Captura de pantalla de una ejecución de flujo de trabajo que usa la acción Revisión de dependencias.

De forma predeterminada, se producirá un error en la comprobación de Acción de revisión de dependencias si detecta paquetes vulnerables. Una comprobación con errores impide combinar una solicitud de incorporación de cambios si el propietario del repositorio requiere que se supere la comprobación de revisión de dependencias. Para más información, consulta Acerca de las ramas protegidas.

La acción está disponible para todos los repositorios públicos, así como para los repositorios privados que tienen GitHub Code Security or GitHub Advanced Security habilitado.

Los propietarios de la organización pueden implementar la revisión de dependencias a escala aplicando el uso de las variables de Acción de revisión de dependencias en los repositorios de la organización. Esto implica el uso de conjuntos de reglas de repositorio para los que establecerá las variables de Acción de revisión de dependencias como un flujo de trabajo necesario, lo que significa que las solicitudes de incorporación de cambios solo se pueden combinar una vez que el flujo de trabajo pasa todas las comprobaciones necesarias. Para más información, consulta Aplicación de la revisión de dependencias en una organización.

La acción usa la API de REST Dependency Review para obtener la diferencia de los cambios de dependencia entre el commit base y el principal. Puede usar API de revisión de dependencias para obtener la diferencia de los cambios de dependencia, incluidos los datos de vulnerabilidad, entre dos confirmaciones de un repositorio. Para obtener más información, vea Puntos de conexión de la API de REST para la revisión de dependencias. La acción también tiene en cuenta las dependencias indicadas mediante API de envío de dependencias. Para obtener más información sobre API de envío de dependencias, consulta Uso de la Dependency submission API.

Nota:

La API de revisión de dependencias y la API de envío de dependencias funcionan conjuntamente. Esto significa que la API de revisión de dependencias incluirá las dependencias enviadas a través de la API de envío de dependencias.

Puede configurar Acción de revisión de dependencias para que se adapte mejor a sus necesidades. Por ejemplo, puede especificar el nivel de gravedad que hará que falle la acción, o establecer una lista de licencias permitidas o denegadas para analizar. Para obtener más información, vea Configuración de la acción de revisión de dependencias.

Prácticas recomendadas para usar conjuntamente la API de revisión de dependencias y API de envío de dependencias

La API de revisión de dependencias y el Acción de revisión de dependencias funcionan comparando los cambios en las dependencias de una solicitud de extracción con el estado de tus dependencias en el commit de cabecera de tu rama de destino.

Si tu repositorio solo tiene dependencias definidas estáticamente en uno de los ecosistemas compatibles con GitHub, la API de revisión de dependencias y la Acción de revisión de dependencias funcionan de forma coherente.

Sin embargo, es posible que quiera que las dependencias se analicen durante la compilación y luego se carguen al API de envío de dependencias. En este caso, hay algunas buenas prácticas que debes seguir para asegurarte de no introducir una condición de carrera al ejecutar los procesos de la API de revisión de dependencias y API de envío de dependencias, ya que podría provocar la ausencia de datos.

Los procedimientos recomendados que debe tomar dependerán de si usa GitHub Actions para acceder a la API de envío de dependencias API de revisión de dependencias y , o si usa acceso directo a la API.

Uso de Acciones de GitHub para acceder a la API de envío de dependencias y a la API de revisión de dependencias

Si usa GitHub Actions para acceder a API de envío de dependencias o a la API de revisión de dependencias:

  • Asegúrese de ejecutar todas las acciones para enviar dependencias en el mismo GitHub Actions flujo de trabajo que en Acción de revisión de dependencias. Esto le proporcionará control sobre el orden de ejecución y garantizará que la revisión de dependencias siempre funcione.
  • Si decide ejecutar el elemento Acción de revisión de dependencias por separado, debe hacer lo siguiente:
    • Establece retry-on-snapshot-warnings en true.
    • Establecer retry-on-snapshot-warnings-timeout para que supere ligeramente el tiempo de ejecución típico (en segundos) de la acción de envío de dependencias de ejecución más larga.

Uso del acceso directo a la API de envío de dependencias y a la API de revisión de dependencias

Si no usa GitHub Actions, y su código se basa en el acceso directo a API de envío de dependencias y a la API de revisión de dependencias:

  • Asegúrese de ejecutar el código que llama al API de envío de dependencias primero y, después, ejecute el código que llama a la API de revisión de dependencias.
  • Si decide ejecutar en paralelo el código de API de envío de dependencias y la API de revisión de dependencias, debe implementar una lógica de reintento y tener en cuenta lo siguiente:
    • Cuando falten instantáneas en cualquiera de los lados de la comparación, verá una explicación para eso en el encabezado x-github-dependency-graph-snapshot-warnings (como una cadena codificada en base64). Por lo tanto, si el encabezado no está vacío, debe considerar la posibilidad de volver a intentarlo.
    • Implementación de una lógica de reintento con reintentos de retroceso exponencial.
    • Implemente un número razonable de reintentos para compensar el entorno de ejecución típico del código de envío de dependencia.

Lectura adicional