Zpedia 

/ ¿Qué es la seguridad IaC?

¿Qué es la seguridad IaC?

La seguridad de infraestructura como código (IaC) es la incorporación de una cobertura de seguridad en la nube consistente y escalable que ayuda a detectar errores de configuración en el código en las primeras etapas del ciclo de vida del desarrollo de software para evitar vulnerabilidades en el tiempo de ejecución. Permite a las organizaciones aplicar medidas de seguridad en las plantillas IaC a lo largo de su ciclo de vida, en depósitos de código, herramientas de integration/entrega continua (CI/CD) e, incluso, en el IDE del desarrollador.

¿Por qué es importante la seguridad de la infraestructura como código?

Los requisitos comerciales y la adopción de DevOps hacen que las aplicaciones se entreguen e implementen más rápidamente que nunca. Esta tendencia puede tener un efecto negativo tanto en el ámbito del cumplimiento como en el de la seguridad, donde las regulaciones y las ciberamenazas están en constante evolución.

Cuando los desarrolladores desconocen los requisitos de cumplimiento (o estos requisitos son inaccesibles), se pueden introducir vulnerabilidades en el entorno de producción. Las organizaciones necesitan combatir estas vulnerabilidades cerrando la brecha entre los equipos de seguridad y de DevOps a medida que la responsabilidad y la rendición de cuentas por la seguridad pasan rápidamente hacia los ingenieros de DevOps.

El problema surge de la dependencia de procesos manuales y herramientas aisladas que no pueden seguir el ritmo de la velocidad de desarrollo y los ciclos de lanzamiento continuos. Debe brindar a sus desarrolladores una plataforma colaborativa y sin fricciones que les permita identificar y solucionar problemas rápidamente para que puedan implementar políticas de seguridad y cumplimiento consistentes, sin sacrificar la velocidad.

La seguridad de IaC debe:

  • Analizar el código en busca de errores de configuración, vulnerabilidades e implementaciones inseguras que infrinjan los estándares de seguridad
  • Comparar las comprobaciones de configuración con las mejores prácticas de seguridad y los controles de cumplimiento
  • Alertar y guiar a ingenieros/desarrolladores sobre procesos de corrección e implementaciones seguras
  • Aplicar las medidas de seguridad rechazando las solicitudes de extracción y compilaciones CI/CD con vulnerabilidades críticas directamente dentro de las herramientas que utilizan y bloqueando posibles infracciones cuando sea relevante

Antes de analizar más a fondo la importancia de la seguridad IaC, veamos exactamente qué es IaC y por qué es importante para las operaciones modernas.

¿Qué es la infraestructura como código?

La infraestructura como código (IaC) es un código descriptivo, comúnmente escrito en markup (JSON, YAML, etc.) o lenguajes propietarios (por ejemplo, Terraform HCL), utilizado para aprovisionar y administrar configuraciones de recursos de infraestructura en la nube. La infraestructura como código proporciona mayor productividad y agilidad, reduce el error humano, proporciona estandarización para la implementación y mantiene el control de versiones de la configuración de la infraestructura.

Las herramientas IaC tienen muchos formatos: desde plataformas de gestión de infraestructura dedicadas hasta herramientas de gestión de configuración de código abierto. Los usuarios disponen de una gran cantidad de opciones disponibles. Algunas de las opciones más populares incluyen HashiCorp Terraform, AWS CloudFormation y Azure Resource Manager.

Beneficios de IaC

IaC trae consigo una serie de ventajas que se centran principalmente en la flexibilidad y la velocidad. Le permite:

  • Aprovisionar y administrar recursos en la nube de forma rápida y sencilla
  • Automatizar los procesos de implementación codificando la infraestructura de la nube
  • Escalar la infraestructura en virtud de la nube

Estos beneficios eliminan la necesidad de una configuración manual que consume mucho tiempo y reducen el riesgo de error humano. Además, permiten a los ingenieros implementar el control de versiones, lo que habilita equipos de DevOps (veamos esto con un poco más de detalle).

¿Por qué es importante IaC para DevOps?

IaC permite a los equipos de TI administrar y aprovisionar centros de datos a través de archivos escritos. Esto no sólo reduce el coste de crear y ejecutar aplicaciones, sino que también facilita compartir datos entre equipos y automatizar la escritura de scripts, lo que aligera la carga de los equipos de DevOps cuando tienen la tarea de crear aplicaciones en la nube.

Además, IaC permite a los equipos de DevOps aprovisionar y ejecutar una multitud de entornos de prueba, y permite a los desarrolladores ser más diversos en el uso del lenguaje si es necesario. Con esta flexibilidad adicional, estos equipos pueden concentrarse en crear, probar y ejecutar aplicaciones de alta calidad en menos tiempo y a un menor coste.

Sin embargo, por la misma razón, la IaC también puede hacer que la infraestructura sea más vulnerable.

¿Qué riesgos de seguridad están asociados con IaC?

IaC ofrece ventajas operativas, como el aprovisionamiento rápido de infraestructuras de TI con un enfoque declarativo en lugar de un enfoque imperativo. Sin embargo, su impacto en la seguridad presenta un desafío importante debido a su potencial impacto sobre los recursos.

Si se configura incorrectamente de forma manual un único recurso, el alcance del error se limita a ese recurso. Cometer un error en el código que puede usarse para aprovisionar automáticamente 100 recursos o más presenta un riesgo de seguridad mucho mayor.

Lograr una seguridad IaC integral es un desafío para las organizaciones. Puede traer consigo muchas ventajas, pero también puede crear vulnerabilidades peligrosas.

5 riesgos de IaC

La infraestructura como código puede dejar a su organización en peligro de:

  • Una amplia superficie de ataque: las configuraciones incorrectas de IaC pueden ampliar la superficie de ataque (por ejemplo, configuraciones incorrectas del grupo de seguridad que dejan activos expuestos inadvertidamente a Internet).
  • Exposición de datos: las plantillas IaC podrían contener vulnerabilidades y configuraciones predeterminadas no seguras que podrían provocar la exposición de datos (por ejemplo, secretos integrados en el código de Terraform que se verifica en el control de origen).
  • Privilegios excesivos: los desarrolladores suelen usar cuentas privilegiadas para aprovisionar aplicaciones en la nube y los recursos de infraestructura subyacentes, lo que puede generar acceso no autorizado a datos confidenciales o una posible infracción.
  • Infracciones de cumplimiento: las organizaciones deben cumplir una serie de estándares regulatorios, como RGPD, HIPAA, PCI DSS y SOC2. Si las políticas de protección basadas en estos estándares no se aplican en el proceso de IaC, pueden producirse fallos de cumplimiento.
  • Fricción en equipos multifuncionales: los desarrolladores están acelerando la implementación para entregar productos de calidad con plazos ajustados. Por otro lado, sus contrapartes en materia de seguridad tienen poca visibilidad del código y poco control sobre los cambios realizados. Como tal, aplicar pautas de seguridad, ya sea basadas en el cumplimiento normativo, las mejores prácticas o la política de la empresa, se convierte en un verdadero desafío sin cerrar la brecha entre DevOps y SecOps.

¿Cómo funciona la seguridad IaC?

La seguridad de IaC adopta un enfoque de “desplazamiento a la izquierda” para proteger el código. Es decir, los desarrolladores e ingenieros de DevOps reciben comentarios de seguridad sobre su código en una etapa anterior del proceso. La seguridad IaC brinda a los desarrolladores dicha visibilidad mediante:

  • Análisis de plantillas IaC antes de enviarlas al control de código fuente
  • Configuraciones de evaluación comparativa
  • Identificación de configuraciones incorrectas, vulnerabilidades e infracciones de políticas

Con estos procesos implementados, los equipos de SecOps reciben notificaciones inmediatas sobre cualquier problema que deba solucionarse antes de implementar una aplicación.

Mejores prácticas para la seguridad de IaC

A continuación se presentan algunas de las mejores prácticas de seguridad para IaC que se pueden integrar fácilmente en el ciclo de vida del desarrollo:

Obtenga visibilidad del inventario de activos

Durante las operaciones de IaC, debe identificar, etiquetar, supervisar y mantener un inventario de los activos implementados. Los recursos no etiquetados deben ser supervisados cuidadosamente ya que son difíciles de rastrear y provocan desviaciones. Cada vez que se retiran los recursos, se debe eliminar su configuración asociada y también se deben proteger y eliminar los datos.

Identificar y corregir la deriva ambiental

Lo ideal es que las configuraciones en todos los entornos de los desarrolladores sean uniformes. Sin embargo, a veces los propietarios de aplicaciones necesitan realizar modificaciones en sus aplicaciones y en la infraestructura subyacente. Sin una supervisión o herramientas adecuadas, la acumulación descontrolada de estos factores provoca una desviación de la configuración que puede dejar la infraestructura expuesta y crear brechas en la seguridad y el cumplimiento.

Activos codificados seguros

Datos confidenciales como claves secretas, claves privadas, claves SSH, claves de acceso/secretas y las claves API codificadas en IaC pueden proporcionar un acceso fácil a los servicios u operaciones subyacentes y ayudar a los atacantes a moverse lateralmente. Tener credenciales expuestas que se propagan a través del código IaC, que está comprometido con el control de origen (por ejemplo, GitHub), puede suponer un gran riesgo para las organizaciones.

Cuentas de desarrollador seguras

Las cuentas de los desarrolladores deben estar protegidas contra los atacantes. Es importante fortalecer y supervisar las cuentas de los desarrolladores, rastrear los cambios en las configuraciones de IaC y verificar que los cambios estén autorizados y sean intencionales. Los cambios no autorizados pueden provocar alteraciones en la configuración o la plantilla de IaC que pueden generar una filtración de código.

Restringir el acceso a los entornos

Los equipos de seguridad necesitan tener un único punto de control que permita la gestión consistente de cuentas privilegiadas, credenciales y secretos en cada uno de los entornos de desarrollo y computación. Les permite gobernar el uso actual y futuro de credenciales privilegiadas, detectar problemas de configuración de acceso con el contexto requerido, dimensionar correctamente el acceso a la identidad y los permisos, y aplicar de manera consistente políticas de privilegios mínimos.

Aplique barreras de protección

Los equipos de seguridad deben implementar políticas de protección nativas de la nube que incorporen controles para proteger las infraestructuras multinube de desviaciones de configuración y alertar sobre infracciones, implementar políticas de seguridad consistentes durante la compilación y el tiempo de ejecución, y brindar orientación clara a los desarrolladores sobre cómo resolver vulnerabilidades y riesgos. Por ejemplo, es posible desear que la compilación CI/CD falle si no se cumple un determinado umbral de seguridad.

Hemos dejado una cosa clara: IaC puede beneficiar enormemente a su organización, pero conlleva riesgos de seguridad que no puede ignorar. Para aprovechar al máximo IaC, necesita un socio de ciberseguridad que haya creado una solución con DevSecOps en mente, domine la protección de datos en la nube y, sobre todo, que le ayude a aprovechar al máximo su inversión en IaC. Ese socio es Zscaler.

¿Cómo puede ayudar el control de la postura?

Posture Control es una plataforma de protección de aplicaciones nativa de la nube (CNAPP) diseñada para ayudar a sus equipos de desarrollo y seguridad a trabajar juntos para construir un programa de seguridad de infraestructura como código (IaC) integral desde cero.

Capacidades clave

Visibilidad y control

  • Identifique problemas y visualice las posturas de seguridad y cumplimiento de su depósito de código
  • Investigue y solucione fácilmente las infracciones por categoría, gravedad de la política, controles de cumplimiento, etiquetas y estado
  • Obtenga visibilidad detallada sobre la infracción y el depósito de código, la solicitud de extracción, CI/CD compilación y otros datos esenciales para analizar el problema hasta su origen

Evaluación continua de riesgos

  • Busca continuamente plantillas de IaC (por ejemplo, Terraform HCL, plantillas de AWS CloudFormation, archivos YAML de manifiesto de aplicaciones de Kubernetes y gráficos de Helm) a medida que el código se actualiza o se envía a los depósitos de código y compilaciones en sistemas CI/Cd
  • Analice el código para detectar infracciones de la política de seguridad lo antes posible (IDE del desarrollador) para proporcionar al desarrollador una respuesta inmediata
  • Evalúe las plantillas de IaC para detectar problemas de seguridad, incumplimiento y otras configuraciones incorrectas o configuraciones predeterminadas inseguras (por ejemplo, cifrado faltante, seguimiento de identidad y credenciales) para permisos excesivos, recursos expuestos públicamente como cargas de trabajo, depósitos de almacenamiento, roles de grupo de seguridad débiles, etc.
  • Compare continuamente la configuración observada con el estado deseado para informar, notificar y corregir desviaciones de configuración inesperadas
  • Analice el código enviado a los depósitos de código y evite la compilación en sistemas CI/CD cuando se identifican vulnerabilidades críticas

Productividad mejorada

  • Mejore la experiencia del desarrollador identificando problemas con el contexto adecuado, orientación de seguridad integrada y recomendaciones para resolver problemas de forma nativa en sus ecosistemas DevOps con herramientas como IDE, depósitos de código y sistemas CI/CD
  • Automatice la seguridad de IaC e intégrela en los procesos existentes para reducir la fricción entre los desarrolladores y los miembros del equipo de seguridad, operaciones y cumplimiento (una práctica recomendada de DevSecOps)

Alertas

  • Integre herramientas de solicitudes de asistencia para generar alertas casi en tiempo real, lo que le permite notificar y alertar a los propietarios y equipos adecuados con el contexto necesario sobre los problemas, el impacto y las acciones necesarias para corregir un problema.

Recursos sugeridos

Desplácese hacia la izquierda y hacia abajo con CWPP
Leer el blog
Proteger la infraestructura integrando la seguridad de infraestructura como código (IaC) en los flujos de trabajo de los desarrolladores
Leer el blog
La creciente importancia de la plataforma de protección de aplicaciones nativas de la nube (CNAPP)
Leer el blog
Los 5 beneficios principales de la plataforma de protección de aplicaciones nativa de la nube
Leer el blog

01 / 02