Schlüssel zur Laufwerksverschlüsselung rotieren

Die Air-Gap-Appliance von Google Distributed Cloud (GDC) verwendet Linux Unified Key Setup (LUKS), um Daten auf Festplatten zu verschlüsseln, wenn kein externes HSM bereitgestellt wird. Auf den vier Datenlaufwerken wird ein RAID5-Array erstellt und auf dem RAID5-Array ein einzelnes LUKS-Gerät. Der LUKS-KEK wird zufällig generiert und kann rotiert werden.

In diesem Dokument werden die Schritte zum Rotieren des LUKS-KEK beschrieben, die für Folgendes ausgeführt werden müssen:

  • regelmäßig geplante KEK-Rotation.
  • KEK-Risiko.

Hinweise

Gehen Sie folgendermaßen vor:

  1. Prüfen Sie, ob Sie die Voraussetzungen für Laptops erfüllen.
  2. Prüfen Sie, ob Sie sich als Root-Nutzer auf den drei Knoten anmelden können.

KEK rotieren

Das Air-Gap-Appliance-System von Google Distributed Cloud (GDC) verwendet einen NetApp ONTAP Select-Cluster (OTS) mit zwei Knoten, der auf den Knoten bm01 und bm02 bereitgestellt wird (in der Regel ohne GPUs). Jeder Knoten verfügt über vier dedizierte Datenlaufwerke, die als RAID5-Array für eine höhere Redundanz konfiguriert sind. Auf jedem RAID5-Array befindet sich ein einzelnes LUKS-verschlüsseltes Gerät, um die Datensicherheit zu gewährleisten.

Der LUKS-Verschlüsselungs-KEK wird auf dem Bootlaufwerk unter /etc/luks gespeichert. Wenn Sie den LUKS-KEK rotieren, müssen Sie die LUKS-Verschlüsselung auf beiden Knoten rotieren, um die Sicherheit im gesamten Cluster aufrechtzuerhalten. Wenn Sie eine regelmäßige KEK-Rotation durchführen oder der KEK offengelegt wird, wiederholen Sie die folgenden Schritte auf bm01 und bm02:

  1. Melden Sie sich als Root-Nutzer am Knoten an.

  2. Prüfen Sie, ob das RAID-Gerät vorhanden ist, und rufen Sie den vollständigen Pfad RAID_DEVICE ab.

    ll /dev/md
    
  3. Prüfen Sie, ob die alte LUKS-Schlüsseldatei vorhanden ist, und rufen Sie den vollständigen Pfad OLD_KEY ab.

    ll /etc/luks
    
  4. Fügen Sie den alten KEK dem Schlüssel-Slot 1 hinzu, sodass sowohl Schlüssel-Slot 0 als auch Schlüssel-Slot 1 denselben KEK haben.

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

    Ersetzen Sie RAID_DEVICE und OLD_KEY durch die Pfade aus den vorherigen Schritten.

  5. Entfernen Sie den alten KEK aus Schlüssel-Slot 0.

    cryptsetup luksKillSlot RAID_DEVICE 0 --key-file OLD_KEY
    
  6. Generieren Sie einen neuen KEK und speichern Sie ihn in der neuen Schlüsseldatei NEW_KEY.

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

    Ersetzen Sie NEW_KEY durch den vollständigen Pfad zur neuen Schlüsseldatei.

  7. Fügen Sie den neuen KEK dem Schlüsselslot 0 hinzu.

    cryptsetup luksAddKey RAID_DEVICE NEW_KEY --key-slot 0 --key-file OLD_KEY
    
  8. Legen Sie die persistente Konfiguration fest, um das LUKS-Gerät beim Starten oder Herunterfahren des Computers zu öffnen oder zu schließen.

    DEVICE_UUID=$(cryptsetup luksUUID RAID_DEVICE)
    echo "luksrd5 UUID=${DEVICE_UUID} NEW_KEY luks,discard" > /etc/crypttab
    
  9. Entfernen Sie den alten KEK aus Schlüssel-Slot 1.

    cryptsetup luksKillSlot RAID_DEVICE 1 --key-file NEW_KEY
    
  10. Prüfen Sie, ob der neue KEK funktioniert.

    cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file NEW_KEY
    
  11. Prüfen Sie, ob der alte KEK nicht mehr funktioniert.

    cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file OLD_KEY
    
  12. Entfernen Sie den alten KEK.

    rm OLD_KEY
    

Wenn ein Knoten vor Abschluss der Rotation neu gestartet wird, kann das LUKS-Gerät nach dem Start weiterhin geöffnet werden. Sie können die Schritte fortsetzen, sobald der Knoten wieder verfügbar ist.