
Personalmente, cuando elijo entre Docker y Podman para ejecutar aplicaciones en contenedores, elijo Podman. Docker es mucho más popular y sinónimo de contenedores hoy en dia (contenedor = Docker), pero me gusta mucho que Podman sea seguro por defecto, tenga soporte para Pods, ejecute contenedores rootless por defecto, y no requiera un daemon en ejecución continua para ejecutar contenedores (los contenedores son fork/exec del proceso de Podman).
Una gran característica de seguridad de Podman es Podman Secrets, que es similar a los Kubernetes Secrets.
Datos Sensibles en Variables de Entorno
Cuando trabajas con contenedores, almacenar datos sensibles (como contraseñas, llaves API, certificados) en archivos .env regulares o archivos de configuración es riesgoso. Estos son solo archivos protegidos por permisos del sistema de archivos, con valores sensibles en texto plano en algún lugar del disco.
Cuando pasas datos sensibles como variables de entorno al contenedor, los valores pueden filtrarse en muchos lugares:
ps auxpodría exponer argumentos de procesos con los datos sensibles.podman inspecten un contenedor muestra los datos sensibles en la salida.- Si el contenedor falla, estos datos podrían terminar en los logs.

Para almacenar datos sensibles usa Podman Secrets en su lugar.
¿Qué Son los Podman Secrets?
Podman Secrets es una característica nativa de gestión de secretos en Podman que oculta datos sensibles de las imágenes y del sistema de archivos. Permite que las aplicaciones en contenedores accedan a datos sensibles (credenciales, llaves API, certificados) sin incrustarlos en imágenes de contenedor o pasarlos a través de canales inseguros.
Características
- Límite de Tamaño
- Los secretos tienen un tamaño máximo de 512KB.
- Este límite de tamaño es perfecto para credenciales, certificados y archivos de configuración. No deberías almacenar archivos multimedia o datos grandes como secretos.
- Disponibilidad Solo en Tiempo de Ejecución
- Los secretos existen solo en tiempo de ejecución del contenedor en
tmpfs(RAM) dentro del contenedor. - Se montan cuando el contenedor inicia, están disponibles solo durante la ejecución, y se desmontan cuando el contenedor se detiene.
- Los secretos existen solo en tiempo de ejecución del contenedor en
- Aislamiento de Imágenes
- Los secretos no pueden ser incrustados en imágenes.
- Nunca se escriben en la capa escribible del contenedor, no se incluyen en
podman commit, en archivos de contenedor (podman export), ni se distribuyen a través de registros de imágenes.
- Aislamiento de Procesos
- Cada contenedor obtiene su propia copia del secreto.
- No hay visibilidad de secretos entre contenedores.

Contra Qué Protegen los Podman Secrets
- Secretos filtrándose en imágenes de contenedor.
- Secretos apareciendo en la salida de
podman inspect. - Secretos en listados de procesos.
- Secretos persistiendo en disco después de eliminar el contenedor.
- Exposición accidental en respaldos de configuraciones de contenedores.
Contra Qué No Protegen los Podman Secrets
Los Podman Secrets se almacenan como archivos codificados en base64 en el host. No están cifrados. Cualquiera con acceso de lectura a tu cuenta de usuario puede decodificarlos. Proporcionan mejor seguridad que archivos en texto plano pero pueden ser decodificados.
Los Podman Secrets no protegen contra:
- Un contenedor comprometido (el secreto está en la memoria del contenedor).
- Acceso root en el sistema host.
- Alguien con acceso a tu cuenta de usuario ejecutando
podman secret inspect --showsecret.
Si alguien tiene root en tu sistema o ha comprometido tu cuenta, puede obtener tus secretos, pero en ese punto, tienes problemas más grandes.
Ubicaciones de Almacenamiento de Secretos
Ubicación en el Host
- ~/.local/share/containers/storage/secrets/
- Ubicación de secretos específica del usuario para contenedores rootless.
- No proporciona acceso a secretos entre usuarios.
- /var/lib/containers/storage/secrets/
- Ubicación de secretos a nivel de sistema para contenedores root.
Ubicación Dentro del Contenedor
- /run/secrets/
- Ubicación de secretos dentro del contenedor.
- Accedido como un archivo de solo lectura para el proceso del contenedor.
Trabajando con Podman Secrets
Creando Secretos
Desde STDIN
- Crea un secreto canalizando contenido al comando.
# Crear un secreto canalizando contenido directamente
echo -n "my-password" | podman secret create db-password -
Desde un Archivo
- Crea un secreto desde un archivo existente.
# Crear un archivo con contenido secreto
echo "my-password" > secret-file.txt
# Crear secreto desde el archivo existente "secret-file.txt"
podman secret create mysecret /path/to/secret-file.txt
Agregar Secretos a Contenedores
Agrega un secreto a un contenedor ya sea como un archivo montado en el sistema de archivos del contenedor o como una variable de entorno.
# Sintaxis
podman run --secret <secret>,[option=<option>]
# opciones:
# - type=mount - Montar secreto como archivo (por defecto)
# - type=env - Agregar secreto como variable de entorno
# - target=<path> - Ruta del secreto montado dentro del contenedor
# Como archivo (montado en /run/secrets/ por defecto)
podman run --secret db-password myimage
# Como variable de entorno
podman run --secret db-password,type=env,target=DB_PASSWORD myimage
# Montado en una ruta personalizada
podman run --secret db-password,target=/app/config/password myimage
Gestionando Secretos
# Listar todos los secretos
podman secret ls
# Inspeccionar metadatos del secreto (muestra detalles y etiquetas pero no muestra el valor)
podman secret inspect mysecret
# Mostrar realmente el valor del secreto
podman secret inspect --showsecret mysecret
# Eliminar un secreto
podman secret rm mysecret
Almacenes de Secretos Externos
Puedes ir un paso más allá en la gestión de secretos usando un sistema externo de gestión de secretos, para separar el secreto del host y hacer que el contenedor recupere el secreto en tiempo de ejecución desde un sistema autenticado separado.
Algunos buenos almacenes de secretos externos son:
- HashiCorp Vault, que es completo en características y proporciona muy buena seguridad, pero podría ser demasiado complejo y engorroso de gestionar para la mayoría de los casos.
- Bitwarden Secret Manager, que es genial si ya estás usando Bitwarden y no quieres usar otra herramienta.
- Infisical, que para mí proporciona un buen punto medio. Muy simple de configurar y usar, es open-source, y auto-hospedable. Personalmente, yo uso Infisical.

Al Final
Al final, la elección para la gestión de secretos depende de la complejidad y el nivel de amenaza. Para la mayoría de propósitos, los Podman Secrets nativos + buena seguridad del sistema local es suficiente, pero puedes usar un almacén de secretos externo si estás trabajando en proyectos más complejos.