Compartir a través de


DevSecOps para infraestructura como código (IaC)

Microsoft Sentinel
Azure Monitor
GitHub

Ideas de solución

En este artículo se describe una idea de solución. El arquitecto de la nube puede usar esta guía para ayudar a visualizar los componentes principales de una implementación típica de esta arquitectura. Use este artículo como punto de partida para diseñar una solución bien diseñada que se adapte a los requisitos específicos de la carga de trabajo.

Esta idea de solución ilustra la canalización de DevSecOps que usa GitHub para la infraestructura como código (IaC). También se describe cómo controlar el flujo de trabajo para la excelencia operativa, la seguridad y la optimización de costos.

Terraform es una marca comercial de Hashicorp. El uso de esta marca no implica ninguna aprobación.

Arquitectura

Diagrama que muestra la arquitectura de DevSecOps para IaC.

Descargue un archivo Visio de esta arquitectura.

Flujo de datos

El siguiente flujo de datos corresponde al diagrama anterior:

  1. Use el desarrollo controlado por pruebas para comprobar los cambios de código de las definiciones de infraestructura, como las plantillas de IaC, en repositorios de GitHub. Las pruebas unitarias, las pruebas de integración y la directiva se desarrollan como código (PaC) al mismo tiempo para probar la calidad de la IaC.

  2. Las solicitudes de incorporación de cambios desencadenan pruebas unitarias automatizadas a través de Acciones de GitHub.

  3. Configure el proceso de flujo de trabajo de Acciones de GitHub para probar iaC mediante estados y planes de infraestructura implementados localmente.

  4. Configure Acciones de GitHub para buscar problemas de seguridad y calidad del código. Cree sus propias consultas de GitHub CodeQL personalizadas para analizar plantillas de IaC y detectar posibles vulnerabilidades de seguridad. Si se detecta una vulnerabilidad, GitHub envía alertas a los propietarios y mantenedores de la organización o del repositorio.

  5. La herramienta IaC aprovisiona y modifica los recursos de cada entorno mediante la adaptación del tamaño, el recuento de instancias y otras propiedades. Puede ejecutar pruebas de integración automatizadas para IaC en recursos aprovisionados.

  6. Cuando se necesita una actualización manual de la infraestructura, se eleva el acceso de administrador designado para realizar las modificaciones. Después de la modificación, se quita el acceso con privilegios elevados. También debe registrar un problema de GitHub para la conciliación de iaC. Los pasos y enfoques de conciliación dependen de las herramientas específicas de IaC.

  7. SecOps supervisa y protege continuamente contra amenazas y vulnerabilidades de seguridad. Azure Policy aplica la gobernanza de la nube.

  8. Cuando se detecta una anomalía, se registra automáticamente un problema de GitHub para que se pueda resolver.

Componentes

  • GitHub es una plataforma de hospedaje de código para la colaboración y el control de versiones. Un repositorio de control de código fuente de GitHub contiene todos los archivos de proyecto y su historial de revisiones. Los desarrolladores pueden trabajar en conjunto para contribuir, debatir y administrar el código en el repositorio.

  • Acciones de GitHub proporciona un conjunto de flujos de trabajo de compilación y versión que abarca la integración continua, las pruebas automatizadas y las implementaciones de contenedores.

  • GitHub Advanced Security proporciona características para proteger su IaC. Requiere otra licencia.

  • CodeQL proporciona herramientas de análisis de seguridad que se ejecutan en código estático para detectar errores de configuración de la infraestructura.

  • Terraform es un producto de asociado desarrollado por HashiCorp que permite la automatización de la infraestructura en Azure y en otros entornos.

  • Microsoft Defender for Cloud proporciona características unificadas de administración para la seguridad y protección contra amenazas en todas las cargas de trabajo en la nube híbrida.

  • Microsoft Sentinel es una solución de administración de eventos e información de seguridad nativa de la nube (SIEM) y respuesta automatizada de orquestación de seguridad (SOAR). Usa análisis avanzados de inteligencia artificial y seguridad para ayudar a detectar amenazas en las empresas, así como para actuar en caso de que se produzcan.

  • Azure Policy ayuda a los equipos a administrar y evitar problemas de TI mediante definiciones de directivas que pueden aplicar reglas para los recursos en la nube. Por ejemplo, si el proyecto está a punto de implementar una máquina virtual que tiene una SKU no reconocida, Azure Policy le alerta al problema y detiene la implementación.

  • Azure Monitor recopila y analiza la telemetría de la aplicación, como las métricas de rendimiento y los registros de actividad. Cuando este servicio identifica condiciones irregulares, alerta a las aplicaciones y al personal.

Detalles del escenario

Conceptualmente, DevSecOps para IaC es similar a DevSecOps para el código de aplicación en Azure Kubernetes Service (AKS). Pero necesita un conjunto diferente de canalizaciones y herramientas para administrar y automatizar la integración continua y la entrega continua para IaC.

Al adoptar IaC, es importante crear pruebas de automatización a medida que desarrolle el código. Estas pruebas reducen la complejidad de las pruebas de IaC cuando se modifica la escala de la carga de trabajo. Puede usar estados de configuración de infraestructura local como estados y planes de Terraform para el desarrollo controlado por pruebas. Estos estados de configuración emulan las implementaciones reales. Puede ejecutar pruebas de integración para IaC en implementaciones de infraestructura reales mediante la API rest de Azure Resource Graph.

PaC es otro método importante para ofrecer infraestructura que cumpla con las regulaciones y la gobernanza corporativa. Puede agregar flujos de trabajo de PaC a las canalizaciones para automatizar la gobernanza de la nube.

La protección de la infraestructura al principio de la fase de desarrollo reduce los riesgos de una infraestructura mal configurada que expone puntos de ataque después de la implementación. Puede integrar herramientas de análisis de código estático como Synk o Aqua Security tfsec mediante CodeQL de GitHub para buscar vulnerabilidades de seguridad en el código de infraestructura. Este proceso es similar a las pruebas estáticas de seguridad de aplicaciones.

Cuando la infraestructura se implementa y está operativa, los desfases de configuración en la nube pueden ser difíciles de resolver, especialmente en entornos de producción.

Configure entidades de servicio dedicadas para implementar o modificar la infraestructura en la nube para entornos de producción. A continuación, quite los demás accesos que permiten la configuración manual del entorno. Si necesita configuraciones manuales, eleva el acceso para el administrador designado y, a continuación, quita el acceso elevado después de realizar el cambio. Debe configurar Azure Monitor para generar un problema de GitHub para que los desarrolladores puedan conciliar los cambios. Evite la configuración manual si es posible.

Es importante supervisar continuamente el entorno en la nube para detectar amenazas y vulnerabilidades para ayudar a evitar incidentes de seguridad. Puede usar las herramientas de protección contra amenazas y SIEM para detectar tráfico anómalo. Estas herramientas alertan automáticamente a los administradores de seguridad y generan un problema de GitHub.

Posibles casos de uso

Forma parte de un equipo central de desarrolladores de IaC que usa una estrategia multinube para la empresa ficticia Contoso. Quiere implementar la infraestructura en la nube en una nueva zona de aterrizaje de Azure mediante DevSecOps para IaC para ayudar a garantizar la seguridad y la calidad de las implementaciones. También debería realizar un seguimiento y auditar todas las modificaciones en la infraestructura.

Colaboradores

Microsoft mantiene este artículo. Los colaboradores siguientes escribieron este artículo.

Creadores de entidad de seguridad:

  • Vito Chin | Arquitecto sénior de soluciones en la nube
  • Yee Shian Lee | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes