0Pricing
Cyber Security Academy · Lección

Secretos dinámicos y leasing

Credenciales de corta duración y caducidad automática.

Secretos dinámicos y leasing es una lección gratuita de Cyber Security Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cyber Security Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cyber Security Academy incluye 4 lecciones en total.

Secretos estáticos frente a secretos dinámicos

Un secreto estático se crea una vez y se reutiliza indefinidamente: es el caso de la misma contraseña de base de datos que diez servicios comparten durante años. Los secretos estáticos son la opción predeterminada y el problema: duran mucho tiempo, se comparten ampliamente y son difíciles de rotar.

Un secreto dinámico se genera bajo demanda, es único para un consumidor y caduca automáticamente. En lugar de almacenar una contraseña, la bóveda crea una credencial completamente nueva cada vez que se solicita.

Este sencillo cambio resuelve los aspectos más difíciles de la gestión de secretos: la rotación se vuelve automática y el radio de impacto de cualquier filtración se reduce prácticamente a cero.

Cómo funcionan los secretos dinámicos

Los secretos dinámicos requieren que la bóveda tenga acceso privilegiado al sistema backend. El flujo para una base de datos es el siguiente:

  • Un administrador configura la bóveda con una credencial raíz de la base de datos y una plantilla de creación.
  • Una aplicación se autentica y solicita una credencial.
  • La bóveda ejecuta CREATE USER en la base de datos y devuelve un nombre de usuario y una contraseña nuevos.
  • Cuando el lease caduca, la bóveda ejecuta automáticamente DROP USER.

La aplicación nunca ve una contraseña de larga duración: obtiene una temporal vinculada a su identidad y a su lease.

# Configure Vault's database engine with a creation statement
vault write database/roles/billing-readonly \
  db_name=appdb \
  creation_statements="CREATE ROLE \"{{name}}\" LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; GRANT SELECT ON billing TO \"{{name}}\";" \
  default_ttl="1h" max_ttl="24h"

Solicitar una credencial dinámica

Cuando una aplicación necesita acceso a una base de datos, solicita una credencial a la bóveda. La respuesta incluye un nombre de usuario y una contraseña únicos y recién creados, además de un lease que indica durante cuánto tiempo son válidos.

Cada consumidor obtiene su propia credencial. Si se inician dos pods del mismo servicio, reciben dos nombres de usuario diferentes, lo que permite realizar auditorías por consumidor en el nivel de la base de datos.

vault read database/creds/billing-readonly

# Example response:
# lease_id     database/creds/billing-readonly/abc123
# lease_duration  1h
# password     A1b-2Cd3-temp-xyz
# username     v-approle-billing-9f3a2

Leases: el contrato de tiempo de vida

Un lease es un contrato que establece durante cuánto tiempo es válido un secreto. Cada secreto dinámico incluye un TTL (tiempo de vida) y un TTL máximo opcional.

  • default_ttl: cuánto tiempo vive la credencial antes de caducar.
  • max_ttl: el límite absoluto, incluso aunque se renueve.

Cuando el lease caduca, la bóveda revoca la credencial: elimina activamente el usuario de la base de datos. La caducidad no es solo una marca; activa una limpieza real. Esto hace que los secretos dinámicos filtrados se autocorrijan: una credencial robada deja de servir dentro de la ventana del TTL.

Renovar y revocar leases

Las aplicaciones de larga duración que sobreviven a un lease deben renovarlo antes de que caduque. La renovación amplía el TTL hasta el TTL máximo; después, la aplicación debe solicitar una credencial nueva.

Los operadores también pueden revocar un lease inmediatamente: es el interruptor de emergencia durante un incidente. Revocar un lease elimina de inmediato la credencial subyacente, independientemente del TTL restante.

Incluso puede revocar todos los leases bajo un prefijo para cortar al instante el acceso de todo un servicio o entorno.

# Renew a lease before it expires
vault lease renew database/creds/billing-readonly/abc123

# Revoke a single lease immediately (incident kill switch)
vault lease revoke database/creds/billing-readonly/abc123

# Revoke every lease under a path prefix
vault lease revoke -prefix database/creds/billing-readonly

Más allá de las bases de datos

Los secretos dinámicos no se limitan a las bases de datos. Vault y herramientas similares generan credenciales de corta duración para muchos sistemas:

  • Cloud IAM: claves de acceso temporales de AWS/GCP/Azure mediante assume-role al estilo de STS.
  • SSH: certificados SSH firmados y de corta duración en lugar de claves estáticas.
  • PKI/TLS: certificados emitidos bajo demanda con una validez corta.
  • RabbitMQ, MongoDB, Consul: credenciales de servicio efímeras.

El patrón es el mismo en todas partes: solicitar, usar brevemente y caducar automáticamente. Las claves estáticas de larga duración en la nube son una fuente frecuente de filtraciones; las credenciales IAM dinámicas las eliminan.

# Generate temporary AWS credentials scoped to a role
vault read aws/creds/deploy-role
# returns short-lived access_key, secret_key, security_token

# Sign an SSH key for short-lived access (valid minutes, not forever)
vault write ssh/sign/admin public_key=@id_ed25519.pub ttl=15m

Por qué los secretos dinámicos reducen el radio de impacto

Considere una credencial filtrada según cada modelo:

  • Estático: la contraseña sigue siendo válida hasta que una persona la detecta, la rota y actualiza a cada consumidor. La ventana de exposición dura días o meses.
  • Dinámico: la credencial caduca dentro de su TTL (a menudo entre unos minutos y una hora) y está limitada a un consumidor con permisos mínimos. La ventana de exposición es diminuta y el daño queda contenido.

Los secretos dinámicos convierten la rotación, que antes era un proyecto manual y costoso, en una propiedad automática y continua del sistema.

La contrapartida de la credencial raíz

Los secretos dinámicos son potentes, pero requieren que la bóveda almacene una credencial raíz con privilegios elevados para cada backend en el que pueda crear los usuarios que emite. Esto concentra el riesgo en la bóveda.

Medidas de mitigación:

  • Rote la propia credencial raíz para que ni siquiera la bóveda conserve la contraseña de administrador original.
  • Limite la cuenta raíz exactamente a los permisos necesarios para crear y eliminar usuarios, sin nada más.
  • Aísle y supervise el host de la bóveda de forma rigurosa, ya que ahora es un objetivo de gran valor.

Vault puede rotar su propia credencial raíz para que, una vez completada la configuración, ningún ser humano la conozca.

# After configuring the engine, rotate the root credential
# so even operators no longer know the original password
vault write -force database/rotate-root/appdb

Gestionar la caducidad en el código de la aplicación

Las aplicaciones deben estar escritas para prever que las credenciales cambiarán. Con secretos estáticos, el código lee una contraseña una vez al iniciarse. Con secretos dinámicos, el código debe:

  • Obtener una credencial y anotar su TTL de lease.
  • Renovar el lease o volver a obtener una credencial nueva antes de que caduque.
  • Volver a conectarse correctamente cuando se revoque una credencial antigua.

Un patrón habitual consiste en un agente sidecar que gestiona el ciclo de vida del lease y vuelve a escribir un archivo local de secretos, de modo que la aplicación solo tenga que volver a cargar su configuración. Los pools de conexiones también deben actualizarse para que no se aferren a una credencial caducada.

# Vault Agent auto-renews and re-templates on rotation
auto_auth { method "approle" { ... } }
template {
  contents    = "{{ with secret \"database/creds/billing-readonly\" }}{{ .Data.username }}:{{ .Data.password }}{{ end }}"
  destination = "/run/secrets/db"
  command     = "systemctl reload billing-app"
}

Cuándo no se pueden evitar los secretos estáticos

No todos los secretos pueden ser dinámicos. Algunas API de terceros emiten una única clave de larga duración que no puede generarse bajo demanda. Para estos secretos estáticos, aplique controles compensatorios:

  • Almacénelos en la bóveda, nunca en el código.
  • Limítelos al mínimo privilegio.
  • Rótelos según un calendario (se aborda en la próxima lección).
  • Supervise su uso para detectar anomalías.

La regla general es: prefiera los secretos dinámicos; si se ve obligado a usar secretos estáticos, rótelos y audítelos sin descanso.

Secretos dinámicos en CI/CD

Las canalizaciones de CI/CD son un caso de uso ideal. Tradicionalmente, una canalización contiene claves de despliegue de larga duración, un objetivo muy atractivo. Con secretos dinámicos, la canalización:

  • Se autentica en la bóveda mediante su identidad OIDC (p. ej., el token OIDC de GitHub Actions).
  • Solicita credenciales de nube de corta duración, válidas solo durante el trabajo.
  • Deja que caduquen automáticamente cuando termina el trabajo.

No existe ninguna clave de despliegue de larga duración. Un registro de canalización comprometido filtra una credencial que ya ha dejado de ser válida cuando alguien lo lee.

# GitHub Actions job exchanges its OIDC token for a short-lived AWS role
# No static AWS keys stored as repo secrets
permissions:
  id-token: write
steps:
  - uses: aws-actions/configure-aws-credentials@v4
    with:
      role-to-assume: arn:aws:iam::123:role/deploy
      aws-region: eu-central-1

Comprobación rápida

Compruebe su comprensión de los leases y los secretos dinámicos.

Resumen: secretos dinámicos y leases

Ha aprendido cómo las credenciales de corta duración y caducidad automática transforman la gestión de secretos.

  • Los secretos dinámicos se generan bajo demanda, son únicos para cada consumidor y caducan automáticamente, a diferencia de los secretos estáticos reutilizados.
  • Un lease define un TTL y un TTL máximo; al caducar, la bóveda revoca la credencial y realiza una limpieza real.
  • Las aplicaciones de larga duración pueden renovar los leases, o estos pueden revocarse al instante como interruptor de emergencia durante un incidente.
  • Los secretos dinámicos funcionan con bases de datos, cloud IAM, SSH, PKI y mucho más; reducen el radio de impacto y automatizan la rotación.
  • La contrapartida es una credencial raíz privilegiada en la bóveda: rótela y limítela estrictamente.
  • Las aplicaciones y CI/CD deben estar preparadas para gestionar la caducidad; prefiera los secretos dinámicos y rote los estáticos cuando sean inevitables.

A continuación, veremos cómo rotar claves y detectar filtraciones cuando consiguen atravesar las defensas.

Preguntas frecuentes

¿La lección «Secretos dinámicos y leasing» es gratis?

Sí — el texto completo de «Secretos dinámicos y leasing» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cyber Security Academy, actualiza a CoddyKit PRO. El curso de Cyber Security Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Secretos dinámicos y leasing»?

Credenciales de corta duración y caducidad automática. Practicas Cyber Security Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cyber Security Academy?

No se requiere experiencia previa. Cyber Security Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Secretos dinámicos y leasing»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cyber Security Academy?

Sí. Cada lección de Cyber Security Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. El problema de la proliferación de secretos
  2. Vaults y almacenes de secretos
  3. Secretos dinámicos y leasing
  4. Rotación y detección de claves
← Volver a Cyber Security Academy