Editar

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 mediante GitHub para IaC, además de explicar cómo controlar el flujo de trabajo para que 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.

Architecture

Diagrama que muestra la arquitectura de DevSecOps para IaC.

Descargue un archivo Visio de esta arquitectura.

Flujo de datos

  1. Con el desarrollo basado en pruebas, se comprueban los cambios de código para las definiciones de infraestructura, como las plantillas de IaC, en repositorios de GitHub. Puede desarrollar pruebas unitarias, pruebas de integración y PaC al mismo tiempo para probar la calidad de IaC.
  2. Las solicitudes de incorporación de cambios (PR) desencadenan pruebas automatizadas mediante Acciones de GitHub.
  3. Debe configurar el proceso de flujo de trabajo de Acciones de GitHub para probar IaC con planes y estados de infraestructura implementados localmente.
  4. Configure Acciones de GitHub para detectar problemas de seguridad y calidad del código. A continuación, use herramientas de análisis de seguridad basadas en CodeQL de GitHub para detectar vulnerabilidades de seguridad en IaC. 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, y adapta el 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 elimina el acceso elevado y se debe registrar una incidencia en GitHub para la reconciliación del IaC. Los pasos de reconciliación y la posibilidad 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, debe generarse automáticamente una incidencia en GitHub para que se appliquen rectificaciones.

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 integración continua, pruebas automatizadas e 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 SIEM nativa de nube y de 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 le ayuda a administrar y evitar problemas de TI mediante definiciones de directivas que pueden aplicar reglas a los recursos en la red. Por ejemplo, si el proyecto está a punto de implementar una máquina virtual con una SKU no reconocida, Azure Policy le avisa del 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 infraestructura como código (IaC) es similar a DevSecOps para el código de aplicación en AKS. Pero necesita un conjunto diferente de canalizaciones y herramientas para administrar y automatizar la integración continua y entrega continua (CI/CD) 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 de Terraform y planes para desarrollar el desarrollo controlado por pruebas (TDD) para IaC. 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 de REST de Azure Resource Graph.

La directiva como código (PaC) también es un método importante para ofrecer infraestructura compatible 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 realizar una mala configuración de la infraestructura que abre puntos de ataque después de la implementación. Puede integrar herramientas de análisis de código estático para infraestructura como Synk o Aquasecurity tfsec mediante codeQL de GitHub, para examinar problemas de seguridad en el código de infraestructura. Este proceso es similar a las pruebas de seguridad de aplicaciones estáticas (SAST).

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. En caso de que necesite configuraciones manuales, eleve el acceso para el administrador designado y, a continuación, quite el acceso con privilegios elevados una vez que se modifique el cambio. Debe configurar Azure Monitor para generar un problema en GitHub para que los desarrolladores concilien los cambios. Sin embargo, se debe evitar la configuración manual si es posible.

Es importante supervisar continuamente el entorno de nube en busca de amenazas y vulnerabilidades para evitar incidentes de seguridad. Puede usar herramientas de protección contra amenazas e información de seguridad y administración de eventos (SIEM) para detectar tráfico anómalo. Estas herramientas alertan automáticamente a los administradores de seguridad y generan una incidencia en 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. Es recomendable implementar la infraestructura en la nube en una nueva zona de aterrizaje de Azure, mediante DevSecOps para IaC para 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. Originalmente lo escribieron los siguientes colaboradores.

Creadores de entidad de seguridad:

  • Vito Chin | Arquitecto de soluciones en la nube de SR
  • Yee Shian Lee | Arquitecto de soluciones en la nube de SR

Pasos siguientes