Protección de Azure Pipelines

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

Azure Pipelines plantea desafíos de seguridad únicos. Puede usar una canalización para ejecutar scripts o implementar código en entornos de producción. Pero quiere asegurarse de que las canalizaciones de CI/CD no se conviertan en vías para ejecutar código malintencionado. También quiere asegurarse de que solo se implemente el código deseado. La seguridad debe equilibrarse con la flexibilidad y la capacidad que necesitan los equipos para ejecutar sus propias canalizaciones.

Nota:

Azure Pipelines es uno de los servicios de una colección de Azure DevOps Services, todos creados sobre la misma infraestructura segura de Azure. Para comprender los conceptos principales en torno a la seguridad de todos los servicios de Azure DevOps Services, consulte Introducción a la protección de datos de Azure DevOps e Identidad y seguridad de Azure DevOps.

Tradicionalmente, las organizaciones implementaban la seguridad mediante confinamientos draconianos. El código, las canalizaciones y los entornos de producción tenían restricciones graves en el acceso y el uso. En pequeñas organizaciones con unos pocos usuarios y proyectos, esta postura era relativamente fácil de administrar. Sin embargo, no es el caso en organizaciones más grandes. Cuando muchos usuarios tienen acceso de colaborador al código, uno debe "asumir la infracción". Asumir una infracción significa comportarse como si un adversario tuviera acceso como colaborador a algunos de los repositorios (si no a todos).

El objetivo en este caso es evitar que ese adversario ejecute código malintencionado en la canalización. El código malintencionado puede robar secretos o dañar los entornos de producción. Otro objetivo es evitar la exposición lateral a otros proyectos, canalizaciones y repositorios de la canalización en peligro.

Las canalizaciones YAML ofrecen la mejor seguridad para Azure Pipelines. A diferencia de las canalizaciones de compilación y versión clásicas, en las canalizaciones YAML:

  • Se puede revisar el código. Las canalizaciones YAML no son diferentes de cualquier otro fragmento de código. Puede evitar que actores malintencionados introduzcan pasos malintencionados en las canalizaciones aplicando el uso de solicitudes de incorporación de cambios para combinar cambios. Las directivas de rama facilitan la configuración.
  • Se proporciona la administración del acceso a los recursos. Los propietarios de recursos deciden si una canalización YAML puede acceder a un recurso o no. Esta característica de seguridad controla ataques como el robo de otro repositorio. Las aprobaciones y comprobaciones proporcionan control de acceso para cada ejecución de canalización.
  • Se admiten parámetros en tiempo de ejecución. Los parámetros en tiempo de ejecución ayudan a evitar una serie de problemas de seguridad relacionados con variables, como la inserción de argumentos.

En esta serie de artículos se describen las recomendaciones que le ayudarán a crear una canalización segura de CI/CD basada en YAML. También se describen los lugares en los que puede elegir entre seguridad y flexibilidad. En la serie también se supone que está familiarizado con Azure Pipelines, las construcciones de seguridad principales de Azure DevOps y Git.

Temas tratados: