El dispositivo aislado de Google Distributed Cloud (GDC) usa Linux Unified Key Setup (LUKS) para cifrar los datos de los discos cuando no se proporciona un HSM externo. Se crea un array RAID5 sobre las 4 unidades de datos y un único dispositivo LUKS sobre el array RAID5. La KEK de LUKS se genera de forma aleatoria y se puede rotar.
En este documento se describen los pasos para rotar la KEK de LUKS que se deben seguir en los siguientes casos:
- rotación de KEK programada periódicamente.
- Exposición de KEK.
Antes de empezar
Este agente debe seguir estos pasos:
- Comprueba que cumples los requisitos previos para portátiles.
- Asegúrate de que puedes iniciar sesión en los tres nodos como usuario raíz.
Rotar KEK
El sistema de dispositivo aislado de Google Distributed Cloud (GDC) utiliza un clúster de dos nodos de NetApp ONTAP Select (OTS) implementado en los nodos bm01 y bm02 (normalmente sin GPUs). Cada nodo tiene 4 unidades de datos dedicadas configuradas como una matriz RAID5 para mejorar la redundancia. Se coloca un único dispositivo cifrado con LUKS sobre cada matriz RAID5 para garantizar la seguridad de los datos.
La KEK de cifrado LUKS se almacena en el disco de arranque, que se encuentra en /etc/luks
. Para rotar la KEK de LUKS, es necesario rotar el cifrado de LUKS en ambos nodos para mantener la seguridad en todo el clúster. Para realizar una rotación periódica de la KEK o si la KEK está expuesta, repite los siguientes pasos en bm01 y bm02:
Inicia sesión en el nodo como usuario raíz.
Asegúrate de que el dispositivo RAID exista y obtén la ruta completa de
RAID_DEVICE
.ll /dev/md
Asegúrate de que el archivo de claves LUKS antiguo existe y obtén la
OLD_KEY
ruta completa.ll /etc/luks
Añade la KEK antigua a la ranura de clave 1 para que las ranuras de clave 0 y 1 tengan la misma KEK.
cryptsetup luksAddKey RAID_DEVICE OLD_KEY --key-slot 1 --key-file OLD_KEY
Sustituye
RAID_DEVICE
yOLD_KEY
por las rutas de los pasos anteriores.Elimina la KEK antigua de la ranura de clave 0.
cryptsetup luksKillSlot RAID_DEVICE 0 --key-file OLD_KEY
Genera una nueva KEK y guárdala en el nuevo archivo de claves
NEW_KEY
.dd if=/dev/urandom of=NEW_KEY bs=512 count=1 chmod u=r,go-rwx NEW_KEY
Sustituye
NEW_KEY
por la ruta completa al nuevo archivo de clave.Añade la nueva KEK a la ranura de clave 0.
cryptsetup luksAddKey RAID_DEVICE NEW_KEY --key-slot 0 --key-file OLD_KEY
Define la configuración persistente para abrir o cerrar el dispositivo LUKS al iniciar o apagar el ordenador.
DEVICE_UUID=$(cryptsetup luksUUID RAID_DEVICE) echo "luksrd5 UUID=${DEVICE_UUID} NEW_KEY luks,discard" > /etc/crypttab
Elimina la KEK antigua de la ranura de clave 1.
cryptsetup luksKillSlot RAID_DEVICE 1 --key-file NEW_KEY
Verifica que la nueva KEK funciona.
cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file NEW_KEY
Verifica que la KEK antigua ya no funciona.
cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file OLD_KEY
Elimina la KEK antigua.
rm OLD_KEY
Si se reinicia un nodo antes de que se complete la rotación, el dispositivo LUKS se puede abrir después del arranque. Puedes reanudar los pasos cuando el nodo vuelva a estar disponible.