CyberArk Glossary >

¿Qué es DevOps?

DevOps es un término utilizado para describir un conjunto de prácticas, herramientas y filosofías culturales que unen el desarrollo de software (Dev) y las operaciones de TI (Ops) y aumentan la capacidad de una organización para ofrecer aplicaciones y servicios a alta velocidad.

Con los métodos de DevOps, las nuevas funcionalidades de las aplicaciones pueden distribuirse con frecuencia. La infraestructura en la nube es elástica y se adapta a los aumentos de la demanda mediante procesos de escalado automático que crean nuevos recursos informáticos (equipos o contenedores virtuales) y despliegan más instancias de una aplicación según sea necesario. Las organizaciones solo pagan por la capacidad informática que necesiten.

Muchas empresas de todo el mundo recurren a metodologías ágiles y de DevOps para eliminar los silos funcionales y administrativos y automatizar la gestión de cambios, la gestión de configuración y los procesos de despliegue. En última instancia, DevOps puede ayudar a las organizaciones a acelerar el plazo de comercialización, mejorar la calidad de los productos, eliminar las ineficiencias, agilizar la transformación digital y responder mejor a las necesidades de los clientes.

¿Qué es la CI/CD?

Al fusionar los equipos de desarrollo y operaciones e impulsar una mayor colaboración entre las funciones, DevOps permite ciclos de desarrollo más cortos y más ajustados a los objetivos empresariales. Mediante la integración continua (CI), los desarrolladores fusionan los cambios de código en un repositorio varias veces al día y los cambios se integran en las compilaciones de forma automática. El enfoque de entrega continua (CD) requiere que el código siempre esté en estado implementable para poder pasarlo a producción en cualquier momento con solo pulsar un botón.

Retos de seguridad para DevOps

A pesar de sus muchas ventajas, DevOps presenta nuevos riesgos y cambios culturales que crean retos de seguridad que, por lo general, no pueden afrontarse mediante las soluciones y prácticas de gestión de seguridad convencionales. Estos enfoques tradicionales suelen ser demasiado lentos, costosos o complejos para garantizar la entrega y el despliegue de software automatizados en la nube o como contenedor. Estos retos incluyen:

Las credenciales con privilegios que se utilizan en DevOps son el blanco de ciberatacantes. Uno de los mayores desafíos de seguridad en los entornos de DevOps es la gestión del acceso con privilegios. Los procesos de DevOps requieren el uso de credenciales con privilegios de humanos y máquinas que son muy potentes y sumamente susceptibles de sufrir ciberataques.

  • Acceso humano: Con los procesos de alta velocidad, los profesionales de DevOps requieren acceso con privilegios en todos los entornos de desarrollo y producción.
  • Acceso de máquinas: Con los procesos automatizados, las máquinas y herramientas requieren privilegios (o permisos) elevados para acceder a los recursos sin intervención humana. Entre los ejemplos se incluyen:
    • Herramientas de automatización: Ansible, Puppet y Chef
    • Herramientas de CI/CD: Jenkins, Azure DevOps y Bamboo
    • Herramientas de gestión de contenedores: Docker y Linux Containers (LXC)
    • Herramientas de orquestación de contenedores: Kubernetes, Red Hat OpenShift, Pivotal y Cloud Foundry

Los activos de nivel cero, como Ansible y Jenkins, tienen acceso a credenciales utilizadas por muchas otras herramientas.

Una vez que los atacantes obtienen credenciales con privilegios, pueden obtener acceso total a los procesos de DevOps, a bases de datos sensibles o incluso a toda la nube de una empresa. Los atacantes lo saben, y buscan cada vez más credenciales con privilegios, como contraseñas, claves de acceso, tokens y claves SSH, así como otros tipos de secretos como certificados, claves de cifrado y claves de API. Los atacantes pueden explotar credenciales no seguras en los entornos de DevOps, lo que puede dar lugar al criptojacking, filtraciones de datos y la destrucción de propiedad intelectual.

Los desarrolladores se centran en la velocidad, no en la seguridad. Los equipos de DevOps, centrados en producir el código más deprisa, a menudo adoptan prácticas no seguras fuera del ámbito de los equipos de seguridad. Estas prácticas pueden consistir en dejar secretos y credenciales incrustados en las aplicaciones y los archivos de configuración, reutilizar código de terceros sin un escrutinio suficiente, adoptar nuevas herramientas sin evaluarlas para detectar posibles problemas de seguridad y proteger las herramientas e infraestructura de DevOps de forma insuficiente.

Los enfoques a la gestión de secretos centrados en herramientas crean brechas de seguridad. Las herramientas de DevOps suelen tener algunas funciones integradas para proteger secretos. Sin embargo, estas funciones no facilitan la interoperabilidad o el intercambio seguro de secretos a través de herramientas, nubes y plataformas. A menudo, los equipos de DevOps usan las funciones incorporadas de sus herramientas individuales para gestionar secretos. Este enfoque puede dificultar la protección adecuada de los secretos, ya que no se pueden monitorizar y gestionar de manera coherente.

Pasos para habilitar la seguridad de DevOps en su organización

A continuación se indican las medidas que suelen adoptar las organizaciones para lograr una seguridad de DevOps a escala, abordando al mismo tiempo los riesgos del acceso con privilegios y ajustándose a la cultura y los métodos de DevOps:

  • Instanciar la política de seguridad como código. Un pilar de DevOps es el concepto de «infraestructura como código» (a veces denominado infraestructura inmutable), que sustituye al modelo tradicional de administración y configuración manual de servidores y software. Al aplicar este concepto a la seguridad —instanciar y administrar la política de seguridad como código—, las organizaciones pueden eliminar los procesos de configuración manuales exhaustivos y propensos a errores.
  • Establecer la separación de responsabilidades. En un equipo de DevOps, los roles y responsabilidades deben estar claramente definidos:
    • Los desarrolladores deben centrarse en crear aplicaciones para generar resultados empresariales.
    • Las operaciones deben centrarse en ofrecer una infraestructura fiable y escalable.
    • La seguridad debe centrarse en proteger los activos y los datos y en mitigar los riesgos.

Las interacciones entre cada grupo pueden consignarse por escrito en una política de seguridad. Por ejemplo, los desarrolladores crean la política de seguridad que declara qué privilegios requiere su aplicación o servicio. A continuación, el personal de seguridad revisa y aprueba la política de seguridad y los operadores garantizan que el despliegue de la aplicación vaya como se espera.

  • Integrar la seguridad en las prácticas de CI/CD. Con demasiada frecuencia en DevOps, la seguridad se trata como algo secundario y se aplica demasiado tarde en el proceso, si es que se llega a aplicar. Luego, los cambios potencialmente considerables de última hora que se necesitan para hacer frente a las vulnerabilidades ocasionan retrasos en los lanzamientos. Las organizaciones con visión de futuro usan herramientas avanzadas de planificación y gestión de flujos de trabajo como Kanban para modelar los flujos, acelerar el desarrollo y eliminar las ineficiencias. Además, los equipos de seguridad deconstruyen cada vez más aplicaciones en microservicios para simplificar las revisiones y cambios de seguridad.
  • Adoptar un enfoque proactivo a la seguridad. Se deben implantar prácticas de seguridad sólidas a lo largo del ciclo de vida de las aplicaciones para reducir las vulnerabilidades, mejorar la posición en materia de seguridad y mitigar los riesgos. Las prácticas recomendadas de higiene de seguridad de DevOps incluyen:
    • Abordar los requisitos de seguridad y las posibles vulnerabilidades de manera integral, ya que es posible que los atacantes solo tengan que explotar una vulnerabilidad para llevar a cabo su misión.
    • Reducir la concentración de privilegios en las herramientas de automatización de compilación y garantizar que los repositorios de código no expongan los secretos.
    • Mantener los secretos que utilizan las máquinas y las personas (contraseñas, certificados, claves de API, tokens y claves SSH) en una bóveda segura y de alta disponibilidad, fuera del código fuente y fuera de los portátiles de los desarrolladores y de los sistemas de almacenamiento accesibles al usuario. Rotar los secretos regularmente para minimizar la exposición.
    • Aplicar el principio del mínimo privilegio para asegurar que las máquinas y las personas solo tengan acceso a los recursos que necesitan realmente.
    • Establecer elementos de referencia para patrones de uso normal para detectar anomalías, de manera que los usuarios maliciosos puedan localizarse y no puedan robar credenciales.
    • Inculcar la responsabilidad registrando cómo se utilizan las credenciales. Por ejemplo, en el caso de los usuarios humanos, plantearse registrar las pulsaciones de teclas o grabar en vídeo la sesión.
    • Proporcionar a cada máquina su propia identidad única para auditar y monitorizar su acceso a los secretos.
    • Ejecutar análisis de vulnerabilidades y realizar pruebas de penetración para mejorar la posición en materia de ciberseguridad.
    • Concienciar a los desarrolladores sobre las amenazas de seguridad y las prácticas recomendadas.
    • Fomentar una estrecha cooperación y colaboración entre los equipos de seguridad y desarrollo.
  • Automatizar los procesos de seguridad. DevOps utiliza la automatización para acelerar la gestión del ciclo de vida de las aplicaciones y eliminar la latencia humana. Del mismo modo, la seguridad de DevOps debería servirse de la automatización para minimizar la interacción humana y la intervención manual. Por ejemplo, al rotar automáticamente los secretos (contraseñas, claves, certificados), las organizaciones pueden evitar que los atacantes accedan a las herramientas, claves de acceso o sistemas de DevOps durante un período de tiempo prolongado. Los procedimientos de seguridad automatizados también pueden utilizarse de forma reactiva si se detecta una filtración. Por ejemplo, las sesiones con privilegios pueden finalizarse automáticamente y las credenciales pueden rotarse automáticamente en el momento en que se identifique una brecha de seguridad.

Más información sobre la seguridad de DevOps

OTRAS ENTRADAS AL GLOSARIO