logoImagina
iconCurso
Te recomendamos nuestro curso de Docker
Descubre el curso de Docker
Ir al curso

Cómo Usar Docker Secrets para Gestionar Información

iconImage
Escrito por Equipo de Imagina
Actualizado el 09-05-2025
Duración: 15 min

En nuestra experiencia en gestión de contenedores, Docker Secrets representa una herramienta esencial para proteger datos sensibles en producción. Nosotros comprendemos que la seguridad de la información es crítica y que cada práctica implementada puede marcar la diferencia entre un sistema robusto y uno vulnerable. Por ello, les ofrecemos una guía detallada y práctica que responde a las necesidades reales de cualquier equipo que utilice Docker.

A lo largo de este artículo, exploraremos los conceptos fundamentales, las ventajas y las mejores estrategias para integrar Secrets en su flujo de trabajo. Nuestro objetivo es que, al finalizar, ustedes dominen la configuración, la gestión y la rotación de secretos de forma efectiva, garantizando un entorno seguro y alineado con las mejores prácticas del sector.

trabajador programando en docker secret

¿Qué son los Docker Secrets?

Nosotros entendemos que, en un entorno Docker, la gestión de credenciales, claves y datos sensibles es una preocupación prioritaria. Los Docker Secrets son un mecanismo nativo de Docker que permite almacenar y distribuir información confidencial —como contraseñas, tokens o certificados— de forma segura dentro de un cluster de Swarm, que se almacenan de forma encriptada y se pasan a los contenedores solo cuando sea necesario, evitando así la exposición no autorizada. A diferencia de los volúmenes o las variables de entorno, los secrets se cifran en reposo y solo se descifran en la memoria de los nodos que realmente los necesitan, minimizando el riesgo de exposición accidental.

La gestión segura de información confidencial es crucial en el entorno de contenedores Docker. Almacenar contraseñas y otros datos sensibles en archivos de configuración o scripts puede ser un riesgo, ya que podrían ser accesibles para cualquier persona que tenga acceso al sistema. Con los Docker Secrets, podemos proteger esta información de manera efectiva y reducir el riesgo de exposición no autorizada.

Además, los Docker Secrets facilitan la rotación, la auditoría y el control de acceso a estos datos críticos. Nosotros podemos definir políticas de acceso para cada secret, de manera que solo servicios autorizados obtengan la información necesaria en tiempo de ejecución. Esta aproximación no solo aumenta la seguridad, sino que también mejora la gestión operativa, al separar completamente el ciclo de vida de los secretos del ciclo de vida de los contenedores.

Tipos de Secrets

Los Docker Secrets se almacenan en archivos encriptados en el sistema de archivos del nodo Docker Swarm. Estos archivos están diseñados para ser accesibles solo para los servicios y contenedores que tienen permisos específicos para utilizarlos. Además, los Docker Secrets no se almacenan en imágenes de contenedores o en registros de imágenes, lo que los hace seguros y evita su exposición accidental.

Existen diferentes tipos de Secrets que se pueden utilizar con Docker. Algunos ejemplos comunes incluyen contraseñas de bases de datos, claves de API, certificados SSL/TLS y tokens de autenticación. Estos Secrets varían según las necesidades específicas de tu aplicación y la información confidencial que necesitas proteger.

¿Por qué utilizar Docker Secrets?

Nosotros recomendamos Docker Secrets porque ofrecen un nivel de seguridad, confidencialidad y control muy superior al de otros métodos tradicionales. Al cifrar los secrets en reposo y transmitirlos solo a los nodos autorizados, reducimos el riesgo de filtraciones y accesos no deseados. Además, el hecho de que los datos sensibles se mantengan fuera de las imágenes de los contenedores y de los volúmenes comunes garantiza una arquitectura más limpia y profesional.

Asimismo, el uso de Docker Secrets facilita la rotación, el versionado y la auditoría de credenciales sin necesidad de reconstruir o redeplegar servicios enteros. Nosotros podemos automatizar la actualización de contraseñas y certificados, minimizando los tiempos de inactividad y fortaleciendo las prácticas de seguridad continua. De este modo, mantenemos nuestros entornos siempre actualizados y protegidos ante posibles vulnerabilidades.

Prerrequisitos: Activar Docker Swarm

Para aprovechar al máximo los Docker Secrets, es imprescindible contar con un cluster de Swarm correctamente configurado. Nosotros debemos asegurarnos de que cada nodo participe en el orquestador, lo que nos permitirá distribuir los secretos de forma segura y controlada. A continuación detallamos los pasos básicos:

  1. Inicializar Swarm

    • Ejecutar docker swarm init en el nodo que actuará como manager.
    • Anotar el token generado, ya que lo necesitaremos para unir otros nodos al cluster.
  2. Unir nodos al cluster

    • En cada nodo worker, ejecutar docker swarm join --token <TOKEN> <IP_MANAGER>:2377.
    • Verificar el estado con docker node ls, para confirmar que todos los nodos aparecen como activo.
  3. Verificar la configuración

    • Comprobar que el cluster está operativo y que podemos desplegar servicios en él.
    • Asegurar que la comunicación entre nodos utiliza TLS y que las políticas de red permiten el tráfico necesario (puertos 2377, 7946 y 4789).

Con estos prerrequisitos cubiertos, nosotros estaremos listos para crear, distribuir y gestionar Secrets de manera fiable, garantizando un entorno robusto y resiliente.

Creación de Secrets

En esta sección, nosotros veremos cómo generar, almacenar y proteger secretos de forma eficiente. Comprenderemos los métodos nativos que Docker pone a nuestra disposición para crear secrets desde archivos preexistentes o directamente desde la entrada estándar. Así, garantizamos una integración fluida con nuestros flujos de trabajo y evitamos exponer datos sensibles en nuestras imágenes o volúmenes.

Crear un secret desde un archivo

Para crear un secret a partir de un archivo, nosotros seguimos estos pasos fundamentales:

  1. Preparamos un archivo que contenga la información confidencial (por ejemplo, password.txt con una clave o un certificado).
  2. Ejecutamos el comando:

    1docker secret create mi_secret password.txt
  3. Verificamos que el secret se haya creado correctamente con:

1docker secret ls

Al utilizar este método, aseguramos que el contenido del archivo quede cifrado en el backend de Swarm y solo se descifre en la memoria de los nodos autorizados, evitando así la exposición en disco.

Crea un secret desde la entrada estándar (STDIN)

Cuando queremos automatizar la creación de secretos o no deseamos mantener archivos temporales, podemos usar la entrada estándar:

1echo "MiSuperSecreto" | docker secret create mi_secret_stdin -
  • El guión (-) indica que Docker debe leer el contenido desde la entrada estándar.
  • Con esta técnica, nosotros evitamos generar archivos intermedios, reduciendo los riesgos de fuga de información.
  • Para comprobar su creación, ´docker secrets ls´mostrará nuestro nuevo secret sin revelar su contenido.

Este método resulta especialmente útil en script de CI/CD, donde la seguridad, la automatización y la limpieza del entorno son prioritarias.

¿Cómo crear un Docker Secret?

Ahora que hemos completado la configuración inicial, es hora de crear nuestros propios Docker Secrets. Sigue los siguientes pasos para generar, almacenar y gestionar secretos sensibles de manera segura:

CREAR UN NUEVO PROYECTO DE DOCKER: El primer paso es crear un nuevo proyecto de Docker en el que trabajaremos con los Docker Secrets. Puedes crear un directorio específico para tu proyecto y acceder a él desde la línea de comandos. A continuación, asegúrate de que estás en el directorio correcto antes de ejecutar los comandos de Docker.

1$ mkdir mi-proyecto 2$ cd mi-proyecto

HABILITAR EL USO DE DOCKER SECRETS: Para utilizar los Docker Secrets, debemos habilitar esta funcionalidad en nuestro entorno Docker. Asegúrate de tener instalada una versión de Docker que admita Docker Secrets (generalmente, las versiones más recientes son compatibles). Si estás utilizando Docker en modo Swarm, ya tienes habilitada la funcionalidad de Docker Secrets de forma predeterminada. En caso contrario, asegúrate de configurar Docker en modo Swarm para aprovechar al máximo los beneficios de los Docker Secrets.

1$ docker swarm init

GENERAR CLAVES Y CONTRASEÑAS SEGURAS: El primer paso para crear Docker Secrets es generar claves y contraseñas seguras. Es importante utilizar claves robustas y contraseñas que sean difíciles de adivinar. Puedes utilizar herramientas como openssl o gestores de contraseñas para generar estas claves y contraseñas seguras. Este comando generará una clave aleatoria de 16 caracteres en formato hexadecimal. Puedes ajustar la longitud según tus necesidades.

1$ openssl rand -hex 16

CREACIÓN DE DOCKER SECRETS: Una vez que tienes tus claves y contraseñas seguras, puedes crear Docker Secrets. Utilizaremos el comando docker secret create seguido del nombre del secreto y la ubicación del archivo que contiene el valor del secreto.

1$ echo "mi_contraseña_segura" | docker secret create my_secret -

ALMACENAMIENTO Y GESTIÓN DE SECRETS SENSIBLES: Una vez creados, los Docker Secrets se almacenan de forma segura en el sistema de archivos del nodo Docker Swarm. Estos secretos están encriptados y solo son accesibles por los servicios y contenedores autorizados. Es importante tener en cuenta que los Docker Secrets no se almacenan en las imágenes de los contenedores ni se envían a los registros de imágenes. Esto garantiza que los secretos sensibles no sean expuestos involuntariamente.

Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *

Gestión de Secrets en Docker Swarm

En esta sección, nosotros profundizamos en la administración, el montaje y la rotación de Secrets dentro de un cluster de Swarm. Comprender cómo distribuir y actualizar credenciales de forma segura es fundamental para mantener un entorno de producción robusto y resistente a amenazas.

MONTAJE DE SECRETS EN CONTENEDORES: Para montar un secret en un contenedor, nosotros definimos el servicio indicando el parámetro --secret. De esta forma, el secret se entrega únicamente al contenedor autorizado y se almacena en la memoria del nodo, sin dejar rastro en disco. Esto mejora la seguridad y permite mantener un entorno limpio. Por ejemplo:

1docker service create \ 2 --name mi_servicio \ 3 --secret mi_secret \ 4 mi_imagen:latest

ACTUALIZAR ATTACHMENTS: AÑADIR Y ELIMINAR SECRETS: Cuando necesitamos añadir o eliminar un secret de un servicio en ejecución, podemos usar docker service update con las opciones --secret-add y --secret-rm. Este enfoque nos brinda flexibilidad para gestionar credenciales sin detener el servicio, reduciendo tiempos de inactividad y optimizando la operación.

1# Añadir un secret 2docker service update \ 3 --secret-add mi_secret_nuevo \ 4 mi_servicio 5 6# Eliminar un secret 7docker service update \ 8 --secret-rm mi_secret_antiguo \ 9 mi_servicio

Rotación de secrets

Para garantizar una rotación segura de nuestros secrets nosotros seguimos estos pasos:

  1. Crear una nueva versión del secret:
1docker secret create mi_secret_v2 secreto_actualizado.txt
  1. Actualizar el servicio para usar la nueva versión:
1docker service update \ 2 --secret-add mi_secret_v2 \ 3 --secret-rm mi_secret_v1 \ 4 mi_servicio
  1. Eliminar la versión antigua si ya no es necesaria:
1docker secret rm mi_secret_v1

Con esta estrategia, mantenemos un control estricto de versiones, mejoramos la confidencialidad y facilitamos la automatización de procesos de seguridad.

Uso de Secrets con Docker Compose

En este apartado, nosotros exploramos cómo integrar Docker Secrets directamente en nuestros archivos docker-compose.yml, permitiendo una configuración más modular, reproducible y segura en entornos multi-servicio. Al gestionar secretos a través de Compose, simplificamos la definición de recursos sensibles y aseguramos que solo los servicios autorizados accedan a ellos en tiempo de ejecución.

Definir secrets en docker-compose.yml

Para declarar un Secret en un archivo Compose, añadimos la sección secrets en el nivel raíz y referenciamos el origen de la información, ya sea un archivo local o una definición externa:

1version: "3.7" 2 3secrets: 4 mi_secret_compose: 5 file: ./secreto.txt 6 7services: 8 app: 9 image: mi_aplicacion:latest 10 secrets: 11 - mi_secret_compose

En este ejemplo:

  • mi_secret_compose se define en la sección de secrets.
  • El parámetro file apunta al archivo que contiene la clave o certificado.
  • Esta estructura garantiza que la configuración de nuestros secrets esté centralizada y sea legible.

Montaje de secrets en servicios Compose

Una vez definidos, nosotros montamos los secrets en cada servicio especificando la lista bajo la clave secrets. Docker Compose se encarga de inyectar el secreto en la ruta interna /run/secrets/{nombre}:

1services: 2 app: 3 image: mi_aplicacion:latest 4 secrets: 5 - mi_secret_compose 6 environment: 7 DB_PASSWORD_FILE: /run/secrets/mi_secret_compose

Con esta configuración:

  • El contenedor recibe el Secret en memoria, sin dejar rastros de disco.
  • Accedemos al valor mediante la variable de entorno DB_PASSWORD_FILE.
  • Mantenemos un flujo de despliegue limpio, automatizado y seguro.

Build-time Secrets

En el proceso de construcción de imágenes, nosotros también debemos proteger credenciales y archivos sensibles que no deberían quedar incrustados en la imagen final. Los build-time secrets permiten inyectar información confidencial únicamente durante el build, evitando su persistencia en el artefacto resultante y mejorando notablemente la seguridad de nuestro flujo CI/CD.

TIPOS DE BUILD-TIME SECRETS

Dentro de los build-time secrets, podemos manejar distintos formatos y orígenes de datos:

  • Credenciales de registro (usuario/contraseña) para acceder a repositorios privados.
  • Claves SSH para clonar repositorios protegidos o realizar operaciones en servidores remotos.
  • Tokens de API para descargar dependencias o interactuar con servicios externos.
  • Archivo de configuración (por ejemplo, .npmrc o .git-credentials) con parámetros críticos.

Cada tipo de secret se mantiene fuera de la imagen gracias a la capacidad de BuildKit de montarlo solo durante la fase de build, eliminando cualquier rastro al finalizar.

USO DE BUILD-TIME SECRETS EN DOCKERFILE

Para emplear build-time secrets, debemos activar BuildKit y usar la sintaxis RUN --mount=type=secret en el Dockerfile:

1# syntax=docker/dockerfile:1.3 2FROM alpine:3.15 3 4# Declaramos un secret llamado "mi_token" 5RUN --mount=type=secret,id=mi_token \ 6 apk add --no-cache curl && \ 7 curl -H "Authorization: Bearer $(cat /run/secrets/mi_token)" https://api.ejemplo.com/data 8 9# Continuamos con el resto de pasos sin exponer el token

Y construimos la imagen con:

1DOCKER_BUILDKIT=1 docker build \ 2 --secret id=mi_token,src=/ruta/a/mi_token.txt \ 3 -t mi_imagen_secreta .

Con este enfoque, nosotros garantizamos que el token o la clave se utilice únicamente durante la creación, sin quedar guardada en la imagen final, fortaleciendo así la integridad y la confidencialidad de nuestros contenedores.

Buenas prácticas de seguridad

Nosotros recomendamos seguir una serie de acciones y controles para maximizar la seguridad de los Docker Secrets:

  • Cifrado en tránsito y en reposo: Asegurémonos de que el tráfico entre nodos y el almacenamiento de secretos siempre esté protegido.
  • Principio de menor privilegio: Definamos accesos mínimos para cada servicio, de modo que solo los contenedores necesiten los secretos a los que tienen derecho.
  • Rotación periódica: Planifiquemos la actualización de contraseñas y claves de forma programada, evitando la obsolescencia y reduciendo el riesgo de compromiso.
  • Registro y auditoría: Activemos logs detallados para todas las operaciones de creación, acceso y eliminación de secretos, facilitando la investigación ante incidentes.
  • Entorno aislado: Implementemos redes y políticas de firewall que segmenten el tráfico de administración, reduciendo la superficie de ataque.

Con estas prácticas, reforzamos la confidencialidad, la integridad y la disponibilidad de nuestros datos sensibles.

Limitaciones y consideraciones

Aunque Docker Secrets ofrece múltiples ventajas, también debemos tener en cuenta ciertas limitaciones y aspectos operativos:

  • Dependencia de Swarm: Solo funciona en clusters Swarm; no es aplicable en entornos standalone sin orquestador.
  • Escalabilidad de secretos: En despliegues muy grandes, la gestión masiva de secretos puede generar sobrecarga administrativa si no se automatiza.
  • Integración limitada: No cubre escenarios de build-time fuera de BuildKit o flujos de CI/CD sin soporte nativo.
  • Sin versión avanzada: Carece de control de versiones automático o políticas complejas de expiración, lo que obliga a diseñar procesos externos.
  • Retención de backup: Los secretos no se exportan de forma nativa; debemos garantizar copias seguras y procedimientos de recuperación ante fallos.

Conocer estas consideraciones nos permite tomar decisiones informadas y diseñar soluciones complementarias cuando sea necesario.

Alternativas a Docker Secrets

En entornos con requisitos más avanzados o cuando no utilicemos Swarm, podemos valorar otras opciones para la gestión de datos sensibles:

  • Gestores de secretos basados en API REST: Plataformas que ofrecen versionado, políticas granulares y auditoría integrada.
  • Orquestadores con soporte nativo: Algunas soluciones incluyen mecanismos de secretos dentro de su arquitectura, facilitando la gestión centralizada.
  • Plataformas en la nube: Servicios que proporcionan almacenamiento cifrado y rotación automatizada de claves, junto con monitorización permanente.
  • Sistemas de archivos cifrados: Montajes seguros que permiten compartir información entre contenedores mediante volúmenes protegidos.

Cada alternativa presenta fortalezas y limitaciones, por lo que nosotros debemos evaluar criterios como complejidad, coste y nivel de automatización antes de adoptar la más adecuada para nuestro proyecto.

Conviértete en un Experto en Docker

En definitiva, el uso de Docker Secrets nos permite proteger de manera efectiva y profesional toda la información sensitiva de nuestros contenedores, garantizando confidencialidad, integridad y disponibilidad. Si deseas profundizar aún más y dominar Docker en todos sus aspectos —incluyendo la orquestación, la seguridad y las mejores prácticas de la industria— te invitamos a inscribirte en nuestro curso de Docker para empresas.
Con nuestro enfoque práctico, dinámico y actualizado, estarás preparado para enfrentar cualquier reto en entornos productivos y llevar tus habilidades al siguiente nivel. ¡Te esperamos!

Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *
Tutoriales relacionados
Tutorial de Primeros Pasos en Kubernetes
Descubre nuestro kubernetes tutorial paso a paso para instalar, configurar y desplegar aplicaciones en un clúster local. ¡Empieza hoy mismo!
¿Qué es Lens? El Mejor IDE de Kubernetes
Descubriendo Lens Kubernetes: La Herramienta que Revoluciona la Gestión de Kubernetes con su Interfaz Intuitiva y Funcionalidades Avanzadas
¿Qué es Docker y Cómo Usarlo? Guía Completa
Explora qué es Docker, sus componentes principales y cómo puede mejorar la portabilidad, eficiencia y escalabilidad de tus aplicaciones.
Cómo reducir el tamaño de una imagen en Docker
Domina Docker: Reduce el tamaño de tus imágenes, acelera despliegues y optimiza apps. ¡Sé un experto con nuestro tutorial y herramientas!
Tabla de contenido
¿Qué son los Docker Secrets?
Tipos de Secrets
¿Por qué utilizar Docker Secrets?
Prerrequisitos: Activar Docker Swarm
Creación de Secrets
Crear un secret desde un archivo
Crea un secret desde la entrada estándar (STDIN)
¿Cómo crear un Docker Secret?
Gestión de Secrets en Docker Swarm
Rotación de secrets
Uso de Secrets con Docker Compose
Definir secrets en docker-compose.yml
Montaje de secrets en servicios Compose
Build-time Secrets
Buenas prácticas de seguridad
Limitaciones y consideraciones
Alternativas a Docker Secrets
Conviértete en un Experto en Docker
Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *