Protección de repositorios

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

El código fuente, el archivo YAML de la canalización y las herramientas y scripts necesarios se almacenan en un repositorio de control de versiones. Para garantizar que los cambios en el código y la canalización son seguros, se deben usar permisos y directivas de rama. También puede agregar permisos de canalización y comprobaciones a los repositorios.

Además, debe revisar el control de acceso predeterminado para los repositorios.

Debido al propio diseño de Git, la protección a nivel de rama tiene un límite. Los usuarios con acceso de inserción a un repositorio normalmente pueden crear nuevas ramas. Si usa proyectos de código abierto de GitHub, cualquier persona con una cuenta de GitHub puede bifurcar el repositorio y proponer contribuciones. Dado que las canalizaciones están asociadas a un repositorio y no a ramas específicas, debe dar por sentado que el código y los archivos YAML no son de confianza.

Horquillas

Si compila repositorios públicos desde GitHub, debe tener en cuenta su postura sobre las compilaciones de bifurcación. Las bifurcaciones son especialmente peligrosas, ya que proceden de fuera de la organización. Para proteger los productos del código aportado, tenga en cuenta las siguientes recomendaciones:

Nota:

Las siguientes recomendaciones se aplican principalmente a la creación de repositorios públicos desde GitHub.

No se deben proporcionar secretos a las compilaciones de bifurcación

De forma predeterminada, las canalizaciones están configuradas para compilar bifurcaciones, pero los secretos y los recursos protegidos no están disponibles para los trabajos de esas canalizaciones de forma predeterminada. No desactive esta última protección.

Screenshot of fork build protection UI.

Nota:

Al habilitar compilaciones de bifurcación para acceder a secretos, Azure Pipelines restringe de forma predeterminada el token de acceso usado para estas. El acceso a los recursos abiertos es más limitado que con un token de acceso normal. Para conceder a las compilaciones de bifurcación los mismos permisos que tienen las compilaciones normales, habilite la opción Hacer que las compilaciones de bifurcación tengan los mismos permisos que las compilaciones normales.

Screenshot of fork build protection UI in Azure DevOps Server 2020 and lower.

Nota:

Incluso si habilita compilaciones de bifurcación para acceder a secretos, Azure Pipelines restringe el token de acceso usado para las compilaciones de bifurcación. El acceso a los recursos abiertos es más limitado que con un token de acceso normal. No puede deshabilitar esta protección.

Considerar la posibilidad de desencadenar manualmente compilaciones de bifurcación

Puede desactivar las compilaciones automáticas de bifurcación y, en su lugar, usar comentarios de solicitud de cambios para crear manualmente estas contribuciones. Esta configuración le dará la oportunidad de revisar el código antes de desencadenar una compilación.

Usar agentes hospedados por Microsoft para compilaciones de bifurcación

No ejecute compilaciones de bifurcaciones en agentes autohospedados. Al hacerlo, proporciona de forma eficaz una ruta de acceso a las organizaciones externas para ejecutar código externo en máquinas dentro de la red corporativa. Use agentes hospedados por Microsoft siempre que sea posible. Para el agente autohospedado, use alguna forma de aislamiento de red y asegúrese de que los agentes no conservan su estado entre los trabajos.

Revisar los cambios de código

Antes de ejecutar la canalización en una solicitud de incorporación de cambios bifurcada, revise cuidadosamente los cambios propuestos y asegúrese de que se siente cómodo ejecutándolo.

La versión de la canalización YAML que ejecutará es la de la solicitud de incorporación de cambios. Por lo tanto, preste especial atención a los cambios en el código YAML y al código que se ejecuta cuando se ejecuta la canalización, como scripts de línea de comandos o pruebas unitarias.

Limitación del ámbito del token de GitHub

Al compilar una solicitud de incorporación de cambios bifurcada de GitHub, Azure Pipelines garantiza que la canalización no puede cambiar ningún contenido del repositorio de GitHub. Esta restricción se aplica solo si usa la aplicación de Azure Pipelines GitHub para integrarse con GitHub. Si usa otras formas de integración de GitHub, por ejemplo, la aplicación OAuth, la restricción no se aplica.

Ramas de usuario

Los usuarios de su organización con los permisos adecuados pueden crear nuevas ramas que contengan código nuevo o actualizado. Ese código puede ejecutarse en la misma canalización que las ramas protegidas. Además, si se cambia el archivo YAML de la nueva rama, el YAML actualizado se usará para ejecutar la canalización. Aunque este diseño permite una gran flexibilidad y autoservicio, no todos los cambios son seguros (ya sean realizados de forma malintencionada o no).

Si la canalización consume código fuente o está definida en Azure Repos, debe comprender completamente el modelo de permisos de Azure Repos. En concreto, un usuario con el permiso Crear rama a nivel de repositorio puede introducir código en el repositorio incluso si ese usuario no tiene el permiso Contribución.

Pasos siguientes

A continuación, descubra la mayor protección que ofrecen las comprobaciones en los recursos protegidos.