Consideraciones de seguridad para plataformas de DevOps

La seguridad siempre debe ser una prioridad en las plataformas de desarrollo basadas en la nube, como Azure DevOps y GitHub. Microsoft actualiza y mantiene la seguridad de la infraestructura en la nube subyacente, pero es necesario revisar y configurar los procedimientos recomendados de seguridad para sus propias organizaciones de Azure DevOps e instancias de GitHub.

Tenga en cuenta las siguientes áreas de seguridad críticas tanto si implementa entornos mediante infraestructura como código en canalizaciones de integración continua e implementación continua (CI/CD), o si implementa código en las aplicaciones hospedadas en Azure.

Restricción del acceso a las herramientas de DevOps

Siga el principio de privilegios mínimos mediante el control de acceso basado en rol (RBAC) a través de Microsoft Entra ID. Proporcione a los usuarios y servicios la cantidad mínima de acceso a las plataformas de DevOps que necesitan para realizar sus funciones empresariales. Para más información, consulte los siguientes artículos.

Después de establecer Microsoft Entra ID como plano de administración de identidades, siga los procedimientos recomendados para administrar las asignaciones de roles de Azure DevOps con pertenencias a grupos de Microsoft Entra. Puede asignar roles de Azure DevOps a grupos de Microsoft Entra, y ajustar la pertenencia a Microsoft Entra de un usuario para cambiar o quitar su acceso a Azure DevOps.

  • Use Microsoft Entra ID administración de derechos para crear paquetes de acceso que permitan a los usuarios de Microsoft Entra acceder a los recursos necesarios para completar sus tareas.

  • También puede usar Microsoft Entra Privileged Identity Management para el acceso Just-In-Time para promover usuarios a roles de administrador de Azure DevOps durante un período de tiempo.

Administre la seguridad en Azure DevOps mediante grupos de seguridad, directivas y configuraciones a nivel de organización, proyecto u objeto de Azure DevOps. Considere la posibilidad de deshabilitar la herencia de permisos en Azure DevOps si es posible.

Restricción del acceso al repositorio y a la rama

Restrinja el acceso al repositorio, los permisos y la creación de ramas para proteger el código y los entornos de cambios no deseados o malintencionados. Restrinja el acceso a los repositorios mediante grupos de seguridad de Azure DevOps. Limite quién puede leer y actualizar el código en las ramas estableciendo permisos de rama.

Restricción del acceso y los permisos de canalización

El código malintencionado podría robar datos y secretos empresariales y dañar los entornos de producción. Implante límites de protección para evitar la implementación de código malintencionado en la canalización. Al restringir el acceso e implementar límites de protección, también puede evitar la exposición lateral a otros proyectos, canalizaciones y repositorios desde cualquier canalización en peligro.

Considere la posibilidad de seguir un enfoque incremental para proteger las canalizaciones de YAML. Para más información, consulte Planeamiento de cómo proteger las canalizaciones de YAML.

Selección del agente de DevOps en función de las necesidades de seguridad

Puede usar agentes hospedados por Microsoft o autohospedados para impulsar las canalizaciones de Azure DevOps y GitHub. Hay ventajas y desventajas con cada tipo de agente.

Con los agentes hospedados por Microsoft, no es necesario preocuparse por las actualizaciones ni el mantenimiento. Con los agentes autohospedados, tiene mayor flexibilidad para implementar límites de protección. Puede controlar el hardware del agente, el sistema operativo y las herramientas instaladas.

Consulte Agentes de Azure Pipelines para revisar las diferencias entre los tipos de agentes e identificar posibles consideraciones de seguridad.

Uso de conexiones de servicio seguras y con ámbito

Siempre que sea posible, use una conexión de servicio para implementar código de infraestructura o aplicación en un entorno de Azure. La conexión de servicio debe tener acceso de implementación limitado a recursos o grupos de recursos específicos de Azure para reducir las posibles superficies expuestas a ataques. Además, considere la posibilidad de crear conexiones de servicio independientes para entornos de desarrollo, pruebas, control de calidad y producción.

Uso de un almacén de secretos

Nunca codifique de forma rígida secretos en el código ni en la documentación auxiliar de los repositorios. Los adversarios examinan los repositorios en busca de datos confidenciales expuestos y usarlos de forma malintencionada. Configure un almacén de secretos, como Azure Key Vault, y haga referencia al almacén en Azure Pipelines para recuperar de forma segura claves, secretos o certificados. Para más información, consulte Protección de la canalización y el flujo de trabajo de CI/CD. También puede usar secretos de Key Vault en flujos de trabajo de Acciones de GitHub.

Uso de estaciones de trabajo de DevOps protegidas para compilar e implementar código

Los equipos de desarrollo y plataforma suelen tener privilegios elevados en la plataforma de Azure o en otros servicios, como Azure DevOps y GitHub. Este acceso aumenta enormemente la superficie expuesta a ataques potencial. Implemente límites de protección para proteger los puntos de conexión y las estaciones de trabajo que usa para desarrollar e implementar código.

Use estaciones de trabajo de administración seguras (SAW) protegidas para implementar los cambios en entornos de producción y de alto riesgo. Para más información, consulte Protección de puntos de conexión con Confianza cero.

Realización de exámenes y pruebas de seguridad

Tanto si implementa código de aplicación como infraestructura como código, implemente procedimientos recomendados y controles de DevSecOps en las canalizaciones. Integre la seguridad al principio del recorrido de CI/CD para evitar costosas infracciones de seguridad más adelante. Cree una estrategia para implementar análisis estáticos de código, pruebas unitarias, exámenes de secretos y exámenes de paquetes o dependencias en las canalizaciones.

Las herramientas de seguridad empresarial, como Microsoft Defender for Cloud, se pueden integrar con las herramientas de DevOps. Por ejemplo, Defender for Cloud puede identificar imágenes de contenedor vulnerables en los flujos de trabajo de CI/CD. Con Acciones de GitHub y los repositorios, use GitHub Advanced Security para el examen del código y los secretos y la revisión de dependencias.

Revise periódicamente los eventos de auditoría para controlar y reaccionar ante patrones de uso inesperados por parte de los administradores y otros usuarios. Puede filtrar y exportar los registros de auditoría de su organización de Azure DevOps, y también acceder a ellos. Para el almacenamiento a largo plazo y las consultas de registros detalladas, cree un flujo de auditoría en un área de trabajo de Log Analytics de Azure Monitor o en un sistema de administración de eventos e información de seguridad (SIEM), como Microsoft Sentinel.