Los desarrolladores y los responsables de TI pueden ser reacios a aplicar un enfoque de seguridad por turnos en su ciclo de desarrollo, ya que a menudo entorpece y ahoga el flujo de trabajo. Sin embargo, para hacer frente a las modernas amenazas a la ciberseguridad se requiere no sólo una modernización de la tecnología, sino una actualización de la cultura y la filosofía. Los ingenieros de software deben ver la seguridad como una parte integral del proceso de desarrollo. Tiene que ser inherente.
La infraestructura de clave pública (PKI) es actualmente una de las herramientas de autenticación de seguridad más fiables. Pero, ¿cómo podemos racionalizarla e integrarla en el desarrollo sin perturbar el proceso de producción? Al fin y al cabo, el objetivo de DevOps es entregar software robusto a gran velocidad. Esta guía explorará cómo los líderes de TI pueden utilizar y automatizar PKI en DevOps.
Entendiendo PKI
PKI es un criptosistema asimétrico de doble clave. Proporciona a los sistemas de TI niveles elevados de cifrado de datos, confidencialidad de la información y gestión de la identidad a través de certificados y firmas digitales.
Los intercambios de mensajes cifrados son uno de los usos más populares de la PKI (y el ejemplo más fácil de utilizar para explicarla). Durante este proceso, los mensajes se cifran utilizando una clave pública y se descifran utilizando una clave privada.
Mientras que la clave pública puede estar disponible públicamente, la clave privada suele pertenecer a una sola entidad. No obstante, antes de que el destinatario pueda abrir o descifrar un mensaje, necesita validar la identidad del remitente.
PKI realiza esta función utilizando la autenticación de certificados digitales para determinar la identidad del titular de la clave pública. Todo este proceso puede ayudar a prevenir el fraude y garantizar que los mensajes sean privados y seguros. Pero, ¿cómo es este proceso relevante para el desarrollo de software, por qué y cómo debería implementarlo en el canal de DevOps?
PKI para el desarrollo de software
Aunque el concepto de PKI puede parecer sencillo, es lo suficientemente flexible y potente como para ser utilizado en una letanía de casos de uso relacionados con el software. Por ejemplo, los desarrolladores web pueden utilizar la validación de certificados (SSL/TLS) para el desarrollo web. Además, pueden utilizar PKI para facilitar la autenticación multifactorial.
Esta función puede permitirles crear sofisticados procesos de inicio de sesión en los que las credenciales de los usuarios no se almacenan en bases de datos o archivos tradicionales. Por supuesto, pueden utilizar PKI para asegurar el acceso al código fuente cuando el acceso a los repositorios y archivos está limitado a identidades específicas. Además, PKI puede ayudar a los desarrolladores a gestionar el cifrado y descifrado del código fuente, así como de su software mediante la firma de código.
El mayor reto para los desarrolladores es incorporar la PKI al proceso de desarrollo de la forma más fluida posible. Hay dos maneras de aprovechar DevOps para PKI. Podemos utilizar la metodología DevOps para integrar las validaciones basadas en PKI en el software y los servicios de la empresa. Alternativamente (o adicionalmente), podemos automatizar el despliegue y la configuración de PKI utilizando DevOps. Por supuesto, necesitará las herramientas adecuadas para facilitar cualquiera de las dos cosas.
Cómo implementar y automatizar PKI con DevOps: pasos y herramientas
La aparición de PKI puede parecer reciente debido a su popularidad actual. Sin embargo, existe desde la década de 1990. Por otro lado, DevOps se conceptualizó en 2008 para sustituir a las antiguas metodologías de desarrollo, como las ágiles. Ambas técnicas se han probado y perfeccionado a lo largo de los años.
Hoy en día, los desarrolladores tienen acceso a una amplia gama de herramientas e instrumentos para implementar eficazmente PKI con DevOps. Esta sección de la guía mostrará efectivamente cómo hacerlo y qué herramientas utilizar.
Selección de la Autoridad Certificadora
Al trazar la estrategia de despliegue de PKI DevOps, primero se debe asegurar de que utiliza una autoridad certificadora segura, fiable y de confianza. GlobalSign es una de esas autoridades certificadoras. Es un proveedor de certificados privados y públicos basado en la nube de una sola fuente.
Además, proporciona almacenamiento de claves sin conexión, autoridad de sellado de tiempo, servicios de revocación e infraestructura para gestionar los certificados. GlobalSign también cuenta con una solución de despliegue automatizado de certificados. Junto con el acceso a la API REST y EST de GlobalSign, esta característica lo hace muy adecuado para la integración de DevOps.
Los desarrolladores que busquen una alternativa de código abierto deberían considerar el uso de EJBCA (Enterprise Java Beans Certificate Authority). Es una solución de gestión de PKI altamente escalable. Los desarrolladores de software pueden aprovecharla junto con los servicios de despliegue automatizado y orquestación de contenedores, como Kubernetes, para ofrecer una emisión de certificados sin fisuras para paquetes de software, microservicios y contenedores.
El código fuente de EJBCA está disponible bajo los términos de la Licencia Pública General Menor de GNU (GNU). Se publicó por primera vez en 2001 y, desde entonces, ha cosechado una gran comunidad en línea y seguidores. Por lo tanto, los desarrolladores no deberían tener problemas para encontrar soporte para él. No obstante, su AC es la base de su sistema PKI. Por lo tanto, es importante seleccionar la correcta. Debe estar en consonancia con las necesidades de desarrollo y seguridad.
Selección de la herramienta de automatización
Una vez que se haya decidido cómo se va a generar y gestionar el sistema PKI, se tiene que decidir cómo se va a desplegar e integrar. Una vez más, soluciones como GlobalSign ofrecen soluciones de autoinscripción e integración de API para facilitar la implementación.
Sin embargo, si no se está dispuesto a comprometerse con un servicio como éste, existen soluciones alternativas. Los desarrolladores pueden utilizar herramientas de código abierto como Certbot para la generación y gestión automática de SSL/TLS. Sin embargo, los desarrolladores deberían considerar el uso de una solución de automatización de TI como Ansible para una configuración y distribución automatizada de certificados PKI más sólida.
Ansible es muy adecuado para entornos grandes y complejos con numerosos servidores y/o contenedores. Sin embargo, los usuarios pueden considerar el uso de un servicio como Jenkins para proyectos más pequeños. Jenkins se utiliza popularmente en los marcos de integración continua y despliegue continuo (CI/CD) para automatizar las construcciones, pruebas y despliegues de los proyectos.
Como tal, puede ser apropiado y utilizado para despliegues DevOps. En este caso, se puede utilizar para configurar y entregar automáticamente certificados, así como para realizar validaciones. Al igual que EJBCA, Jenkins es un proyecto de código abierto basado en Java. Esta faceta ofrece la oportunidad de una interfaz flexible y una personalización.
No obstante, no se tiene que elegir entre Ansible y Jenkins. Se puede ejecutarlos de forma paralela. Se puede utilizar Ansible para la orquestación y Jenkins para la configuración y optimización. Por lo tanto, se utilizará Ansible como la solución de despliegue de PKI para DevOps y Jenkins como la herramienta de DevOps para PKI.
Asegurar las implementaciones de PKI y DevOps
Una vez que los equipos de TI han decidido cómo van a implementar y automatizar su sistema PKI, necesitan asegurarse de que el proceso es seguro. Por muy segura que sea PKI, sigue teniendo algunas vulnerabilidades. Por ejemplo, los mensajes cifrados a través de PKI pueden ser descifrados y almacenados como texto claro en el servidor de un proveedor, del remitente o del destinatario.
Si los malos actores encuentran la forma de entrar en una máquina donde se almacena el texto claro, pueden burlar la seguridad de PKI copiándolo y descifrándolo. Por lo tanto, es importante añadir una capa adicional de seguridad para DevOps y PKI. Los responsables de TI deben asegurarse de que todos los servidores son seguros. Una forma de hacerlo es implementando una solución de detección y respuesta ampliada (XDR) que les ayude a cazar amenazas y brechas.
Las organizaciones deben asegurarse de que utilizan un proveedor o una AC seguros. Esto requiere que se hagan preguntas difíciles. Si su proveedor descifra mensajes y datos, ¿archiva o almacena la información en un archivo o base de datos? ¿Realiza algún tipo de limpieza tras el descifrado? ¿Es seguro el archivo de los datos descifrados? Por lo tanto, no debe evaluar a su posible AC únicamente por su compatibilidad con la solución DevOps. La seguridad también es importante.
Otra forma de implementar una capa adicional de seguridad es utilizar una herramienta de gestión de secretos como HashiCorp Vault (ofrecida a través de la plataforma GlobalSign Atlas) y AWS Secrets Manager. Ambas son plataformas basadas en la nube que le ayudan a almacenar y proteger las claves de cifrado, los certificados y las credenciales. Esto puede ayudar a los desarrolladores a garantizar que las claves y los certificados no queden expuestos y guardados por las API durante el descifrado. También pueden garantizar que los certificados se emitan e implementen en los contenedores, máquinas y entidades correctas.
PKI para la automatización de la seguridad y el desarrollo
Atrás quedaron los días de almacenar secretos en archivos de registro, bases de datos, variables de entorno o escondidos dentro de atributos codificados. Enfoques como DevOps aumentan la cantidad de desarrollo y puesta en marcha de aplicaciones. Por ello, las antiguas técnicas de validación de identidades y gestión de secretos se han quedado obsoletas, no sólo por su ineficacia, sino también por su inflexibilidad. Sencillamente, no son adecuadas para los despliegues DevOps a gran escala.
Para garantizar la seguridad tanto del proceso como de las aplicaciones que se desarrollan, los equipos deben crear una serie de pruebas automatizadas al principio del proceso de desarrollo. Estas pruebas pueden configurarse para que se produzcan a medida que se desarrolla la aplicación mediante procesos automatizados.
Algunas de estas pruebas pueden incluir pruebas funcionales que garanticen que los inicios de sesión y las validaciones de credenciales funcionan correctamente. Además, también se pueden realizar pruebas contra vulnerabilidades tales como configuraciones erróneas, exposiciones de la plataforma y cifrados SSL poco fiables que puedan afectar a la seguridad de las aplicaciones. Los desarrolladores también pueden ejecutar pruebas de penetración automatizadas que evalúan constantemente si el sistema operativo y la aplicación son seguros contra cualquier tipo de ataque.
PKI es una herramienta poderosa. Sin embargo, no proporciona una solución para todas las pruebas de seguridad y casos de uso. Los desarrolladores deben adoptar un enfoque integral de la seguridad.