Las versiones inmutables son aquellas en las que los recursos y la etiqueta de Git asociada no se pueden cambiar después de la publicación. El uso de este tipo de versión aumenta la seguridad bloqueando los ataques de la cadena de suministro. Los atacantes no pueden:
- Inserte vulnerabilidades o malware en las versiones actuales del proyecto.
- Realice cambios en los recursos y etiquetas que pueden interrumpir los flujos de trabajo del desarrollador.
Lo que protegen las versiones inmutables
Al habilitar versiones inmutables, se aplican las protecciones siguientes:
-
**Las etiquetas de Git no se pueden mover ni eliminar**: una vez publicada una versión inmutable, su etiqueta git asociada está bloqueada a una confirmación específica y no se puede cambiar ni quitar. -
**Los recursos de versión no se pueden modificar o eliminar**: todos los archivos adjuntos a la versión (como archivos binarios y archivos) están protegidos contra la modificación o eliminación.
Además, la creación de una versión inmutable genera automáticamente una atestación de versión, que es un registro criptográficamente comprobable de una versión que contiene la etiqueta de versión, el SHA de confirmación y los recursos de versión. Los consumidores pueden usar esta atestación para asegurarse de que las versiones y los artefactos que usan coinciden exactamente con las versiones publicadas de GitHub.
Nota:
Las versiones inmutables incluyen protección contra ataques de resurrección de repositorios. Incluso si elimina un repositorio y crea uno nuevo con el mismo nombre, no puede reutilizar etiquetas asociadas a versiones inmutables en el repositorio original.
Si una versión es inmutable, verás " Immutable" debajo del título en la página de la versión.
Procedimientos recomendados para publicar versiones inmutables
Se recomienda usar el siguiente flujo de trabajo para publicar una versión inmutable.
- Crear el lanzamiento como borrador.
- Adjunte todos los recursos asociados al borrador de lanzamiento.
- Publique la versión de borrador.
Esto asegura que todos los activos estén preparados antes de que la liberación se vuelva inmutable, impidiendo la necesidad de esquivar restricciones de inmutabilidad.
Pasos siguientes
Para obtener información sobre cómo habilitar versiones inmutables para tu repositorio u organización, consulta Evitar cambios en las versiones.
Para obtener información sobre cómo asegurarse de que una versión y los recursos locales no se han cambiado, consulta Comprobación de la integridad de una versión.