Marcio Cunha

Cómo gestionar secretos en Kubernetes con Vault paso a paso

Aprende a inyectar y rotar dinámicamente credenciales y variables sensibles en clusters de Kubernetes usando HashiCorp Vault.

Marcio Cunha•4 min
También disponible en:EnglishPortuguês
Resumen
  • Almacenar secretos en texto plano dentro de Kubernetes expone credenciales a cualquier proceso con acceso de lectura.
  • HashiCorp Vault resuelve este fallo centralizando el almacenamiento y cifrando datos confidenciales en reposo.
  • La inyección de secretos mediante Sidecar entrega credenciales directo a la memoria del contenedor sin escribirlas en disco.
  • La rotación dinámica elimina claves de larga duración generando credenciales temporales bajo demanda para bases de datos.
  • Políticas estrictas de control de acceso garantizan que cada aplicación visualice únicamente los secretos estrictamente necesarios.

Por qué Kubernetes falla en la seguridad nativa de secretos

Gestionar datos confidenciales, como contraseñas de bases de datos y claves de API, es uno de los mayores desafíos al operar sistemas distribuidos. Kubernetes cuenta con un recurso nativo llamado Secrets que almacena información sensible para las aplicaciones. En la práctica, esto significa que cualquier persona o proceso con acceso de lectura al cluster puede decodificar dichos datos con facilidad, ya que la codificación predeterminada en Base64 solo oculta el texto sin protegerlo de miradas curiosas.

Cuando escalamos aplicaciones en infraestructuras modernas, dejar contraseñas estáticas repartidas por el código fuente o archivos de configuración comunes deja el sistema vulnerable a filtraciones. Es precisamente en este escenario crítico donde las herramientas especializadas en seguridad entran en juego. Para comprender la gravedad de los fallos de comunicación en entornos aislados, vale la pena revisar nuestra guía sobre por qué falla el tráfico de red entre contenedores y cómo arreglarlo con iptables, que aborda los riesgos de redes mal configuradas.

El papel de HashiCorp Vault en la protección de datos

HashiCorp Vault es un sistema centralizado diseñado para gestionar, almacenar y controlar el acceso a tokens, contraseñas, certificados y claves de cifrado. En lugar de guardar datos sensibles directamente en el código o en archivos locales, las aplicaciones solicitan estas credenciales a Vault en el momento exacto en que las necesitan. En la práctica, Vault funciona como una caja fuerte digital altamente blindada que exige autenticación rigurosa antes de liberar cualquier información al exterior.

Además de resguardar secretos mediante cifrado avanzado, Vault resuelve el problema de la rotación de credenciales. Las contraseñas que nunca cambian son un blanco fácil para atacantes que logran capturarlas. Con Vault, es posible configurar políticas para que las credenciales de bases de datos o servicios externos expiren automáticamente y se renueven sin intervención humana, asegurando que el sistema se mantenga resiliente incluso si una clave antigua es comprometida.

Cómo funciona la inyección segura de secretos vía Sidecar

Una de las alternativas más limpias para integrar Vault en Kubernetes es el uso de un contenedor auxiliar, conocido técnicamente como sidecar. Cuando una aplicación arranca en el cluster, el agente de Vault se inyecta de forma automática junto a ella en el mismo pod. En la práctica, este contenedor auxiliar se autentica en Vault, busca las credenciales necesarias y las entrega directamente en la memoria compartida o en un archivo temporal restringido.

Esta estrategia evita que los datos sensibles queden grabados permanentemente en el disco duro de los nodos o expuestos en variables de entorno visibles en los paneles de control. Para garantizar que los fallos en cascada no derriben toda la infraestructura cuando un servicio de autenticación oscile, es fundamental aplicar patrones de resiliencia, conceptos similares a los que exploramos al analizar cómo proteger microservicios del efecto cascada con circuit breaker en arquitecturas complejas.

Configurando la rotación dinámica de credenciales paso a paso

La rotación dinámica elimina la necesidad de administrar contraseñas estáticas para servicios como PostgreSQL o MySQL. Vault crea un usuario temporal en la base de datos con permisos específicos y define un tiempo de vida corto para esa credencial. Cuando el plazo expira, Vault revoca el acceso de manera automática y genera un nuevo par de claves.

Para poner esta estrategia en práctica en el día a día de la ingeniería de confiabilidad, siga los pasos fundamentales a continuación para habilitar el motor de secretos de bases de datos:

  1. Habilite el motor de secretos de bases de datos en su servidor Vault ejecutando el comando de activación correspondiente:
    vault secrets enable -path=database database
  2. Configure la conexión de Vault con su instancia de base de datos indicando las credenciales administrativas y la cadena de conexión:
    vault write database/config/my-postgresql-database plugin_name=postgresql-database-plugin connection_url="postgresql://{{username}}:{{password}}@postgres:5432/mydb?sslmode=disable" allowed_roles="my-role"
  3. Cree una regla de mapeo que defina qué comandos SQL se ejecutarán para generar usuarios temporales con validez restringida:
    vault write database/roles/my-role db_name=my-postgresql-database creation_statements="CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL 'timestamp '+ interval '1 hour''; GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";" default_ttl="1h" max_ttl="24h"

Garantizando resiliencia y validación continua en el cluster

Implementar Vault en Kubernetes exige monitoreo constante para evitar que interrupciones de red entre el cluster y la caja fuerte impidan el inicio de las aplicaciones. Es recomendable configurar políticas de caché local para que, si Vault queda temporalmente inaccesible, los servicios existentes logren leer los secretos almacenados en memoria hasta que se restablezca la conectividad. Además, las automatizaciones de infraestructura ayudan a garantizar que los fallos operativos puedan revertirse con rapidez, un tema que detallamos en nuestro artículo sobre cómo automatizar rollbacks seguros en fallos de despliegue en Kubernetes.

En resumen, combinar Kubernetes con HashiCorp Vault transforma la postura de seguridad de una organización, sustituyendo hojas de cálculo y archivos locales por un flujo automatizado de entrega de credenciales. Al adoptar la inyección basada en memoria y la rotación dinámica, su equipo elimina el error humano en el cambio de contraseñas y protege los activos corporativos frente a accesos no autorizados de forma sólida y escalable.