Recomendaciones para proteger la infraestructura compartida en Azure Pipelines

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

Los recursos protegidos en Azure Pipelines son una abstracción de la infraestructura real. Siga estas recomendaciones para proteger la infraestructura subyacente.

Uso de grupos hospedados por Microsoft

Los grupos hospedados por Microsoft ofrecen aislamiento y una máquina virtual limpia para cada ejecución de una canalización. Si es posible, use grupos hospedados por Microsoft en lugar de grupos autohospedados.

Agentes distintos para cada proyecto

Un agente solo se puede enlazar a un grupo. Es posible que quiera compartir agentes entre proyectos compartiendo el grupo con varios proyectos. En otras palabras, varios proyectos pueden ejecutar trabajos en el mismo agente, uno después de otro. Aunque esta práctica ahorra costos de infraestructura, puede permitir el movimiento lateral.

Para eliminar esa forma de movimiento lateral y evitar que un proyecto "intoxique" a un agente en otro proyecto, mantenga grupos de agentes distintos con agentes distintos para cada proyecto.

Uso de cuentas con pocos privilegios para ejecutar agentes

Aunque tentador, es peligroso ejecutar el agente bajo una identidad que pueda acceder directamente a los recursos de Azure DevOps. Esta configuración problemática es común en las organizaciones que usan Microsoft Entra ID. Si ejecuta el agente bajo una identidad respaldada por Microsoft Entra ID, puede acceder directamente a las API de Azure DevOps sin usar el token de acceso del trabajo. En su lugar, debe ejecutar el agente como una cuenta local sin privilegios, como Servicio de red.

Azure DevOps tiene un grupo que se llama engañosamente Cuentas de servicio de colección de proyectos. Por herencia, los miembros de las cuentas de servicio de colección de proyectos también son miembros de los administradores de colección de proyectos. A veces, los clientes ejecutan sus agentes de compilación mediante una identidad respaldada por Microsoft Entra ID y que es miembro de cuentas de servicio de colección de proyectos. Si los adversarios ejecutan una canalización en uno de estos agentes de compilación, pueden tomar el control de toda la organización de Azure DevOps.

También hemos visto que los agentes autohospedados se ejecutan con cuentas con privilegios elevados. A menudo, estos agentes usan cuentas con privilegios para acceder a secretos o entornos de producción. Sin embargo, si los adversarios ejecutan una canalización en peligro en uno de estos agentes de compilación, pueden acceder a esos secretos. Entonces, los adversarios pueden moverse lateralmente a través de otros sistemas que son accesibles mediante esas cuentas.

Para proteger los sistemas, use la cuenta con menos privilegios para ejecutar agentes autohospedados. Por ejemplo, use la cuenta de máquina o una identidad de servicio administrada. Permita que Azure Pipelines administre el acceso a secretos y entornos.

Minimización del ámbito de las conexiones de servicio

Las conexiones de servicio deben poder acceder únicamente a los recursos que necesitan. Si es posible, usa la federación de identidades de carga de trabajo en lugar de una entidad de servicio para la conexión de servicio de Azure. La federación de identidades de carga de trabajo utiliza Open ID Connect (OIDC), una tecnología estándar del sector, para simplificar la autenticación entre Azure y Azure DevOps; además, no utiliza secretos.

La conexión de servicio de Azure debe tener como ámbito los recursos a los que necesita acceder la conexión de servicio. Los usuarios no deberían tener amplios derechos de colaborador para toda la suscripción a Azure.

Al crear una nueva conexión de servicio de Azure Resource Manager, seleccione siempre un grupo de recursos. Asegúrese de que el grupo de recursos contenga solo las máquinas virtuales o los recursos que requiere la compilación. Del mismo modo, al configurar la aplicación de GitHub, conceda acceso solo a los repositorios que quiere compilar mediante Azure Pipelines.

Pasos siguientes

Tenga en cuenta algunas recomendaciones generales para la seguridad.