DevSecOps en Azure Kubernetes Service (AKS)
DevSecOps, también denominado Secure DevOps, se basa en la práctica de DevOps mediante la incorporación de seguridad en distintas fases de un ciclo de vida de DevOps tradicional. 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
- Aumento del conocimiento de la seguridad con los equipos de desarrollo y operaciones
- Incorporación de procesos de seguridad automatizados al ciclo de vida de desarrollo de software
- Reducción del 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 en la nube que crean una infraestructura segura de AKS
- Varios 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 insertar 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 estén disponibles.
Como requisito previo para este artículo, se recomienda revisar Compilación e implementación de aplicaciones en AKS mediante DevOps y GitOps.
Flujo de proceso
Descargar un archivo de 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 o 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.
- Microsoft Entra ID está configurado como proveedor de identidades para GitHub. Configure la autenticación multifactor (MFA) para ayudar a proporcionar seguridad de autenticación adicional.
- Los desarrolladores usan Visual Studio Code o Visual Studio con extensiones de seguridad habilitadas para analizar de forma proactiva su código para detectar vulnerabilidades de seguridad.
- Los desarrolladores confirman el código de aplicación en un repositorio de GitHub Enterprise de propiedad corporativa y regido.
- GitHub Enterprise integra la seguridad automática y el examen de dependencias a través de Advanced Security de GitHub.
- Las solicitudes de incorporación de cambios desencadenan compilaciones de integración continua (CI) y pruebas automatizadas a través de Acciones de GitHub.
- El flujo de trabajo de compilación de CI a través de Acciones de GitHub genera una imagen de contenedor de Docker que se almacena en Azure Container Registry.
- Puede introducir aprobaciones manuales para implementaciones en entornos específicos, como producción, como parte del flujo de trabajo de entrega continua (CD) en Acciones de GitHub.
- Acciones de GitHub habilita cd en AKS. Use Advanced Security de GitHub para detectar secretos, credenciales y otra información confidencial en los archivos de origen y configuración de la aplicación.
- Microsoft Defender se usa para examinar Azure Container Registry, el clúster de AKS y Azure Key Vault para detectar vulnerabilidades de seguridad.
- Microsoft Defender for Containers examina la imagen de contenedor para detectar vulnerabilidades de seguridad conocidas al cargarla en Container Registry.
- También puede usar Defender for Containers para realizar exámenes del entorno de AKS y proporcionar protección contra amenazas en tiempo de ejecución para los clústeres de AKS.
- Microsoft Defender para Key Vault detecta intentos peligrosos e inusuales y sospechosos de acceder a las cuentas del almacén de claves.
- Azure Policy se puede aplicar a Container Registry y Azure Kubernetes Service (AKS) para el cumplimiento y la aplicación de directivas. Las directivas de seguridad comunes para Container Registry y AKS están integradas para la habilitación rápida.
- Azure Key Vault se usa para insertar secretos y credenciales de forma segura en una aplicación en tiempo de ejecución, separando la información confidencial de los desarrolladores.
- 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.
- 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 registros de seguridad y aplicaciones.
- Container Insights recupera métricas de rendimiento y registros de aplicaciones y clústeres.
- Los registros de diagnóstico y aplicación se extraen en un área de trabajo de Azure Log Analytics para ejecutar consultas de registro.
- 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 para cualquier amenaza de seguridad basada en patrones y reglas definidos.
- Open-Source herramientas como Zed Attack Proxy (ZAP) (ZAP) se pueden usar para realizar pruebas de penetración para aplicaciones web y servicios.
- 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 del equipo
Considere la posibilidad de administrar la complejidad de DevSecOps en implementaciones de soluciones basadas en Kubernetes como una separación de problemas. ¿Qué equipo de un entorno empresarial debe preocuparse por cada aspecto de la implementación? ¿Qué herramientas y procesos deben emplear un equipo para lograr mejor sus objetivos? En esta sección, se describen 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 para 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 scriptan 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 grandes. 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 de errores. De este modo, ayudan a administrar 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 y marcos de trabajo de infraestructura como código (IaC), como GitOps , para aprovisionar y mantener sus clústeres. Usan varias herramientas de supervisión como Azure Monitor Container Insights 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 rol en el clúster. En los equipos de DevSecOps, garantizan 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 Azure Policy que se aplica 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 lleve a la vanguardia 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.
Descargar un archivo de Visio de esta arquitectura.
Fase del plan
Normalmente, la fase de plan 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. La inclusión de las partes interesadas en la 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 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 el sistema en cada nivel, 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 AKS en una zona de aterrizaje de aplicaciones, que incluye áreas de diseño críticas, como seguridad, identidad y topología de red.
Procedimiento recomendado: creación de modelos de amenazas en el proceso
- El modelado de amenazas suele ser una actividad manual que implica 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 de software, un cambio arquitectónico de soluciones 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 Mnemonic (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 los modelos de amenazas actualizados. Pero ayuda a garantizar que la seguridad está en vigor temprano, lo que ayuda a reducir el costo potencial de tratar los problemas de seguridad encontrados en las fases posteriores del 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 fechas y DevOps, ya que se aplica a 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
"Desplazamiento a la izquierda" es un inquilino clave de la mentalidad de DevSecOps. Este proceso comienza antes de que el código se confirme incluso 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 ide para el análisis de código durante la fase de desarrollo pueden ayudar a solucionar problemas de seguridad anteriormente 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 de codificación segura establecidos y listas de comprobación, puede ayudar a proteger el código frente a vulnerabilidades comunes, como la inyección y el diseño no seguro. La base OWASP publica recomendaciones de codificación segura estándar del sector que debe adoptar 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 los estándares de registro para proteger la información confidencial de que se filtren 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 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 podría haber introducido al escribir código de aplicación.
- SonarLint es un complemento IDE disponible para los lenguajes y entornos de desarrollador más populares. SonarLint proporciona comentarios valiosos y examina automáticamente el código para detectar errores de programación comunes y posibles problemas de seguridad.
- Otros complementos comerciales y gratuitos se centran en elementos específicos de seguridad, como las 10 vulnerabilidades más comunes de OWASP. El complemento Synk , por ejemplo, también examina el origen de la aplicación y las dependencias de terceros y le alerta si se encuentran vulnerabilidades.
- El complemento Formato de intercambio de resultados de análisis estáticos (SARIF) para Visual Studio y Visual Studio Code le permite ver fácilmente las vulnerabilidades de las herramientas populares static Application Security Testing (SAST) 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 bifurcación para que haya un uso coherente de la bifurcació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 admitir el desarrollo paralelo y el equipo. Estas metodologías pueden ayudar a los equipos a establecer estándares y controles para las confirmaciones de código y las combinaciones en el flujo de trabajo de CI/CD.
- Algunas ramas, como main, son ramas de larga duración 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 puedan combinar o confirmar en ellas. Algunos procedimientos recomendados incluyen:
- Impedir que otros desarrolladores confirmen código directamente en la rama principal.
- Establezca un proceso de revisión del mismo nivel y requiera un número mínimo de aprobaciones antes de que los cambios se puedan combinar con 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 cerrados.
- Use enlaces previos a la confirmación 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 pregenerados para buscar secretos, claves privadas y credenciales, e impedir una confirmación si se encuentra alguno de estos problemas.
- Establezca el control de acceso basado en rol dentro del 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 de usuario o grupo establecidos dentro de su organización. Los roles como Administrador, Desarrollador, Administrador de seguridad y Operador deben crearse para agrupar individuos 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 global de ataque a la superficie. Considere la posibilidad de crear 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 deben recuperarse 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 dentro de las imágenes de contenedor.
- Impedir el acceso o el 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 herramientas y extensiones de seguridad de la plataforma 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 Seguridad avanzada de GitHub para el análisis de código y CodeQL.
- El análisis de código es una característica que se usa para analizar el código en un repositorio de GitHub para buscar vulnerabilidades de seguridad y errores de codificación. Los problemas identificados por el análisis se muestran en GitHub Enterprise Cloud.
- Si el examen de código encuentra una posible vulnerabilidad o error en el código, GitHub muestra una alerta en el repositorio.
- También puede configurar reglas de rama para las comprobaciones de estado necesarias, por ejemplo, para exigir que una rama de características esté actualizada con la rama base antes de combinar cualquier código nuevo. Esta práctica garantiza que la rama siempre se haya probado con el código más reciente.
- 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 examen de secretos está habilitado para 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 de contenido existente en repositorios y envía notificaciones de alerta.
- Para Azure DevOps, Defender for Cloud usa el 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 análisis de secretos se puede ejecutar como parte de la extensión Microsoft Security DevOps para Azure DevOps.
Procedimiento recomendado: usar 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 dependencias no seguras antes de introducirlas en el entorno y proporciona información sobre las licencias, los dependientes y la antigüedad de las dependencias. Proporciona una visualización fácil de entender de los cambios de dependencia con una diferencia enriquecida en la pestaña "Archivos cambiados" de una solicitud de incorporación de cambios.
- Dependabot realiza un examen para detectar dependencias no seguras y envía alertas de Dependabot cuando se agrega un nuevo aviso a la base de datos de asesoramiento de GitHub o cuando cambia el gráfico de dependencias de un repositorio.
Procedimiento recomendado: habilite exámenes de seguridad de plantillas de infraestructura como código (IaC) para minimizar las configuraciones incorrectas de la nube que alcanzan los entornos de producción.
- Supervise proactivamente 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: examen de las imágenes de carga de trabajo en registros de contenedor para identificar vulnerabilidades conocidas
- Defender for Containers 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 búsqueda.
Procedimiento recomendado: crear automáticamente nuevas imágenes en la actualización de imágenes base
- Azure Container Registry Tasks detecta dinámicamente las dependencias de la imagen base cuando compila 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, las tareas de Container Registry pueden volver a generar 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 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 comprueban que un artefacto no se ha 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 ayuda a evitar ataques.
- La ratificación permite a los clústeres de Kubernetes comprobar los metadatos de seguridad de artefactos antes de la implementación y admitir solo para la implementación aquellos que cumplan con una directiva de admisión que cree.
Fase de implementación
Durante la fase de implementación, los desarrolladores, los operadores de aplicaciones y los equipos de operadores de clúster trabajan conjuntamente para establecer los controles de seguridad adecuados para las canalizaciones de implementación continua (CD) para implementar código en un entorno de producción de una manera más segura y automatizada.
Procedimiento recomendado: control del acceso y el flujo de trabajo de la canalización de implementación
- Puede proteger 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 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 la característica Aprobaciones y puertas para controlar el flujo de trabajo de la canalización de implementación. Por ejemplo, puede requerir aprobaciones manuales de un equipo de seguridad o operaciones antes de una implementación en un entorno de producción.
Procedimiento recomendado: credenciales de implementación seguras
- OpenID Connect (OIDC) permite que los flujos de trabajo de acción de GitHub accedan a los recursos de Azure sin necesidad de 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 de almacenamiento 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 buscar 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 para detectar vulnerabilidades comunes de aplicaciones web.
Procedimiento recomendado: implementación de imágenes de contenedor solo desde registros de confianza
- Use Defender for Containers 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 de funcionamiento
Durante esta fase, las tareas de supervisión de operaciones y supervisión de seguridad se realizan para supervisar, analizar y alertar proactivamente sobre 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 de la empresa.
Procedimiento recomendado: uso de Microsoft Defender para la nube para habilitar el examen 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 implementar un proceso para aplicar revisiones y reemplazar las imágenes vulnerables.
- Implemente la supervisión automatizada de la configuración para sistemas operativos.
- Use recomendaciones de contenedor 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 una notificación 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 para las imágenes almacenadas en Container Registry.
- Implemente exámenes continuos para ejecutar imágenes en Container Registry habilitando Defender for Containers.
Procedimiento recomendado: Mantener actualizados los clústeres de Kubernetes
- Las versiones de Kubernetes se ejecutan con frecuencia. Es importante tener una estrategia de administración del ciclo de vida en vigor para asegurarse de que no está detrás y fuera del 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 obtener 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 denominadas iniciativas (también denominadas conjuntos de directivas) al clúster.
- Use directivas integradas de Azure para escenarios comunes, como impedir 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 compruebe que se aplican esas asignaciones.
- Use Gatekeeper para configurar un controlador de admisión que permita o deniega las implementaciones en función de las reglas especificadas. Azure Policy amplía Gatekeeper.
- Proteja el tráfico entre pods de carga de trabajo mediante directivas de red en AKS.
- Instale el motor de directivas de red y cree directivas de red de Kubernetes para controlar el flujo de tráfico entre pods en AKS. La directiva de red se puede usar para los pods y nodos basados en Windows o basados en Linux 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. Obtiene información sobre la disponibilidad y el rendimiento de la aplicación y la infraestructura. También proporciona acceso a las señales para supervisar el estado de la solución y detectar la actividad anómala temprano.
- La supervisión continua con Azure Monitor se extiende a las canalizaciones de versión para las versiones de puerta o reversión basadas en los datos de supervisión. Azure Monitor también ingiere registros de seguridad y puede alertar sobre la actividad sospechosa.
- Incorpore las instancias de AKS a Azure Monitor y configure las opciones 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 en el nivel de nodo (amenazas de máquina virtual) y para los internos.
- Defender para DevOps debe usarse para una visibilidad completa y proporciona a los equipos de seguridad y operadores 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 del almacén de claves y puede alertar a los administradores en función de la configuración.
- Defender for Containers puede alertar sobre las vulnerabilidades que se encuentran en las imágenes de contenedor almacenadas en Container Registry.
Procedimiento recomendado: habilite la supervisión centralizada de registros y use 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 sin problemas 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 registros de actividad para supervisar acciones en recursos de AKS para ver toda la actividad y su estado. Determine qué operaciones se realizaron en los recursos y por quién.
- Habilite el registro de consultas DNS aplicando la configuración documentada en el configMap personalizado de CoreDNS.
- Supervise los intentos de acceder a las credenciales desactivadas.
- Integre la autenticación de usuario para AKS con Microsoft Entra ID. Cree la configuración de diagnóstico para microsoft Entra ID y envíe los registros de auditoría e inicio de sesión a un área de trabajo de Azure Log Analytics. Configure las alertas deseadas (por ejemplo, cuando una cuenta desactivada intenta iniciar sesión) dentro de 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 | Sr. Arquitecto de soluciones en la nube
Otros colaboradores:
- Ayobami Ayodeji | Administrador de programas 2
- Ahmed Bham | Sr. Arquitecto de soluciones en la nube
- Chad Kittel | Ingeniero principal de software: Patrones y prácticas de Azure
- John Poole | Sr. Arquitecto de soluciones en la nube
- Bahram Rushenas | Arquitecto de soluciones sr.
- Abed Sau | Sr. Arquitecto de soluciones en la nube
Pasos siguientes
- Microsoft Defender for Cloud
- Protección de DevOps
- Seguridad en DevOps (DevSecOps)
- Seguridad Avanzada de GitHub
- GitOps