El dispositivo aislado de Google Distributed Cloud (GDC) usa Linux Unified Key Setup (LUKS) para encriptar datos en los discos cuando no se proporciona un HSM externo. Se crea un array RAID5 sobre las 4 unidades de datos y se crea un solo 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 realizar en los siguientes casos:
- Rotación de KEK programada periódicamente.
- Exposición de la KEK
Antes de comenzar
Completa los siguientes pasos:
- Verifica que cumplas con los requisitos de la laptop.
- Asegúrate de poder acceder a los tres nodos como usuario raíz.
Rota la KEK
El sistema de dispositivos aislados de Google Distributed Cloud (GDC) utiliza un clúster de dos nodos de NetApp ONTAP Select (OTS) implementado en los nodos bm01 y bm02 (por lo general, sin GPUs). Cada nodo posee 4 unidades de datos dedicadas configuradas como un arreglo RAID5 para una mayor redundancia. Se coloca un solo dispositivo encriptado con LUKS sobre cada array RAID5 para garantizar la seguridad de los datos.
La KEK de encriptación de LUKS se almacena en el disco de arranque ubicado en /etc/luks
. Rotar la KEK de LUKS requiere rotar la encriptación de LUKS en ambos nodos para mantener la seguridad en todo el clúster. Para realizar una rotación de KEK normal o si la KEK está expuesta, repite los siguientes pasos en bm01 y bm02:
Accede al nodo como usuario raíz.
Asegúrate de que exista el dispositivo RAID y obtén la ruta de acceso completa de
RAID_DEVICE
.ll /dev/md
Asegúrate de que exista el archivo de claves LUKS anterior y obtén la ruta de acceso completa
OLD_KEY
.ll /etc/luks
Agrega la KEK anterior a la ranura de clave 1, de modo 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
Reemplaza
RAID_DEVICE
yOLD_KEY
por las rutas de acceso de los pasos anteriores.Quita la KEK anterior de la ranura de clave 0.
cryptsetup luksKillSlot RAID_DEVICE 0 --key-file OLD_KEY
Genera una nueva KEK y almacénala 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
Reemplaza
NEW_KEY
por la ruta de acceso completa al nuevo archivo de claves.Agrega la nueva KEK a la ranura de clave 0.
cryptsetup luksAddKey RAID_DEVICE NEW_KEY --key-slot 0 --key-file OLD_KEY
Establece la configuración persistente para abrir o cerrar el dispositivo LUKS cuando se inicie o apague la máquina.
DEVICE_UUID=$(cryptsetup luksUUID RAID_DEVICE) echo "luksrd5 UUID=${DEVICE_UUID} NEW_KEY luks,discard" > /etc/crypttab
Quita la KEK anterior de la ranura de clave 1.
cryptsetup luksKillSlot RAID_DEVICE 1 --key-file NEW_KEY
Verifica que la nueva KEK funcione.
cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file NEW_KEY
Verifica que la KEK anterior ya no funcione.
cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file OLD_KEY
Quita la KEK anterior.
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 inicio. Puedes reanudar los pasos después de que el nodo vuelva a estar disponible.