Cómo crear y usar secretos en Docker para aumentar la seguridad de tus contenedores
En el mundo de los contenedores, los secretos son activos como claves SSH, certificados SSL y contraseñas que se utilizan para conectarse a servicios como cuentas en la nube, APIs y otros contenedores. Los secretos se pueden utilizar para gestionar estos datos sensibles requeridos por los contenedores en tiempo de ejecución. El problema es que no quieres almacenar esos secretos dentro de la imagen o en tu código fuente, porque eso puede llevar a graves problemas de seguridad.
![Cómo crear y usar secretos en Docker para aumentar la seguridad de tus contenedores - Video](https://i.ytimg.com/vi/g9MAcBZQXjM/hqdefault.jpg)
Imagina, por un momento, que un usuario malicioso se infiltra en tu Docker Swarm y luego ve esas contraseñas o certificados para obtener acceso a tus cuentas. Eso no sería nada bueno.
Para evitar este escenario, debes considerar utilizar secretos. En lugar de que esas contraseñas se almacenen dentro de los contenedores e imágenes, creas el secreto con Docker, el cual está encriptado, y luego puedes pasar el secreto a tus contenedores, de modo que nunca se vean como texto plano. Con este sistema, es más difícil para los ciberdelincuentes utilizar esos secretos en tu contra.
Voy a mostrarte cómo crear un secreto con Docker y luego cómo usarlo para implementar un servicio de Docker.
Lo que necesitarás
Para que esto funcione, necesitarás una instancia de Docker en ejecución. No importa si es una sola instancia en Linux, macOS o Windows, o un clúster completo de Docker Swarm. Eso es todo lo que necesitas. Comencemos a compartir algunos secretos.
Cómo crear un secreto
Lo primero que haremos es crear nuestro secreto. Utilizaremos el comando printf y redirigiremos la salida hacia el comando docker para crear un secreto llamado my_test_secret
. Para hacer esto, inicia sesión en tu controlador de Docker y ejecuta el siguiente comando:
![](https://newsmatic.com.ar/wp-content/uploads/como-instalar-y-configurar-portmaster-un-monitor-de-red-avanzado-para-tu-computadora-local-150x150.jpg)
printf "Este es mi super secreto secreto" | docker secret create my_test_secret -
Puedes verificar si el secreto se creó correctamente listando todos tus secretos actuales con el comando:
docker secret ls
Deberías ver una lista como esta:
ttx3h2zarswj4wxgum5heobfx my_test_secret hace 4 segundos hace 4 segundos
Cómo crear un servicio que use el secreto
Ahora crearemos un servicio de Redis que tenga acceso completo al secreto. Lo bueno de esto es que el contenedor real no guardará el secreto internamente, sino que podrá usarlo a través del mecanismo de secretos de Docker.
![](https://newsmatic.com.ar/wp-content/uploads/mux-la-plataforma-de-desarrolladores-que-unifica-todos-los-formatos-de-video-bajo-un-solo-api-150x150.jpg)
Para implementar ese servicio, utilizando el secreto my_test_secret
, el comando se vería así:
docker service create --name redis --secret my_test_secret redis:alpine
Verifica que el servicio se esté ejecutando con el comando:
docker service ps redis
Deberías ver una lista que se vea así:
0z6v0js2hu5q redis.1 redis:alpine dockernode1 en ejecución en ejecución hace 34 segundos
![](https://newsmatic.com.ar/wp-content/uploads/como-respaldar-bases-de-datos-en-linux-con-borgmatic-tutorial-paso-a-paso-150x150.png)
Verifica que el servicio tenga acceso al secreto con el comando:
docker container exec $(docker ps --filter name=redis -q) ls -l /run/secrets
Deberías ver algo como esto en la salida:
-r--r--r-- 1 root root 17 May 24 13:16 my_test_secret
Finalmente, puedes ver el contenido del secreto con el comando:
docker container exec $(docker ps --filter name=redis -q) cat /run/secrets/my_test_secret
![](https://newsmatic.com.ar/wp-content/uploads/como-implementar-una-pagina-web-usando-caddyfile-150x150.png)
La salida debería ser algo como esto:
Este es mi super secreto secreto
Ahora, si comprometes el contenedor, el secreto ya no estará disponible. Hazlo con el siguiente comando:
docker commit $(docker ps --filter name=redis -q) committed_redis
Verifica que el secreto ya no esté disponible con el comando:
docker run --rm -it committed_redis cat /run/secrets/my_test_secret
![](https://newsmatic.com.ar/wp-content/uploads/como-instalar-y-configurar-fail2ban-en-ubuntu-server-22-04-150x150.png)
Deberías ver algo como esto en la salida:
cat: no se puede abrir '/run/secrets/my_test_secret': No existe el archivo o el directorio
hubo un error al cambiar el tamaño de tty, se utiliza el tamaño predeterminado
Luego, puedes eliminar el acceso al secreto con el siguiente comando:
docker service update --secret-rm my_test_secret redis
Y eso, amigos míos, es cómo crear un secreto en Docker y usarlo dentro de un servicio.
![](https://newsmatic.com.ar/wp-content/uploads/descubre-como-construir-aplicaciones-sin-experiencia-previa-con-devdojo-pro-150x150.jpg)
Cómo aprender más sobre Docker
Si deseas aprender más sobre Docker, no te pierdas estos recursos en la Academia de Newsmatic:
- Hacking y seguridad de contenedores Docker
- Paquete de codificación Linux y Docker
- Paquete de formación en certificación Docker y Kubernetes
En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Desarrollo, allí encontraras muchos artículos similares a Cómo crear y usar secretos en Docker para aumentar la seguridad de tus contenedores , tenemos lo ultimo en tecnología 2023.
Artículos Relacionados