Recomendaciones proteger la infraestructura compartida en Azure Pipelines

Los recursos protegidos 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 auto-hospedados.

Agentes independientes 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 tras 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 "envenene" a un agente para otro proyecto, mantenga grupos de agentes independientes con agentes independientes para cada proyecto.

Uso de cuentas con pocos privilegios para ejecutar agentes

Es tentador, pero peligroso ejecutar el agente en una identidad que pueda acceder directamente a Azure DevOps recursos. Esta configuración problemática es común en las organizaciones que usan Azure Active Directory (Azure AD). Si ejecuta el agente en una identidad con el respaldo de Azure AD, puede acceder directamente Azure DevOps api sin usar el token de acceso del trabajo. En su lugar, debe ejecutar el agente como una cuenta local no privada, como Servicio de red.

Azure DevOps un grupo que se denomina de forma Project de servicio de recopilación. Por herencia, los miembros de Project de servicio de recopilación de datos también son miembros de Project de recopilación. A veces, los clientes ejecutan sus agentes de compilación mediante una identidad que está Azure AD y que es miembro de Project de servicio de recopilación. Si los adversarios ejecutan una canalización en uno de estos agentes de compilación, pueden asumir el control de toda Azure DevOps organización.

También hemos visto que los agentes auto-hospedados se ejecutan en cuentas con privilegios elevados. A menudo, estos agentes usan cuentas con privilegios para acceder a secretos o entornos de producción. Pero si los adversarios ejecutan una canalización en peligro en uno de estos agentes de compilación, pueden acceder a esos secretos. A continuación, los adversarios pueden moverse lateralmente a través de otros sistemas a los que se puede acceder a través de esas cuentas.

Para proteger los sistemas, use la cuenta con privilegios más bajos para ejecutar agentes auto hospedados. Por ejemplo, use su cuenta de máquina o una identidad de servicio administrada. Permita Azure Pipelines acceso a secretos y entornos.

Minimizar el ámbito de las conexiones de servicio

Las conexiones de servicio deben poder acceder solo a los recursos que necesitan. Por ejemplo, una conexión de servicio de Azure debe usar Azure Resource Manager y entidades de servicio que estén en el ámbito de los recursos a los que necesitan acceder. No deben tener derechos de colaborador amplios para toda la suscripción de Azure.

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

Pasos siguientes

Tenga en cuenta algunas recomendaciones generales para la seguridad.