Effectuer une rotation des clés de chiffrement de disque

L'appliance Google Distributed Cloud (GDC) isolée utilise Linux Unified Key Setup (LUKS) pour chiffrer les données sur les disques lorsqu'aucun HSM externe n'est fourni. Un tableau RAID5 est créé au-dessus des quatre disques de données, et un seul appareil LUKS est créé au-dessus du tableau RAID5. La clé KEK LUKS est générée de manière aléatoire et peut être permutée.

Ce document décrit les étapes à suivre pour faire tourner la clé de chiffrement de clé LUKS, qui doit être effectuée pour :

  • la rotation des KEK programmée régulièrement.
  • Exposition des KEK.

Avant de commencer

Procédez comme suit :

  1. Vérifiez que vous remplissez les conditions préalables concernant les ordinateurs portables.
  2. Assurez-vous de pouvoir vous connecter aux trois nœuds en tant qu'utilisateur racine.

Alterner la clé KEK

Le système d'appliance Google Distributed Cloud (GDC) air-gapped utilise un cluster NetApp ONTAP Select (OTS) à deux nœuds déployé sur les nœuds bm01 et bm02 (généralement sans GPU). Chaque nœud possède quatre disques de données dédiés configurés en tant que baie RAID5 pour une redondance accrue. Un seul appareil chiffré LUKS est superposé à chaque baie RAID5 pour assurer la sécurité des données.

La KEK de chiffrement LUKS est stockée sur le disque de démarrage, dans /etc/luks. La rotation de la KEK LUKS nécessite la rotation du chiffrement LUKS sur les deux nœuds pour maintenir la sécurité dans l'ensemble du cluster. Pour effectuer une rotation régulière de la KEK ou si la KEK est exposée, répétez les étapes suivantes sur bm01 et bm02 :

  1. Connectez-vous au nœud en tant qu'utilisateur racine.

  2. Assurez-vous que le périphérique RAID existe et obtenez le chemin complet RAID_DEVICE.

    ll /dev/md
    
  3. Assurez-vous que l'ancien fichier de clé LUKS existe et obtenez le chemin d'accès complet OLD_KEY.

    ll /etc/luks
    
  4. Ajoutez l'ancienne clé KEK à l'emplacement de clé 1, de sorte que les emplacements de clé 0 et 1 aient la même clé KEK.

    cryptsetup luksAddKey RAID_DEVICE OLD_KEY --key-slot 1 --key-file OLD_KEY
    

    Remplacez RAID_DEVICE et OLD_KEY par les chemins d'accès des étapes précédentes.

  5. Supprimez l'ancienne clé KEK de l'emplacement de clé 0.

    cryptsetup luksKillSlot RAID_DEVICE 0 --key-file OLD_KEY
    
  6. Générez une clé KEK et stockez-la dans le nouveau fichier de clés NEW_KEY.

    dd if=/dev/urandom of=NEW_KEY bs=512 count=1
    chmod u=r,go-rwx NEW_KEY
    

    Remplacez NEW_KEY par le chemin d'accès complet au nouveau fichier de clé.

  7. Ajoutez la nouvelle clé KEK à l'emplacement de clé 0.

    cryptsetup luksAddKey RAID_DEVICE NEW_KEY --key-slot 0 --key-file OLD_KEY
    
  8. Définissez une configuration persistante pour ouvrir ou fermer le périphérique LUKS au démarrage ou à l'arrêt de la machine.

    DEVICE_UUID=$(cryptsetup luksUUID RAID_DEVICE)
    echo "luksrd5 UUID=${DEVICE_UUID} NEW_KEY luks,discard" > /etc/crypttab
    
  9. Supprimez l'ancienne clé KEK de l'emplacement de clé 1.

    cryptsetup luksKillSlot RAID_DEVICE 1 --key-file NEW_KEY
    
  10. Vérifiez que la nouvelle clé KEK fonctionne.

    cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file NEW_KEY
    
  11. Vérifiez que l'ancienne clé KEK ne fonctionne plus.

    cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file OLD_KEY
    
  12. Supprimez l'ancienne clé KEK.

    rm OLD_KEY
    

Si un nœud est redémarré avant la fin de la rotation, le périphérique LUKS peut toujours être ouvert après le démarrage. Vous pourrez reprendre la procédure une fois le nœud rétabli.