¿Qué es la gestión de secretos?

La gestión de secretos es el proceso de asegurar y controlar las credenciales de componentes automatizados de una aplicación.

¿Qué es la gestión de secretos?

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.

¿Qué es un "secreto"?

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:

  • Claves o certificados IPsec
  • Certificados TLS
  • Claves
  • Claves de la API
  • Contraseñas
  • Tokens

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.

¿Por qué es importante actualizar los secretos?

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.

¿Cuáles son los otros desafíos de la gestión de secretos?

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.

¿Cómo funciona una solución de gestión de secretos?

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.

¿Cómo ayuda Cloudflare en la gestión de secretos?

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.

Preguntas frecuentes

¿Qué es la gestión de secretos?

La gestión de secretos es la práctica de proteger y regular las credenciales digitales que utilizan los componentes automatizados de una aplicación. Implica el almacenamiento seguro de datos confidenciales que, en caso de quedar expuestos, podrían permitir a personas no autorizadas acceder a la infraestructura de una aplicación.

¿Qué se considera un secreto en el desarrollo de aplicaciones?

En este contexto, un secreto es un dato que sirve como credencial para componentes no humanos. Estos elementos no humanos, como las conexiones API, los microservicios y las herramientas de automatización, utilizan estas credenciales para autenticarse entre sí para que la aplicación pueda funcionar. Algunos ejemplos son las claves IPsec, las claves privadas TLS, las claves API y las contraseñas.

¿Qué tipos de datos confidenciales se suelen gestionar como secretos?

Algunos secretos comunes son las claves API, las claves de encriptación, las contraseñas y los tokens. También incluyen certificados, como los certificados TLS o IPsec, y las claves SSH que permiten la conexión de los distintos componentes de una infraestructura.

¿Por qué se requiere la rotación periódica de los secretos?

Es necesario actualizar los secretos a fin de reducir el riesgo de que un atacante los pueda adivinar mediante un intento de descifrarlos por fuerza bruta. Además, cuanto mayor sea el periodo de uso de un secreto, más probabilidades habrá de que se filtre. La rotación periódica ayuda a garantizar la seguridad de la aplicación a lo largo del tiempo.

¿Cuáles son los principales desafíos de la gestión de secretos en un entorno de nube?

Los entornos de nube suelen ser extensos y cambian con frecuencia, donde se inician constantemente nuevas máquinas virtuales, cada una de las cuales requiere sus propias credenciales. Además, los distintos componentes suelen ser interdependientes entre sí, por lo que la actualización de un secreto puede interrumpir las conexiones entre los componentes que no han recibido la nueva información. Esta expansión aumenta el número total de privilegios y secretos que una organización debe supervisar y gestionar. La cantidad de secretos que deben gestionar a menudo supera con creces la capacidad manual de los equipos internos.

¿Cómo mejoran la seguridad para los desarrolladores las herramientas de gestión de secretos?

Las soluciones de gestión de secretos automatizan el proceso de gestión y almacenan las credenciales en un entorno seguro, independiente del código de la aplicación. Esto permite a los desarrolladores evitar tener que codificar los secretos o guardarlos como texto no cifrado, donde son mucho más fáciles de encontrar para los atacantes.

¿Cómo facilita Cloudflare la gestión de credenciales de las aplicaciones?

Cloudflare proporciona Secrets Store, una herramienta que se basa en su red global. Este servicio permite a los desarrolladores almacenar y gestionar con total seguridad las distintas credenciales que necesitan sus aplicaciones.