La gestión de secretos es el proceso de asegurar y controlar las credenciales de componentes automatizados de una aplicación.
Después de leer este artículo podrás:
Contenido relacionado
¿Qué es la seguridad de la API?
¿Qué es una llamada de la API?
¿Qué es una fuga de datos?
¿Qué es la inyección de código SQL?
ransomware
Suscríbete a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.
Copiar el enlace del artículo
La gestión de secretos es la práctica de almacenar de forma segura la información confidencial que, si se filtra, podría dar acceso a la infraestructura de la aplicación a partes maliciosas o no autorizadas. Un "secreto" en este contexto se refiere a las claves de encriptación, claves API, claves SSH, tokens, contraseñas o certificados que permiten que partes dispares de la infraestructura de aplicaciones se conecten entre sí.
Aunque un usuario solo necesite conocer una contraseña para iniciar sesión en una aplicación, esa aplicación se compone a su vez de varias partes que necesitan credenciales —esos secretos— para comunicarse entre sí.
Casi todos están familiarizados con lo difícil que puede ser recordar contraseñas para múltiples aplicaciones, especialmente cuando esas contraseñas se deben actualizar regularmente. Por eso, mucha gente empieza a emplear prácticas poco seguras con las contraseñas, como escribirlas o utilizar la misma contraseña en todas las aplicaciones.
Los desarrolladores enfrentan desafíos similares cuando crean software. La infraestructura que hace funcionar las aplicaciones o en la que se ejecuta un negocio, puede requerir cientos o incluso millones de claves, tokens y contraseñas. Dado que gestionar todos estos secretos es tan agotador, a menudo acaban codificados en el software de aplicación. Puede que nunca se actualicen y a veces están codificados en texto plano, lo que hace que sean vulnerables a los atacantes.
En el contexto de desarrollo de aplicaciones, un secreto es un dato utilizado como credencial. Al igual que una persona necesita autenticarse para acceder a su correo electrónico al introducir un nombre de usuario y una contraseña, los componentes no humanos de esa aplicación de correo electrónico (o de cualquier aplicación) necesitan autenticarse entre sí para que la aplicación funcione. Estos componentes pueden incluir conexiones de API, contenedores, microservicios, scripts, funciones y herramientas de automatización. Para autenticarse, utilizan las credenciales.
Los secretos podrían incluir:
Piensa en cómo encajan los bloques de construcción para niños (como LEGO®) para formar una estructura resistente, aunque sea en miniatura. Los secretos son como esos mecanismos de cierre que mantienen unida a una aplicación. Sin estos, la aplicación se desmorona.
A diferencia de los bloques de construcción, que siempre tienen las mismas crestas para encajar unos con otros, los secretos se deben cambiar regularmente. Si un secreto se utiliza durante demasiado tiempo, un atacante puede ser capaz de adivinarlo mediante un intento de descifrar una contraseña por fuerza bruta. Además, mientras más tiempo se utilice un secreto, más probabilidades hay de que se filtre.
La necesidad de rotar los secretos aumenta la complejidad de gestionarlos de manera segura. Al igual que recordar una contraseña actualizada puede ser difícil, rotar regularmente los secretos es un gran reto. Una docena de aplicaciones puede depender de una sola API y todas esas aplicaciones tendrán que actualizar sus secretos si la API necesita nuevas credenciales. En algunos casos, es probable que una organización ni siquiera sepa cuántas aplicaciones dependen de esa API, y qué se estropeará cuando se actualice un secreto.
A veces, los equipos de desarrollo optan por no actualizar los secretos en pro de la eficacia, del mismo modo que muchas personas prefieren no actualizar sus contraseñas. Incluso pueden codificar los secretos en scripts y funciones, al suponer que no será necesario cambiarlos.
Compartir manualmente: los desarrolladores que carecen de una solución de gestión de secretos pueden verse obligados a usar procesos manuales para compartir secretos entre equipos de desarrollo, lo que da lugar a una documentación deficiente y a la introducción de secretos en entornos no seguros.
Cuentas de terceros: los usuarios externos pueden necesitar acceso a las API y bases de datos internas. Dado que están fuera de la organización, es difícil aplicar una gestión segura de los secretos.
Informática en la nube: los entornos en la nube son extensos y efímeros. Se crean nuevas instancias de máquinas virtuales en los Servicios de soporte de manera periódica y todas requieren sus propios secretos. La aplicación en la nube también permite un amplio acceso de una gama casi ilimitada de ubicaciones, lo que amplía enormemente el número de credenciales y privilegios que se deben gestionar.
Falta de gestión centralizada: al igual que es un reto lograr que un grupo de personas se ponga de acuerdo a la hora de cenar, gestionar secretos repartidos entre múltiples equipos y funciones es difícil. Cada equipo puede documentar los secretos de manera diferente, almacenarlos de manera diferente o carecer de visibilidad sobre los secretos que utilizan otros equipos.
Las herramientas de gestión de secretos pueden automatizar todos los procesos necesarios para gestionar los secretos de manera segura. También almacenan los secretos en un entorno seguro, independiente del código de la aplicación. Esto permite que los desarrolladores eviten la codificación de secretos o su almacenamiento en texto plano, donde podrían verse en riesgo.
Cloudflare ofrece una plataforma de desarrollo altamente escalable para ejecutar códigos a través de su red global. Secrets Store de Cloudflare permite a los desarrolladores almacenar y gestionar de forma segura los secretos que necesita su aplicación, desde tokens de API hasta encabezados de autorización de solicitudes. Más información sobre Secrets Store.