DevSecOps en Azure Kubernetes Service (AKS)

Azure Boards
Azure DevOps
Azure Monitor
Azure Pipelines
Azure Policy

Las DevSecOps, también llamadas Secure DevOps, es una práctica de DevOps que incorpora seguridad en diferentes fases de un ciclo de vida de DevOps convencional. Algunas de las ventajas de crear seguridad en las prácticas de DevOps incluyen:

  • Hacer que las aplicaciones y los sistemas sean más seguros al proporcionar visibilidad sobre las amenazas de seguridad y evitar que las vulnerabilidades lleguen a entornos implementados
  • Aumentar el conocimiento de la seguridad con los equipos de desarrollo y operación
  • Incorporar procesos de seguridad automatizados en el ciclo de vida de desarrollo de software
  • Reducir el costo para corregir mediante la búsqueda de problemas de seguridad al principio de las fases de desarrollo y diseño

Cuando DevSecOps se aplica a Azure Kubernetes Service (AKS), los distintos roles de organización pueden tener consideraciones diferentes para implementar la seguridad. Algunos ejemplos de estos distintos roles de organización son:

  • Desarrolladores que compilan aplicaciones seguras que se ejecutan en AKS
  • Ingenieros de nube que crean infraestructuras de AKS seguras
  • Distintos equipos de operaciones que pueden controlar clústeres o supervisar problemas de seguridad

Este artículo se divide en distintas fases del ciclo de vida de DevOps con consideraciones y recomendaciones para integrar controles de seguridad y procedimientos recomendados de seguridad. Esta guía incluye procesos y herramientas comunes para incorporar en canalizaciones de integración continua y entrega continua (CI/CD), optando por herramientas integradas fáciles de usar cuando sea posible.

Como requisito previo para este artículo, se recomienda revisar Compilación e implementación de aplicaciones en AKS mediante DevOps y GitOps.

Flujo del proceso

El diagrama de la arquitectura muestra el flujo desde el desarrollador hasta el usuario final y donde se puede emplear DevSecOps, DevSecOps en Azure.

Descargue un archivo Visio de esta arquitectura.

Nota

Aunque en este artículo se hace referencia a AKS y GitHub, estas recomendaciones se aplican a cualquier plataforma de CI/CD u orquestación de contenedores. Aunque los detalles de implementación pueden variar, la mayoría de los conceptos y prácticas mencionados en cada fase siguen siendo pertinentes y aplicables.

  1. Microsoft Entra ID está configurado como proveedor de identidades para GitHub. Configure la autenticación multifactor (MFA) para ayudar a proporcionar una mayor seguridad de autenticación.
  2. Los desarrolladores usan Visual Studio Code o Visual Studio con extensiones de seguridad habilitadas para analizar de forma proactiva su código en busca de vulnerabilidades de seguridad.
  3. Los desarrolladores confirman el código de aplicación en un repositorio de GitHub Enterprise que pertenece y es controlado por una empresa.
  4. GitHub Enterprise integra la seguridad automática y el análisis de dependencias a través de GitHub Advanced Security.
  5. Las solicitudes de incorporación de cambios desencadenan compilaciones de integración continua (CI) y pruebas automatizadas a través de Acciones de GitHub.
  6. El flujo de trabajo de compilación de integración continua mediante Acciones de GitHub genera una imagen de contenedor de Docker que se almacena en Azure Container Registry.
  7. Puede introducir aprobaciones manuales para implementaciones en entornos específicos, como el de producción, como parte del flujo de trabajo de entrega continua (CD) en Acciones de GitHub.
  8. Acciones de GitHub habilita la entrega continua en AKS. Use GitHub Advanced Security para detectar secretos, credenciales y otra información confidencial en los archivos de origen y de configuración de la aplicación.
  9. Microsoft Defender se usa para examinar Azure Container Registry, el clúster de AKS y Azure Key Vault en busca de vulnerabilidades de seguridad.
    1. Microsoft Defender para contenedores examina la imagen de contenedor en busca de vulnerabilidades de seguridad conocidas al cargarla en Container Registry.
    2. También puede usar Defender para contenedores con el objetivo de realizar exámenes del entorno de AKS y proporcionar protección contra amenazas en tiempo de ejecución para los clústeres de AKS.
    3. Microsoft Defender para Key Vault detecta intentos sospechosos, dañinos e inusuales de acceder a las cuentas de Key Vault.
  10. Azure Policy se puede aplicar a Container Registry y a Azure Kubernetes Service (AKS) para el cumplimiento y la aplicación de directivas. Las directivas de seguridad más comunes para Container Registry y AKS están integradas para su rápida habilitación.
  11. Azure Key Vault se usa para insertar de forma segura secretos y credenciales en una aplicación en tiempo de ejecución, lo que impide que los desarrolladores vean información confidencial.
  12. El motor de directivas de red de AKS está configurado para ayudar a proteger el tráfico entre pods de aplicación mediante directivas de red de Kubernetes.
  13. La supervisión continua del clúster de AKS se puede configurar mediante Azure Monitor y Container Insights para ingerir métricas de rendimiento y analizar los registros de seguridad y aplicaciones.
    1. Container Insights recupera métricas de rendimiento y registros de aplicaciones y clústeres.
    2. Los registros de diagnóstico y aplicaciones se extraen en un área de trabajo de Azure Log Analytics para ejecutar consultas de registro.
  14. Microsoft Sentinel, que es una solución de administración de eventos e información de seguridad (SIEM), se puede usar para ingerir y analizar aún más los registros del clúster de AKS en busca de amenazas de seguridad basadas en patrones y reglas definidos.
  15. Se pueden usar herramientas de código abierto como Zed Attack Proxy (ZAP) (ZAP) para realizar pruebas de penetración para aplicaciones web y servicios.
  16. Defender para DevOps, un servicio disponible en Defender for Cloud, permite a los equipos de seguridad administrar la seguridad de DevOps en entornos de varias canalizaciones, como GitHub y Azure DevOps.

Información general y responsabilidades de los miembros de equipo

Considere la posibilidad de administrar la complejidad de DevSecOps en implementaciones de soluciones basadas en Kubernetes para dividir los problemas. ¿Qué equipo de un entorno empresarial debe preocuparse por cada aspecto de la implementación? ¿Qué herramientas y procesos debe emplear un equipo para lograr mejor sus objetivos? En esta sección, se tratan los roles comunes de los desarrolladores, los operadores de aplicaciones (ingenieros de confiabilidad de sitios), los operadores de clúster y los equipos de seguridad.

Desarrolladores

Los desarrolladores son responsables de escribir el código de la aplicación. También son responsables de confirmar su código en el repositorio designado. Una de las responsabilidades importantes de los desarrolladores también incluye la creación y ejecución de scripts de pruebas automatizadas para garantizar que su código funciona según lo previsto e se integra sin problemas con el resto de la aplicación. También definen y escriben scripts de la creación de imágenes de contenedor como parte de la canalización de automatización.

Operadores de aplicaciones (ingenieros de confiabilidad de sitios)

La creación de aplicaciones en la nube mediante contenedores y Kubernetes puede simplificar el desarrollo, la implementación y la escalabilidad de aplicaciones. Pero estos enfoques de desarrollo también crean entornos cada vez más distribuidos que complican la administración. Los ingenieros de confiabilidad de sitios crean soluciones para automatizar la supervisión de sistemas de software de gran tamaño. Sirven como puente entre los equipos de operadores de desarrollo y clúster y ayudan a establecer y supervisar los objetivos de nivel de servicio y los presupuestos para errores. De este modo, ayudan a administrar las implementaciones de aplicaciones y a menudo escriben archivos de manifiesto de Kubernetes (YAML).

Operadores de clúster

Los operadores de clúster son responsables de configurar y administrar la infraestructura del clúster. A menudo usan procedimientos recomendados de infraestructura como código (IaC) y marcos como GitOps para aprovisionar y mantener sus clústeres. Usan varias herramientas de supervisión como Container Insights de Azure Monitor y Prometheus/Grafana para supervisar el estado general del clúster. Son responsables de aplicar revisiones, actualizaciones de clúster, permisos y control de acceso basado en roles en el clúster. En los equipos de DevSecOps, se aseguran de que los clústeres cumplan los requisitos de seguridad del equipo y trabajen con el equipo de seguridad para crear esos estándares.

Equipo de seguridad

El equipo de seguridad es responsable de desarrollar estándares de seguridad y aplicarlos. Algunos equipos pueden ser responsables de crear y seleccionar directivas de Azure Policy que se aplican en las suscripciones y los grupos de recursos que contienen los clústeres. Supervisan los problemas de seguridad y, junto con los demás equipos, garantizan que la seguridad se ponga de relieve a de cada paso del proceso de DevSecOps.

Fases del ciclo de vida de DevSecOps

Los controles de seguridad se implementan en cada fase del ciclo de vida de desarrollo de software (SDLC). Esta implementación es una parte clave de una estrategia de DevSecOps y del enfoque de desplazamiento a la izquierda.

El diagrama de la arquitectura muestra el flujo desde el desarrollador hasta el usuario final y donde se puede emplear DevSecOps, DevSecOps en Azure.

Descargue un archivo Visio de esta arquitectura.

Fase de planeamiento

Normalmente, la fase de planeamiento tiene la menor cantidad de automatización, pero tiene implicaciones de seguridad importantes que afectan significativamente a las fases posteriores del ciclo de vida de DevOps. Esta fase implica la colaboración entre los equipos de seguridad, desarrollo y operaciones. Incluir las partes interesadas de seguridad en esta fase de diseño y planeamiento garantiza que los requisitos de seguridad y los problemas de seguridad se tienen en cuenta o se mitigan adecuadamente.

Procedimiento recomendado: diseño de una plataforma de aplicaciones más segura

La creación de una plataforma hospedada en AKS más segura es un paso importante para ayudar a garantizar que la seguridad está integrada en cada capa del sistema, empezando por la propia plataforma. La plataforma puede incluir componentes internos del clúster (como agentes de seguridad y directivas en tiempo de ejecución) y componentes externos a AKS (como firewalls de red y registros de contenedor). Para obtener más información, consulte Acelerador de zona de aterrizaje de AKS, que incluye áreas de diseño importantes, como la seguridad, la identidad y la topología de red.

Procedimiento recomendado: creación del modelado de amenazas en el proceso

  • El modelado de amenazas suele ser una actividad manual que involucra a equipos de seguridad y desarrollo. Se usa para modelar y buscar amenazas dentro de un sistema para que las vulnerabilidades se puedan solucionar antes de cualquier desarrollo de código o cambios en un sistema. El modelado de amenazas puede producirse en momentos diferentes, desencadenados por eventos como un cambio significativo en el software, un cambio en la arquitectura de la solución o incidentes de seguridad.
  • Se recomienda usar el modelo de amenazas STRIDE. Esta metodología comienza con un diagrama de flujo de datos y usa las categorías de amenazas de las siglas STRIDE ("Spoofing, Tampering, Info Disclosure, Repudiation, Denial of Service, and Elevation of Privilege"; en español, suplantación de identidad, manipulación, divulgación de información, rechazo, denegación de servicio y elevación de privilegios) para permitir a los equipos identificar, mitigar y validar el riesgo. También incluye una herramienta de modelado para notar y visualizar componentes del sistema, flujos de datos y límites de seguridad. La creación de modelos de amenazas en los procesos SDLC presenta nuevos procesos y más trabajo para mantener actualizados los modelos de amenazas. Pero ayuda a garantizar que la seguridad está en vigor cuanto antes, lo que ayuda a reducir el costo potencial de tratar con problemas de seguridad encontrados en las fases posteriores de SDLC.

Procedimiento recomendado: aplicación de Azure Well Architect Framework (WAF)

  • Aplique los procedimientos recomendados del pilar de seguridad de WAF, que proporcionan instrucciones para aspectos como la administración de identidades, la seguridad de las aplicaciones, la protección de la infraestructura, la seguridad de fecha y DevOps, ya que se aplica a los entornos nativos de nube.
  • Aplique los procedimientos recomendados operativos de WAF, ya que se aplica a DevSecOps y a la supervisión de los entornos de producción.

Fase de desarrollo

El "desplazamiento a la izquierda" es un elemento clave del proceso de DevSecOps. Este proceso comienza antes incluso de que el código se confirme en un repositorio e implemente a través de una canalización. La adopción de procedimientos recomendados de codificación segura y el uso de herramientas y complementos del IDE para el análisis de código durante la fase de desarrollo puede ayudar a solucionar problemas de seguridad más pronto en el ciclo de vida de desarrollo cuando son más fáciles de corregir.

Procedimiento recomendado: aplicación de estándares de codificación seguros

  • Mediante el uso de procedimientos recomendados y listas de comprobación establecidos de codificación segura, puede ayudar a proteger el código frente a vulnerabilidades comunes, como la inyección y el diseño no seguro. La fundación OWASP publica recomendaciones de codificación segura estándar del sector que deben seguir al escribir código. Estas directrices son especialmente importantes al desarrollar aplicaciones o servicios web orientados al público.
  • Además de los procedimientos recomendados de seguridad generales, también debe examinar los procedimientos de codificación seguros para los entornos de ejecución de lenguaje de programación específicos, como Java y .NET.
  • Puede aplicar estándares de registro para evitar que la información confidencial se filtre en los registros de aplicación. Los marcos de registro más populares, como log4j y log4net, proporcionan filtros y complementos para enmascarar información confidencial, como números de cuenta o datos personales.

Procedimiento recomendado: uso de herramientas y complementos del IDE para automatizar las comprobaciones de seguridad

Los IDE más populares, como Visual Studio, Visual Studio Code, IntelliJ IDEA y Eclipse, admiten extensiones que puede usar para obtener comentarios inmediatos y recomendaciones para posibles problemas de seguridad que se podrían haber introducido al escribir código de una aplicación.

  • SonarLint es un complemento de IDE disponible para los lenguajes y entornos de desarrollo más populares. SonarLint proporciona comentarios útiles y examina automáticamente el código para detectar errores de programación comunes y posibles problemas de seguridad.
  • Otros complementos gratuitos y comerciales se centran en elementos específicos de seguridad, como las 10 principales vulnerabilidades comunes de OWASP. El complemento Synk, por ejemplo, también examina el origen de la aplicación y las dependencias de terceros y le avisa si se encuentran vulnerabilidades.
  • El complemento Static Analysis Results Interchange Format (SARIF) para Visual Studio y Visual Studio Code le permite ver fácilmente las vulnerabilidades de las herramientas de pruebas de seguridad de aplicaciones estáticas (SAST) populares de una manera intuitiva y fácil de leer frente a interpretar los resultados de los archivos de salida JSON sin procesar.

Procedimiento recomendado: establecimiento de controles en los repositorios de código fuente

  • Establezca una metodología de ramificación para que haya un uso coherente de la ramificación en toda la empresa. Las metodologías como el flujo de versión y el flujo de GitHub tienen directrices estructuradas sobre cómo se deben usar las ramas para dar soporte al equipo y al desarrollo paralelo. Estas metodologías pueden ayudar a los equipos a establecer estándares y controles para confirmaciones de código y combinaciones en el flujo de trabajo de CI/CD.
  • Algunas ramas, como main, son ramas duraderas que conservan la integridad del código fuente de la aplicación. Estas ramas deben haber establecido directivas de combinación antes de que los cambios se pudieran combinar o confirmar en ellas. Algunos de los procedimientos recomendados son los siguientes:
    • Impedir que otros desarrolladores confirmen código directamente en la rama principal.
    • Establecer un proceso de revisión por homólogos y exigir un número mínimo de aprobaciones antes de que los cambios se puedan combinar en una rama principal. Puede configurar y aplicar fácilmente estos controles con GitHub. GitHub también le permite designar grupos de aprobadores autorizados si es necesario para entornos habilitados.
  • Use enlaces de confirmación previa para comprobar si hay información confidencial en el código fuente de la aplicación y evitar que se produzca una confirmación si se encuentra un problema de seguridad.
    • Use los enlaces de confirmación previa integrados proporcionados por GitHub que se pueden configurar fácilmente para un proyecto específico. Por ejemplo, hay enlaces integrados para buscar secretos, claves privadas y credenciales, y evitar una confirmación si se encuentra alguno de estos problemas.
  • Establezca el control de acceso basado en rol en el sistema de control de versiones.
    • Cree roles bien definidos mediante el principio de privilegios mínimos. Una canalización de CI/CD es la cadena de suministro para las implementaciones de producción.
    • Aplique roles establecidos de usuario o grupo dentro de su organización. Deben crearse los roles como el de administración, desarrollador, administrador de seguridad y operador para agrupar usuarios en función de su rol y función específicos con respecto a los flujos de trabajo de CI/CD.
  • Habilite la auditoría de los flujos de trabajo para que haya transparencia y rastreabilidad para la configuración y otros cambios con respecto a las canalizaciones de CI/CD.

Procedimiento recomendado: protección de las imágenes de contenedor

  • Use imágenes ligeras con una superficie mínima del sistema operativo para reducir el área general de ataque a la superficie. Considere la posibilidad de imágenes mínimas como Alpine o incluso imágenes sin distribución que solo contengan la aplicación y su entorno de ejecución asociado. Mariner, la distribución de Linux de código abierto de Microsoft, es una distribución ligera y protegida diseñada para que AKS hospede cargas de trabajo en contenedores.
  • Use solo imágenes base de confianza al compilar los contenedores. Estas imágenes base se deben recuperar de un registro privado que se examina con frecuencia para detectar vulnerabilidades.
  • Use herramientas de desarrollo para evaluar las vulnerabilidades de imagen localmente.
    • Trivy es un ejemplo de una herramienta de código abierto que puede usar para analizar vulnerabilidades de seguridad en las imágenes de contenedor.
  • Impida el acceso o contexto del usuario raíz para una imagen. De forma predeterminada, los contenedores se ejecutan como raíz.
    • En el caso de los contenedores que necesitan una seguridad mejorada, considere la posibilidad de usar un perfil de AppArmor en el clúster de Kubernetes para ayudar a aplicar aún más la seguridad de los contenedores en ejecución.

Fase de compilación

Durante la fase de compilación, los desarrolladores trabajan con los ingenieros de confiabilidad del sitio y los equipos de seguridad para integrar exámenes automatizados de su origen de aplicación dentro de sus canalizaciones de compilación de CI. Las canalizaciones están configuradas para habilitar prácticas de seguridad como SAST, SCA y análisis de secretos mediante las extensiones y las herramientas de seguridad de la plataforma de CI/CD.

Procedimiento recomendado: realizar análisis de código estático (SAST) para encontrar posibles vulnerabilidades en el código fuente de la aplicación

  • Use las funcionalidades de análisis de código de GitHub Advanced Security para el análisis de código y CodeQL.
    • El análisis de código es una característica que se emplea para analizar el código de un repositorio GitHub en busca de vulnerabilidades de seguridad y errores de codificación. Los problemas identificados por el análisis se muestran en GitHub Enterprise Cloud.
    • Si el análisis de código encuentra una posible vulnerabilidad o error en el código, GitHub muestra una alerta en el repositorio.
    • También puede configurar las comprobaciones de estado necesarias de las reglas de ramificación para, por ejemplo, exigir que una rama de características esté actualizada con la rama base antes de combinar cualquier código nuevo. Hacer esto garantiza que tu rama siempre ha sido probada con el último código.
  • Use herramientas como kube-score para analizar los objetos de implementación de Kubernetes.
    • kube-score es una herramienta que realiza el análisis estático de código de las definiciones de objetos de Kubernetes.
    • La salida es una lista de recomendaciones de lo que puede mejorar para ayudar a que la aplicación sea más segura y resistente.

Procedimiento recomendado: realizar análisis de secretos para evitar el uso fraudulento de secretos que se han confirmado accidentalmente en un repositorio

  • Cuando el análisis de secretos está habilitado en un repositorio, GitHub examina el código de los patrones que coinciden con los secretos usados por muchos proveedores de servicios.
  • GitHub también ejecuta periódicamente un examen completo del historial de Git del contenido existente en repositorios y envía notificaciones de alerta.
    • En Azure DevOps, Defender for Cloud hace uso del análisis de secretos para detectar credenciales, secretos, certificados y otro contenido confidencial en el código fuente y la salida de la compilación.
    • El examen de secretos se puede ejecutar como parte de la extensión Azure DevOps de Microsoft Security DevOps para Azure DevOps.

Procedimiento recomendado: uso de herramientas de análisis de composición de software (SCA) para realizar un seguimiento de los componentes de código abierto en el código base y detectar las vulnerabilidades en las dependencias

  • La revisión de dependencias le permite detectar las dependencias no seguras antes de introducirlas en tu entorno y le proporciona información sobre la licencia, los elementos dependientes y la antigüedad de las dependencias. Te proporciona una visualización fácil de entender para los cambios de dependencia con un diferencial rico en la pestaña de "Archivos que cambiaron" de una solicitud de cambios.
  • El Dependabot realiza un análisis para detectar dependencias no seguras y envía alertas de Dependabot cuando se agrega una nueva advertencia a la base de datos de avisos de GitHub o cuando el gráfico de dependencias de un repositorio cambia.

Procedimiento recomendado: habilitación de exámenes de seguridad de plantillas de infraestructura como código (IaC) para minimizar las configuraciones incorrectas de la nube que llegan a entornos de producción

  • Supervisión de forma proactiva las configuraciones de recursos en la nube durante todo el ciclo de vida de desarrollo.
  • Microsoft Defender para DevOps admite repositorios de GitHub y Azure DevOps.

Procedimiento recomendado: análisis de las imágenes de carga de trabajo en los registros de contenedor para identificar vulnerabilidades conocidas

  • Defender para contenedores examina los contenedores en Container Registry y Amazon AWS Elastic Container Registry (ECR) para notificarle si hay vulnerabilidades conocidas en las imágenes.
  • Azure Policy se puede habilitar para realizar una evaluación de vulnerabilidades en todas las imágenes almacenadas en Container Registry y proporcionar información detallada sobre cada hallazgo.

Procedimiento recomendado: compilación automática de nuevas imágenes en la actualización de imagen base

  • Azure Container Registry Tasks detecta dinámicamente las dependencias de la imagen base al compilar una imagen de contenedor. Como resultado, puede detectar cuando se actualiza la imagen base de la imagen de una aplicación. Con una tarea de compilación preconfigurada, Container Registry Tasks puede recompilar automáticamente cada imagen de aplicación que haga referencia a la imagen base.

Procedimiento recomendado: uso de Container Registry, Azure Key Vault y notación para firmar digitalmente las imágenes de contenedor y configurar el clúster de AKS para permitir solo imágenes validadas.

  • Azure Key Vault almacena una clave de firma que se puede usar mediante la notación con el complemento de Key Vault de notación (azure-kv) para firmar y comprobar imágenes de contenedor y otros artefactos. Container Registry permite adjuntar estas firmas mediante los comandos de la CLI de Azure.
  • Los contenedores firmados permiten a los usuarios asegurarse de que las implementaciones se compilan a partir de una entidad de confianza y comprobar que un artefacto no se haya alterado desde su creación. El artefacto firmado garantiza la integridad y la autenticidad antes de que el usuario extraiga un artefacto en cualquier entorno, lo que evita ataques.
    • Ratify permite a los clústeres de Kubernetes comprobar los metadatos de seguridad de artefactos antes de la implementación y admitir la implementación solo aquellos que cumplan con una directiva de admisión creada por usted.

Fase de implementación

Durante la fase de implementación, los desarrolladores, los operadores de aplicaciones y los equipos de operadores de clúster colaboran para establecer los controles de seguridad adecuados para que las canalizaciones de implementación continua (CD) implementen código en un entorno de producción de forma más segura y automatizada.

Procedimiento recomendado: control del acceso y el flujo de trabajo de la canalización de implementación

  • Puede proteger las ramas importantes estableciendo reglas de protección de ramas. Estas reglas definen si los colaboradores pueden eliminar o forzar la inserción en la rama. También establecen requisitos para las inserciones en la rama, como tener que pasar comprobaciones de estado o un historial de confirmaciones lineales.
  • Mediante el uso de entornos para la implementación, puede configurar entornos con reglas de protección y secretos.
  • Puede aprovechar las ventajas de la característica de Aprobaciones y de Validaciones para controlar el flujo de trabajo de la canalización de implementación. Por ejemplo, puede exigir aprobaciones manuales de un equipo de seguridad o de operaciones antes de una implementación en un entorno de producción.

Procedimiento recomendado: protección de las credenciales de implementación

  • OpenID Connect (OIDC) permite a sus flujos de trabajo de Acciones de GitHub acceder a recursos de Azure sin tener que almacenar las credenciales de Azure como secretos de GitHub de larga duración.
  • Mediante el uso de entornos para la implementación, puede configurar entornos con reglas de protección y secretos.
    • Un enfoque basado en extracción de CI/CD con GitOps le permite cambiar las credenciales de seguridad al clúster de Kubernetes, lo que reduce la seguridad y la superficie de riesgo mediante la eliminación de credenciales que se almacenan en las herramientas de CI externas. También puede reducir las conexiones entrantes permitidas y limitar el acceso de nivel de administrador a los clústeres de Kubernetes.

Procedimiento recomendado: ejecución de pruebas dinámicas de seguridad de aplicaciones (DAST) para encontrar vulnerabilidades en la aplicación en ejecución

  • Use Acciones de GitHub en flujos de trabajo de implementación para ejecutar pruebas dinámicas de seguridad de aplicaciones (DAST).
  • Use herramientas de código abierto como ZAP para realizar pruebas de penetración que detecten vulnerabilidades comunes en las aplicaciones web.

Procedimiento recomendado: implementación de imágenes de contenedor solo desde registros de confianza

  • Use Defender para contenedores para habilitar el complemento de Azure Policy para Kubernetes.
  • Habilite Azure Policy para que las imágenes de contenedor solo se puedan implementar desde registros de confianza.

Fase operativa

Durante esta fase, las tareas de supervisión de operaciones y de supervisión de seguridad se realizan para supervisar, analizar y alertar proactivamente de posibles incidentes de seguridad. Las herramientas de observabilidad de producción como Azure Monitor y Microsoft Sentinel se usan para supervisar y garantizar el cumplimiento de los estándares de seguridad empresariales.

Procedimiento recomendado: uso de Microsoft Defender para la nube para habilitar el análisis automatizado y la supervisión de las configuraciones de producción

  • Ejecute un examen continuo para detectar el desfase en el estado de vulnerabilidad de la aplicación e implemente un proceso para aplicar revisiones y reemplazar las imágenes vulnerables.
  • Implemente una supervisión de la configuración automatizada para los sistemas operativos.
    • Use las recomendaciones de contenedores de Microsoft Defender for Cloud (en la sección Proceso y aplicaciones) para realizar exámenes de línea base de los clústeres de AKS. Reciba notificaciones en el panel de Microsoft Defender for Cloud cuando se encuentren problemas de configuración o vulnerabilidades.
    • Use Microsoft Defender for Cloud y siga sus recomendaciones de protección de red para ayudar a proteger los recursos de red que usan los clústeres de AKS.
  • Realice una evaluación de vulnerabilidades de las imágenes almacenadas en Container Registry.

Procedimiento recomendado: mantener actualizados los clústeres de Kubernetes

  • Se implementan nuevas versiones de Kubernetes a menudo. Es importante tener una estrategia de administración del ciclo de vida en vigor para asegurarse de que pueda seguir recibiendo soporte técnico. AKS es una oferta administrada que proporciona herramientas y flexibilidad para administrar este proceso de actualización. Puede usar las características de mantenimiento planeado de la plataforma AKS para tener más control sobre las ventanas de mantenimiento y las actualizaciones.
  • Los nodos de trabajo de AKS deben actualizarse con más frecuencia. Proporcionamos actualizaciones semanales del sistema operativo y del entorno de ejecución, que se pueden aplicar automáticamente a través del modo desatendido o a través de la CLI de Azure para tener más control y actualizaciones completas.

Procedimiento recomendado: uso de Azure Policy para proteger y controlar los clústeres de AKS

  • Después de instalar el complemento de Azure Policy para AKS, puede aplicar definiciones de directiva individuales o grupos de definiciones de directiva denominados iniciativas (también conocidas como conjuntos de directivas) al clúster.
  • Use directivas integradas de Azure en escenarios comunes, como el de evitar que los contenedores con privilegios se ejecuten o solo aprueben direcciones IP externas permitidas. También puede crear directivas personalizadas para casos de uso específicos.
  • Aplique definiciones de directiva al clúster y comprobar que se aplican esas asignaciones.
  • Use Gatekeeper para configurar un controlador de admisión que permita o deniegue las implementaciones en función de las reglas especificadas. Azure Policy extiende las características de Gatekeeper.
  • Proteja el tráfico entre pods de carga de trabajo mediante directivas de red en AKS.
    • Instale el motor de directiva de red y cómo crear directivas de red de Kubernetes que controlen el flujo de tráfico entre pods en AKS. Una directiva de red se puede usar para nodos y pods basados en Linux o Windows en AKS.

Procedimiento recomendado: uso de Azure Monitor para la supervisión continua y las alertas

  • Use Azure Monitor para recopilar registros y métricas de AKS. Accede a información sobre la disponibilidad y el rendimiento de cualquier aplicación e infraestructura. También proporciona acceso a las señales para supervisar el estado de la solución y detectar cualquier tipo de actividad anómala en sus primeras fases.
    • La supervisión continua con Azure Monitor se amplía a las canalizaciones de versión para dirigir o revertir las versiones en función de los datos de supervisión. Azure Monitor también ingiere registros de seguridad y puede alertar sobre cualquier actividad sospechosa.
    • Incorpore las instancias de AKS a Azure Monitor y establezca la configuración de diagnóstico del clúster.

Procedimiento recomendado: uso de Microsoft Defender for Cloud para la supervisión de amenazas activa

  • Microsoft Defender for Cloud proporciona supervisión de amenazas activa en AKS a nivel de nodo (amenazas de máquina virtual) y para los internos.
  • Defender para DevOps debe usarse para obtener una visibilidad completa, y proporciona seguridad y equipos de operadores con un panel centralizado para todas las canalizaciones de CI/CD. Esta funcionalidad es especialmente útil si usa plataformas de varias canalizaciones como Azure DevOps y GitHub o ejecuta canalizaciones en nubes públicas.
  • Defender para Key Vault se puede usar para detectar intentos inusuales y sospechosos de acceder a las cuentas de Key Vault y pueden alertar a los administradores en función de la configuración.
  • Defender para contenedores puede alertar sobre las vulnerabilidades que se encuentran en las imágenes de contenedor almacenadas en Container Registry.

Procedimiento recomendado: habilitación de la supervisión centralizada de registros y el uso de productos SIEM para supervisar las amenazas de seguridad en tiempo real

  • Conecte los registros de diagnóstico de AKS a Microsoft Sentinel para la supervisión de seguridad centralizada basada en patrones y reglas. Sentinel permite este acceso de conexión directa a través de conectores de datos.

Procedimiento recomendado: habilitación del registro de auditoría para supervisar la actividad en los clústeres de producción

  • Use los registros de actividad para supervisar las acciones en los recursos de AKS para ver todas las actividades y su estado. Determine qué operaciones se realizaron en los recursos y por quién fueron realizadas.
  • Habilite el registro de consultas de DNS aplicando la configuración documentada el ConfigMap personalizado de CoreDNS.
  • Supervise los intentos de acceso a credenciales desactivadas.
    • Integre la autenticación de usuario para AKS con Microsoft Entra ID. Cree la configuración de diagnóstico para el identificador de Microsoft Entra, enviar los registros de auditoría e inicio de sesión a un área de trabajo de Azure Log Analytics. Configure las alertas que desee (por ejemplo, cuando una cuenta desactivada intente iniciar sesión) en un área de trabajo de Azure Log Analytics.

Procedimiento recomendado: habilitación de diagnósticos en los recursos de Azure

  • Al habilitar diagnósticos de Azure en todos los recursos de la carga de trabajo, tiene acceso a los registros de plataforma que proporcionan información detallada de diagnóstico y auditoría para los recursos de Azure. Estos registros se pueden ingerir en Log Analytics o en una solución SIEM como Microsoft Sentinel para la supervisión y las alertas de seguridad.

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Autor principal:

  • Adnan Khan | Arquitecto de soluciones en la nube sénior

Otros colaboradores:

Pasos siguientes