Protección de Azure Pipelines
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Azure Pipelines presenta distintos desafíos de seguridad. Aunque las canalizaciones permiten ejecutar scripts o implementar código en entornos de producción, es fundamental evitar que se conviertan en conductos para código malintencionado. El equilibrio de la seguridad con la flexibilidad y el poder necesarios para los equipos de desarrollo es esencial.
Nota:
Azure Pipelines forma parte de un conjunto de Azure DevOps Services, todo ello basado en una infraestructura segura dentro de Azure. Para obtener una comprensión completa de los conceptos de seguridad en todos los servicios de Azure DevOps, se recomienda ver los siguientes recursos:
Tradicionalmente, las organizaciones aplican la seguridad a través de bloqueos estrictos. Los entornos de código, canalizaciones y producción se enfrentan a restricciones de acceso graves. Aunque este enfoque funciona bien en pequeñas organizaciones con usuarios y proyectos limitados, las organizaciones más grandes se enfrentan a una realidad diferente. Con numerosos colaboradores que tienen acceso al código, el principio de "asumir vulneración" se convierte en fundamental. Implica el funcionamiento como si un adversario posee acceso de colaborador a los repositorios, lo que requiere una mayor vigilancia.
Para lograr los objetivos de seguridad, tenga en cuenta los siguientes puntos:
Impedir la ejecución de código malintencionado:
- Asegúrese de que las canalizaciones están configuradas para evitar la ejecución no autorizada de código malintencionado, que incluye las siguientes tareas:
- Restringir el acceso a secretos confidenciales y credenciales.
- Valide los parámetros y argumentos de entrada para evitar el comportamiento no deseado.
- Revise y audite los scripts de canalización para detectar posibles riesgos de seguridad con regularidad.
- Implemente prácticas de seguridad como:
- Use consultas con parámetros en scripts para evitar la inyección de CÓDIGO SQL.
- Escape de caracteres especiales en argumentos para evitar la inserción de comandos de shell.
- Limite los permisos para las conexiones de servicio de canalización.
- Considere la posibilidad de usar canalizaciones YAML, que proporcionan un control específico sobre la ejecución y son menos propensos a los riesgos de seguridad.
- Asegúrese de que las canalizaciones están configuradas para evitar la ejecución no autorizada de código malintencionado, que incluye las siguientes tareas:
Mitigación de la exposición lateral:
- Aísle las canalizaciones para evitar el movimiento lateral dentro de los proyectos y repositorios de la organización.
- Limite el acceso solo a los repositorios y recursos necesarios para cada canalización.
- Supervise la actividad de la canalización y configure alertas de comportamiento sospechoso.
- Revise y actualice los permisos para minimizar la exposición periódicamente.
Uso de canalizaciones YAML:
- Las canalizaciones de YAML ofrecen las siguientes ventajas en términos de seguridad:
- Defina explícitamente los pasos y las dependencias de la canalización.
- Control de versiones para definiciones de canalización.
- Borre la visibilidad de la configuración de la canalización.
- Se ha reducido el riesgo de errores de configuración accidentales.
- Revisión de código y solicitudes de incorporación de cambios:
- Trate las canalizaciones YAML como cualquier otro código.
- Aplique solicitudes de incorporación de cambios para combinar cambios para evitar pasos malintencionados.
- Use directivas de rama para configurar este proceso de revisión.
- Administración del acceso a recursos:
- Los propietarios de recursos controlan si una canalización YAML puede acceder a recursos específicos.
- Esta característica de seguridad evita ataques como robar otro repositorio.
- Las aprobaciones y comprobaciones proporcionan control de acceso para cada ejecución de canalización.
- Parámetros en tiempo de ejecución:
- Considere la posibilidad de migrar canalizaciones existentes al formato YAML para mejorar la seguridad y el mantenimiento.
- Las canalizaciones de YAML ofrecen las siguientes ventajas en términos de seguridad:
La seguridad es un proceso continuo y las evaluaciones y actualizaciones periódicas son esenciales. Las canalizaciones YAML ofrecen la mejor seguridad para Azure Pipelines.
En los artículos siguientes se describen las recomendaciones para ayudarle a desarrollar una canalización segura basada en YAML: