User Tools

Site Tools


guia_rapida_de_docker_swarm

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
guia_rapida_de_docker_swarm [2021/06/06 01:35] – [Bloquear el entorno Swarm (autolock: cifrado de llaves privada)] busindreguia_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 "llave/passphrase" en cada inicio del clúster para desbloquearlo y que pueda funcionar ([[#bloquear_el_entorno_swarm_autolockcifrado_de_llaves_privada|leer]]).+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 "llave/passphrase" en cada inicio del clúster para desbloquearlo y que pueda funcionar. Es una medida de seguridad orientada a impedir males mayores si alguien indeseable accede al sistema de ficheros de algún nodo ([[#bloquear_el_entorno_swarm_autolockcifrado_de_llaves_privada|leer]]).
  
 **Desplegar un servicio (Replicas / Global)** **Desplegar un servicio (Replicas / Global)**
Line 517: Line 517:
 Las configuraciones de servicio permiten almacenar información no sensible, normalmente archivos de configuración, fuera de la imagen de un servicio o de los contenedores en ejecución. Esto permite mantener imágenes genérica, sin la necesidad de bind-mount o el uso de variables de entorno. Estos ficheros de configuración pueden usarse como plantillas para que una vez arranque el contenedor de un servicio, la configuración se genere con los valores deseados mediante variables. Las configuraciones de servicio permiten almacenar información no sensible, normalmente archivos de configuración, fuera de la imagen de un servicio o de los contenedores en ejecución. Esto permite mantener imágenes genérica, sin la necesidad de bind-mount o el uso de variables de entorno. Estos ficheros de configuración pueden usarse como plantillas para que una vez arranque el contenedor de un servicio, la configuración se genere con los valores deseados mediante variables.
  
-Las configuraciones operan de manera similar a los secretos, excepto que no están encriptadas cuando están en reposo y se montan directamente en el sistema de archivos del contenedor sin el uso de discos RAM. Las configuraciones pueden ser añadidas o eliminadas de un servicio en cualquier momento, y los servicios pueden compartir una configuración. Incluso se pueden usar "configs" con variables de entorno o etiquetas, para crear plantillas que ofrezcan más flexibilidad. Los valores de configuración pueden ser cadenas genéricas o contenido binario (de hasta 500 kb de tamaño).+Las configuraciones operan de manera similar a los secretos, excepto que no están cifradas cuando están en reposo y se montan directamente en el sistema de archivos del contenedor sin el uso de discos RAM. Las configuraciones pueden ser añadidas o eliminadas de un servicio en cualquier momento, y los servicios pueden compartir una configuración. Incluso se pueden usar "configs" con variables de entorno o etiquetas, para crear plantillas que ofrezcan más flexibilidad. Los valores de configuración pueden ser cadenas genéricas o contenido binario (de hasta 500 kb de tamaño).
  
 **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 "[[#crear_un_entorno_swarm|Entendiendo qué pasa internamente al iniciallizar un enjambre Docker]]" Si no se tiene claro qué es lo que pasa al inicializar un enjambre docker se recomienda leer la sección "[[#crear_un_entorno_swarm|Entendiendo qué pasa internamente al iniciallizar un enjambre Docker]]"
  
-El almacén completo de raft como sabemos es el mismo en todos los nodos gestores, se propaga a todos los gestores encriptado sólo a través de mTLS. Cada nodo gestor debe tener una copia idéntica de los registros, que se encuentra en la siguiente ruta /var/lib/docker/swarm/raft/. Estos registros están cifrados, ya que almacenan datos sensibles como los secretos de Docker utilizados por los servicios que se ejecutan en el clúster de Swarm. +El almacén completo de raft como sabemos es el mismo en todos los nodos gestores, se propaga a todos los gestores cifrado únicamente a través de mTLS. Cada nodo gestor debe tener una copia idéntica de los registros, que se encuentra en la siguiente ruta /var/lib/docker/swarm/raft/. Estos registros están cifrados, ya que almacenan datos sensibles como los secretos de Docker utilizados por los servicios que se ejecutan en el clúster de Swarm. 
  
 Las llaves TLS/DEK están en la ruta /var/lib/docker/swarm/certificates/swarm-node.key. Las llaves TLS/DEK están en la ruta /var/lib/docker/swarm/certificates/swarm-node.key.
Line 1030: Line 1030:
 -----END ENCRYPTED PRIVATE KEY-----</code> -----END ENCRYPTED PRIVATE KEY-----</code>
  
 +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 que si uno de los nodos gestores ha sido comprometidoentonces es posible descifrar y leer los registros de Raft para obtener los secretos de Docker entre otra información sensible. +Si el atacante tiene acceso a root, lógicamente siempre podrá consultar lo que quieradesde los secretos a las llaves privadas, independientemente de la configuración autoblockEl bloqueo tiene como finalidad defenderse de accesos al sistema de ficheros, por ejemplo mediante un acceso backups/snapshots del disco.
- +
-Los registros de Raft utilizados por los gestores de enjambres están cifrados en el disco por defecto. Este cifrado en reposo protege la configuración y los datos de los atacantes que acceden a los registros cifrados de RaftUna de las razones por las que se introdujo esta función fue para apoyar la función de secretos de Docker. Pero si la llave está accesible desde el sistema de ficheros, si se accede ella, se puede acceder los datos de 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.+
  
 <code bash> <code bash>
guia_rapida_de_docker_swarm.1622936129.txt.gz · Last modified: 2021/06/06 01:35 by busindre