Jump to section

El enfoque shift left frente al enfoque shift right

Copiar URL

La realización de pruebas a lo largo de todo el ciclo de vida de desarrollo del software es fundamental para cumplir con las expectativas de los usuarios, los requisitos en materia de funciones y las medidas de seguridad. Según el enfoque shift left, lo ideal es incorporar las pruebas de seguridad en las primeras etapas del proceso de desarrollo para detectar los puntos vulnerables y corregir los defectos lo antes posible. Por otro lado, el enfoque shift right consiste en supervisar el comportamiento de los usuarios, el uso del sistema, su rendimiento y los indicadores de seguridad durante la etapa de producción para verificar el funcionamiento del software.

Ambos enfoques tienen por objetivo evaluar y garantizar la calidad y el rendimiento de los nuevos productos y funciones a lo largo de todo el proceso de DevOps y del ciclo de vida de desarrollo del software (SDLC), centrándose en los métodos de prueba constante. La idea detrás de los principios de ambos enfoques en una práctica ágil es que las fallas sean pequeñas y se puedan solucionar rápido, de modo que sea posible detectar los problemas potenciales antes de que se conviertan en problemas graves.

Para comprender los enfoques shift left y shift right, resulta útil primero pensar en el ciclo de vida de desarrollo de software como una línea que va de izquierda a derecha. En la mitad izquierda de la línea, se encuentran las etapas de codificación y diseño, mientras que en la mitad derecha, se encuentra la etapa de producción, que se refiere a la implementación y la supervisión del software.

Tradicionalmente, las pruebas de seguridad del software solo se llevaban a cabo recién en la mitad del ciclo de vida de desarrollo del software, justo antes de enviarlo a la etapa de producción. Sin embargo, esto solo da lugar a que los problemas de seguridad pasen desapercibidos a medida que el software avanza a lo largo del proceso. Esto significa que, cuando finalmente se descubre un punto vulnerable, los equipos se ven obligados a llevar a cabo el trabajo complejo y costoso que se requiere para aislar y corregir las fallas que se compilaron en la aplicación hasta ese momento.

En cierto punto, las empresas comenzaron a darse cuenta de que si eliminaban los bloqueos en las primeras etapas del ciclo de vida, sería menos costoso corregir los problemas y los errores, ahorrarían recursos y podrían crear un mejor producto final. En ese momento nació el concepto de "mover la seguridad hacia la izquierda" (o shift left) y, desde entonces, se volvió fundamental para el desarrollo moderno de los sistemas de software.

Los desarrolladores no afirman ser especialistas en seguridad, ni tampoco desean serlo. En la actualidad, tienen dificultades para seguir el ritmo de los lanzamientos, en especial si son los responsables de corregir o modificar el código escrito por otro desarrollador que puede haber introducido un punto vulnerable grave en él por accidente.

A medida que la arquitectura del software se vuelve más compleja, amplia y descentralizada, resulta más difícil supervisar y gestionar la seguridad de manera eficaz en toda la empresa. Los métodos modernos de distribución de software, que adoptan la implementación continua en los entornos híbridos, requieren un enfoque nuevo que aplique medidas de seguridad en las primeras etapas del proceso de desarrollo de aplicaciones y seguridad automatizada en cada paso, y que la transforme en un elemento facilitador de las operaciones de la empresa.

Los desarrolladores optan por el enfoque shift left como una medida preventiva para mejorar la seguridad de las aplicaciones, ya que permite identificar y corregir los problemas antes de que avancen demasiado en el canal de desarrollo. Esta estrategia implica integrar prácticas de seguridad y pruebas al proceso de desarrollo lo antes posible, en lugar de dejarlas para el final. El enfoque shift left está estrechamente relacionado con el surgimiento de DevSecOps, el cual hace hincapié en la integración permanente de la seguridad desde las primeras etapas del proceso de desarrollo. 

Las empresas experimentan incidentes de seguridad durante las etapas de diseño, implementación y tiempo de ejecución. La implementación y la automatización de DevSecOps con un enfoque shift left brinda a los desarrolladores medidas de seguridad fáciles de implementar que pueden reducir los errores de los usuarios durante el diseño y la implementación, así como proteger las cargas de trabajo durante el tiempo de ejecución.

Algunas de las técnicas involucradas en este enfoque son:

  • Pruebas estáticas de la seguridad de las aplicaciones (SAST): consisten en analizar la fuente, el código de bytes o el código binario de una aplicación para identificar los puntos vulnerables de seguridad.
  • Pruebas dinámicas de la seguridad de las aplicaciones (DAST): es una metodología de pruebas de caja negra que se utiliza para descubrir posibles problemas de seguridad llevando a cabo análisis de seguridad automatizados en un destino en ejecución.
  • Elaboración de modelos de amenazas: es el proceso que consiste en reflexionar sobre cada decisión que se toma en un sistema determinado e inferir las consecuencias que tendrán sobre el perfil de seguridad, ya sea de forma inmediata o en el futuro.
  • Revisión de la arquitectura de seguridad: consiste en identificar, evaluar y reducir los riesgos para fortalecer las medidas de seguridad de la empresa contra las amenazas y los riesgos actuales y futuros.
  • Análisis de las imágenes de contenedores: consiste en analizar una imagen de contenedor capa por capa para detectar posibles amenazas de seguridad.
  • Firma del código: es el método que consiste en colocar una firma digital en un programa, un archivo o una actualización de software para poder comprobar su autenticidad e integridad en el momento de la instalación y la ejecución. 

La práctica de realizar las pruebas durante las primeras etapas del proceso tiene por objetivo encontrar y corregir los puntos vulnerables al principio de la codificación. Esto no solo garantiza más seguridad; también mejora la experiencia del usuario y la funcionalidad al permitir que se distribuya software de calidad superior con mayor rapidez y frecuencia. Además, esta práctica agiliza la eficiencia del desarrollo y puede reducir los gastos generales, ya que detecta y corrige los errores del software en las primeras etapas del ciclo. 

Dado que los vectores de amenazas se vuelven cada vez más sofisticados y las superficies de ataque continúan creciendo de manera exponencial, las empresas reconocen que realizar pruebas únicamente durante la etapa de diseño no será suficiente para protegerse de las amenazas de seguridad que evolucionan todo el tiempo.

Esto significa que el enfoque shift left dio paso a un fenómeno complementario: el enfoque de pruebas al final del proceso (shift right testing). Este enfoque continúa la práctica de realización de pruebas, garantía de calidad y evaluación del rendimiento en un entorno posterior al de producción. 

Para implementar este enfoque, los equipos de desarrollo llevan a cabo experimentos controlados hacia el final del ciclo de desarrollo de software con el objetivo de examinar las funciones, el rendimiento, la tolerancia a los errores y la experiencia del usuario.

Algunas de las técnicas involucradas en este enfoque para los controles esenciales y la supervisión en tiempo real son:

  • SIEM: es la gestión de la información y los eventos de seguridad. Se trata de una solución que ayuda a las empresas a detectar y analizar las amenazas, y luego responder a ellas.
  • SOAR: hace referencia a la organización, automatización y respuesta de la seguridad. Busca aliviar las cargas de los equipos de TI mediante la coordinación, ejecución y automatización de las tareas entre diversas personas y herramientas.
  • Implementaciones tipo canary: implican probar una nueva función en un subconjunto de usuarios antes de lanzarla para toda la base de usuarios.
  • Anillos de implementación: hace referencia a la implementación y validación gradual de los cambios que se realizan en su extensión durante la producción, mientras se limitan los efectos en los usuarios.
  • Pruebas tipo A/B: se trata de un enfoque que permite probar hipótesis. Para ello, crea un grupo de control; incorpora diversas situaciones, funciones, apariencias, entre otros factores; y luego evalúa las reacciones en las distintas situaciones en función de la reacción esperada.
  • Prueba de incorporación de fallas: implica incorporar fallas intencionalmente en el sistema para probarlo.
  • Prueba de la seguridad de la API: realiza un seguimiento del tráfico y las llamadas salientes a fin de conocer el comportamiento y detectar los incidentes de seguridad.Istio: es una plataforma de malla de servicios que proporciona el canal de comunicación fundamental y gestiona la autenticación, la autorización y el cifrado de la comunicación del servicio según sea necesario.
  • Ingeniería del caos: implica romper los sistemas a propósito para probar su resistencia.
  • Implementación azul-verde:es un modelo de lanzamiento de aplicaciones que transfiere poco a poco el tráfico de usuarios de cierta versión anterior de una aplicación a una versión nueva, casi idéntica, cuando ambas se encuentran en la etapa de producción. 

Como los equipos observan el comportamiento del software en entornos reales, pueden detectar de forma anticipada las amenazas de seguridad en el tiempo de ejecución y asegurarse de que las aplicaciones funcionen según lo planeado. Este enfoque permite que los usuarios realicen comentarios de manera permanente e inmediata y brinda la posibilidad de analizar los problemas que tal vez no se anticiparon. 

A medida que las empresas se trasladan a las arquitecturas de la nube y modernizan sus aplicaciones para incluir tecnologías como los microservicios y los contenedores, se recomienda adoptar las estrategias de shift left y shift right simultáneamente. Cuando las empresas brindan a su equipo la posibilidad de ejecutar pruebas integrales en todas las etapas del ciclo de vida de desarrollo de software, se acercan más al objetivo principal de lograr la integración y la distribución continuas (CI/CD).

Entre las ventajas de adoptar ambas estrategias encontramos mayor eficiencia, productos de mejor calidad, más seguridad, agilización de la comercialización y mayor satisfacción de los usuarios. Además, las empresas descubrieron que los costos asociados a la corrección de errores, en función del momento de su detección, aumentan con el paso del tiempo. En otras palabras, mientras más tiempo se espere para corregir un problema, más dinero costará hacerlo. Por lo tanto, es probable que tomar las medidas preventivas del enfoque shift left tenga un efecto positivo en los resultados económicos. 

Para proteger la cadena de suministro de software, debe adoptar un enfoque que abarque diversas áreas. Puede tomar diferentes medidas para mejorar su seguridad, y cada una de ellas servirá para proteger aún más a su empresa y sus clientes.

Para comenzar a implementar los principios de los enfoques shift left y shift right en el ciclo de vida de desarrollo de su empresa, empiece por implementar una lista con los elementos de software (SBOM), la cual consiste en un inventario que agrupa todas las fuentes y las dependencias que forman parte de un elemento, como el código fuente, las bibliotecas open source y de software, el middleware y los marcos de desarrollo.

A partir de ahí, comience a implementar pruebas automatizadas para reunir datos y análisis a lo largo del canal de desarrollo e implementación del software. La realización permanente de pruebas en todas las etapas del ciclo de vida de desarrollo de software es la mejor manera de supervisar el rendimiento y detectar las causas principales de los problemas.

Quizás lo más importante es garantizar la colaboración y la comunicación dentro de los departamentos y entre ellos, de manera que se puedan identificar las áreas problemáticas de cada equipo y encontrar las herramientas más adecuadas para su empresa. 

En el panorama tecnológico actual, el cual evoluciona rápidamente, las empresas adoptan los contenedores para lograr una mayor capacidad de ajuste, portabilidad y eficiencia en la implementación de sus aplicaciones. Si bien los contenedores tienen sus ventajas, también pueden plantear problemas de seguridad de la TI que se deben abordar para mejorar la seguridad, la confidencialidad y la accesibilidad de las aplicaciones organizadas en ellos. A medida que aumenta el uso de las aplicaciones desarrolladas en la nube, se vuelve fundamental mejorar la estrategia de seguridad de los contenedores y Kubernetes.

Red Hat® invierte mucho en el mantenimiento de todos los productos de software open source, durante todo su ciclo de vida. Nos ocupamos no solo de brindar soporte para el software que enviamos, sino también de abordar las cuestiones importantes, como la seguridad.

Red Hat Trusted Software Supply Chain ayuda a que las empresas apliquen la seguridad al ciclo de vida de desarrollo de software desde el principio. Con el software de seguridad adecuado, las empresas pueden protegerse de los riesgos y los puntos vulnerables que se presentan dentro de los sistemas de la cadena suministro. Sin la protección adecuada, corren el riesgo de perder la confianza de sus usuarios, clientes y otras partes interesadas. Con Red Hat Trusted Software Supply Chain, los clientes pueden codificar, diseñar y supervisar el software usando plataformas probadas, contenido de confianza y herramientas inmediatas de análisis y corrección de problemas de seguridad.

Red Hat OpenShift® aboga por el enfoque shift left al automatizar DevSecOps e integrar la seguridad de forma temprana y durante todo el ciclo de desarrollo. Su variedad de herramientas para desarrolladores listas para usarse, las funciones de CI/CD y la priorización de la seguridad garantizan una cadena de suministro de software eficiente y segura. Se trata de una plataforma de aplicaciones integral que se basa en la tecnología de Kubernetes y ayuda a las empresas a diseñar, implementar, ejecutar y gestionar aplicaciones innovadoras según sea necesario, además de brindarles seguridad.

Red Hat Advanced Cluster Security for Kubernetes traslada la seguridad a las primeras etapas del proceso y automatiza las prácticas recomendadas de DevSecOps. La plataforma funciona con todos los entornos de Kubernetes y se integra a DevOps y las herramientas de seguridad, lo cual permite que los equipos operen y protejan mejor su cadena de suministro, infraestructura y cargas de trabajo.

Red Hat Ansible Automation Platform le brinda un marco empresarial uniforme para que pueda diseñar y llevar adelante la automatización de la TI según lo necesite y con la seguridad como prioridad a lo largo de todo el ciclo de vida de desarrollo del software. Permite que los equipos automaticen las tareas de seguridad y cumplimiento normativo en toda la empresa y que utilicen el contenido de automatización certificado para responder a las amenazas de manera coordinada y con soporte permanente. Red Hat Ansible también ofrece una serie de integraciones de seguridad que cuentan con el soporte tanto de Red Hat como de sus partners tecnológicos de seguridad.

Artículos relacionados

ARTÍCULO

¿Qué es DevSecOps?

Si desea aprovechar al máximo la agilidad y la capacidad de respuesta de los enfoques de DevOps, la seguridad de la TI debe desempeñar un papel principal en todo el ciclo de vida de sus aplicaciones.

ARTÍCULO

¿Qué son la integración/distribución continuas (CI/CD)?

La integración y la distribución continuas (CI/CD) incorporan la automatización y la supervisión permanentes en todo el ciclo de vida de las aplicaciones, desde las etapas de integración y prueba hasta las de distribución e implementación.

ARTÍCULO

¿Qué hace un ingeniero de DevOps?

Un ingeniero de DevOps es alguien que posee una combinación única de habilidades y experiencia que permite la colaboración, la innovación y los cambios culturales dentro de una empresa.  

Más información sobre DevOps

Productos

Programa intensivo y altamente especializado con personal experto de Red Hat, que le enseñará a utilizar una metodología ágil y herramientas open source para solucionar los problemas comerciales de su empresa.

Servicio de nuestros asesores estratégicos, quienes tienen una visión amplia de su empresa, analizan sus desafíos y lo ayudan a superarlos con soluciones completas y rentables.

Contenido adicional

Lista de verificación

Automatización empresarial con metodología DevOps

Whitepaper

Optimice los canales de CI/CD con Red Hat Ansible Automation Platform