guia_rapida_de_docker_swarm
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
guia_rapida_de_docker_swarm [2021/06/06 01:19] – busindre | guia_rapida_de_docker_swarm [2021/06/06 02:14] (current) – busindre | ||
---|---|---|---|
Line 93: | Line 93: | ||
* Llave privada rait de la CA del clúster se encuentra en el registro Raft. | * Llave privada rait de la CA del clúster se encuentra en el registro Raft. | ||
- | El certificado CA es el mismo en todos los nodos, mientras que los certificados individuales de cada nodo tienen la misma firma de la CA. Es decir, swarm-root-ca.crt y swarm-node.crt tienen la misma firma ya que han sido firmados por el nodo manager elegido en el momento de inicialización del swarm. Cuando se usa el bloqueo de un enjambre Docker, lo que se hace es cifrar el fichero swarm-node.key (Llave TLS y llave DEK), obligando por tanto a usar un arranque manual donde se introduzca la " | + | El certificado CA es el mismo en todos los nodos, mientras que los certificados individuales de cada nodo tienen la misma firma de la CA. Es decir, swarm-root-ca.crt y swarm-node.crt tienen la misma firma ya que han sido firmados por el nodo manager elegido en el momento de inicialización del swarm. Cuando se usa el bloqueo de un enjambre Docker, lo que se hace es cifrar el fichero swarm-node.key (Llave TLS y llave DEK), obligando por tanto a usar un arranque manual donde se introduzca la " |
**Desplegar un servicio (Replicas / Global)** | **Desplegar un servicio (Replicas / Global)** | ||
Line 456: | Line 456: | ||
Un secreto es un bloque de datos, como una contraseña, | Un secreto es un bloque de datos, como una contraseña, | ||
- | Cuando se añada un secreto al enjambre, Docker envía el secreto al administrador del enjambre a través de una conexión TLS mutua. El secreto se almacena en el registro de Raft, que está cifrado. Todo el registro de Raft se replica en los demás nodos gestores, asegurando así la alta disponibilidad para los secretos. | + | Cuando se añada un secreto al enjambre, Docker envía el secreto al administrador del enjambre a través de una conexión TLS mutua. El secreto se almacena en el registro de Raft, que está siempre |
NOTA: Los secretos siempre están accesibles en texto claro en el mismo nodo donde fueron montados mediante tmpfs. Cuando el contenedor no está activo, ese directorio desaparece. | NOTA: Los secretos siempre están accesibles en texto claro en el mismo nodo donde fueron montados mediante tmpfs. Cuando el contenedor no está activo, ese directorio desaparece. | ||
Line 517: | Line 517: | ||
Las configuraciones de servicio permiten almacenar información no sensible, normalmente archivos de configuración, | Las configuraciones de servicio permiten almacenar información no sensible, normalmente archivos de configuración, | ||
- | Las configuraciones operan de manera similar a los secretos, excepto que no están | + | Las configuraciones operan de manera similar a los secretos, excepto que no están |
**Cómo gestiona Docker Swarm las configuraciones**. | **Cómo gestiona Docker Swarm las configuraciones**. | ||
Line 972: | Line 972: | ||
Si no se tiene claro qué es lo que pasa al inicializar un enjambre docker se recomienda leer la sección " | Si no se tiene claro qué es lo que pasa al inicializar un enjambre docker se recomienda leer la sección " | ||
- | El almacén completo de raft como sabemos es el mismo en todos los nodos gestores, se propaga a todos los gestores | + | El almacén completo de raft como sabemos es el mismo en todos los nodos gestores, se propaga a todos los gestores |
Las llaves TLS/DEK están en la ruta / | Las llaves TLS/DEK están en la ruta / | ||
Line 998: | Line 998: | ||
**Manager unlock key** | **Manager unlock key** | ||
- | * Uso: Cifra las llaves DEK y TLS (actúa como una KEK, o clave de encriptación). | + | * Uso: Cifra las llaves DEK y TLS (actúa como una KEK, o clave de cifrado). |
* No es única por nodo gestor: la comparten todos los gestores del clúster. | * No es única por nodo gestor: la comparten todos los gestores del clúster. | ||
* Se almacena en el resgitro Raft (así se propaga a todos los gestores). | * Se almacena en el resgitro Raft (así se propaga a todos los gestores). | ||
* Se genera cuando el clúster se pone en autolock, o cuando la llave de desbloqueo se rota. | * Se genera cuando el clúster se pone en autolock, o cuando la llave de desbloqueo se rota. | ||
- | * Cifrado: Como el resto del registro Raft, al enviarse se usa TLS para cifrar la comunicación y vía Raft DEK cuando está en reposo sobre el sistema de ficheros. | + | * Cifrado: Como el resto del registro Raft, al enviarse se usa TLS para cifrar la comunicación y vía DEK cuando está en reposo sobre el sistema de ficheros. |
* Se puede rotar a través de la API. | * Se puede rotar a través de la API. | ||
* Se elimina cuando se desactiva el bloqueo automático. | * Se elimina cuando se desactiva el bloqueo automático. | ||
- | Fichero swarm-node.key sin autolock | + | Fichero swarm-node.key sin autolock. |
<code swarm-node.key NO cifrado> | <code swarm-node.key NO cifrado> | ||
-----BEGIN PRIVATE KEY----- | -----BEGIN PRIVATE KEY----- | ||
Line 1017: | Line 1017: | ||
-----END PRIVATE KEY-----</ | -----END PRIVATE KEY-----</ | ||
- | Fichero swarm-node.key con autolock | + | Fichero swarm-node.key con autolock. |
<code swarm-node.key cifrado> | <code swarm-node.key cifrado> | ||
-----BEGIN ENCRYPTED PRIVATE KEY----- | -----BEGIN ENCRYPTED PRIVATE KEY----- | ||
Line 1030: | Line 1030: | ||
-----END ENCRYPTED PRIVATE KEY-----</ | -----END ENCRYPTED PRIVATE KEY-----</ | ||
+ | Los registros de Raft utilizados por los gestores de enjambres están cifrados en el disco por defecto. Si la llave está accesible desde el sistema de ficheros, se puede acceder a los datos del registro Raft. El bloqueo lo que hace es cifrar dicha llave y por lo tanto exige descifrarla en cada inicio del enjambre o al reiniciar nodos manager. Esto significa que si uno de los nodos gestores ha sido comprometido a nivel de sistema de fichero y no uso autoblock, es decir, no tiene su fichero swarm-node.key cifrado. Entonces es posible descifrar y leer los registros de Raft para obtener los secretos de Docker, entre otra información sensible. | ||
- | Esto significa | + | Si el atacante tiene acceso a root, lógicamente siempre podrá consultar lo que quiera, desde los secretos |
- | + | ||
- | Los registros de Raft utilizados por los gestores de enjambres están cifrados en el disco por defecto. Este cifrado en reposo protege | + | |
<code bash> | <code bash> | ||
- | # Incializar un entorno swarm bloqueando el entorno. (cifrando las llaves privadas). | + | # Incializar un entorno swarm bloqueando el entorno. (cifrando las llaves privadas |
docker swarm init --autolock | docker swarm init --autolock | ||
Line 1042: | Line 1041: | ||
docker swarm update --autolock=true | docker swarm update --autolock=true | ||
- | Mostrar la key (lógicamente solo funciona cuando esté el bloqueo activado pero el entorno está desactivado). | + | Mostrar la Manager unlock |
# docker swarm unlock-key | # docker swarm unlock-key | ||
Line 1056: | Line 1055: | ||
# Rota las llaves de bloqueo. | # Rota las llaves de bloqueo. | ||
docker swarm unlock-key --rotate | docker swarm unlock-key --rotate | ||
- | # Rota la llave CA del clúster. | + | # Rota la llave CA del clúster. |
docker swarm ca --rotate | docker swarm ca --rotate | ||
# Desactiva el bloqueo. | # Desactiva el bloqueo. | ||
docker swarm update --autolock=false</ | docker swarm update --autolock=false</ | ||
+ | |||
+ | Si se quiere realizar un volcado del registro Raft puede usarse swarm-rafttool (swamkit): https:// |
guia_rapida_de_docker_swarm.1622935154.txt.gz · Last modified: 2021/06/06 01:19 by busindre