Skip to main content
Eine neuere Version dieses Produkts ist erhältlich.
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Linux Unified Key Setup (LUKS)

Änderungen vorschlagen

Sie können Linux Unified Key Setup (LUKS) aktivieren, um ONTAP SAN- und ONTAP SAN ECONOMY-Volumes auf Trident zu verschlüsseln. Trident unterstützt die Rotation von Passphrasen und die Volume-Erweiterung für LUKS-verschlüsselte Volumes.

In Trident verwenden LUKS-verschlüsselte Volumes die aes-xts-plain64-Verschlüsselung und den Modus, wie empfohlen von "NIST".

Hinweis LUKS-Verschlüsselung wird für ASA r2-Systeme nicht unterstützt. Weitere Informationen zu ASA r2-Systemen finden Sie unter "Erfahren Sie mehr über ASA r2-Speichersysteme".
Bevor Sie beginnen
  • Auf den Worker-Knoten muss cryptsetup Version 2.1 oder höher (aber niedriger als 3.0) installiert sein. Weitere Informationen finden Sie unter "Gitlab: cryptsetup".

  • Aus Leistungsgründen empfiehlt NetApp, dass Worker-Knoten Advanced Encryption Standard New Instructions (AES-NI) unterstützen. Um die AES-NI-Unterstützung zu überprüfen, führen Sie den folgenden Befehl aus:

    grep "aes" /proc/cpuinfo

    Wird keine Antwort zurückgegeben, unterstützt Ihr Prozessor kein AES-NI. Weitere Informationen zu AES-NI finden Sie unter: "Intel: Advanced Encryption Standard Instructions (AES-NI)".

LUKS-Verschlüsselung aktivieren

Sie können die volumenbezogene, hostseitige Verschlüsselung mithilfe von Linux Unified Key Setup (LUKS) für ONTAP SAN und ONTAP SAN ECONOMY Volumes aktivieren.

Schritte
  1. Definieren Sie die LUKS-Verschlüsselungsattribute in der Backend-Konfiguration. Weitere Informationen zu den Backend-Konfigurationsoptionen für ONTAP SAN finden Sie unter "ONTAP SAN-Konfigurationsoptionen".

    {
      "storage": [
        {
          "labels": {
            "luks": "true"
          },
          "zone": "us_east_1a",
          "defaults": {
            "luksEncryption": "true"
          }
        },
        {
          "labels": {
            "luks": "false"
          },
          "zone": "us_east_1a",
          "defaults": {
            "luksEncryption": "false"
          }
        }
      ]
    }
  2. Verwenden Sie parameters.selector zur Definition der Speicherpools mit LUKS-Verschlüsselung. Zum Beispiel:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: luks
    provisioner: csi.trident.netapp.io
    parameters:
      selector: "luks=true"
      csi.storage.k8s.io/node-stage-secret-name: luks-${pvc.name}
      csi.storage.k8s.io/node-stage-secret-namespace: ${pvc.namespace}
  3. Erstellen Sie ein Geheimnis, das die LUKS-Passphrase enthält. Zum Beispiel:

    kubectl -n trident create -f luks-pvc1.yaml
    apiVersion: v1
    kind: Secret
    metadata:
      name: luks-pvc1
    stringData:
      luks-passphrase-name: A
      luks-passphrase: secretA

Einschränkungen

LUKS-verschlüsselte Datenträger können die Deduplizierung und Komprimierung von ONTAP nicht nutzen.

Backend-Konfiguration für den Import von LUKS-Volumes

Um ein LUKS-Volume zu importieren, müssen Sie luksEncryption auf (true im Backend setzen. Die luksEncryption Option teilt Trident mit, ob das Volume LUKS-kompatibel (true ist oder nicht LUKS-kompatibel (false, wie im folgenden Beispiel gezeigt.

version: 1
storageDriverName: ontap-san
managementLIF: 10.0.0.1
dataLIF: 10.0.0.2
svm: trident_svm
username: admin
password: password
defaults:
  luksEncryption: 'true'
  spaceAllocation: 'false'
  snapshotPolicy: default
  snapshotReserve: '10'

PVC-Konfiguration für den Import von LUKS-Volumes

Um LUKS-Volumes dynamisch zu importieren, setzen Sie die Annotation trident.netapp.io/luksEncryption auf true und fügen Sie eine LUKS-fähige Speicherklasse in die PVC ein, wie in diesem Beispiel gezeigt.

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: luks-pvc
  namespace: trident
  annotations:
    trident.netapp.io/luksEncryption: "true"
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: luks-sc

Eine LUKS-Passphrase rotieren

Sie können die LUKS-Passphrase rotieren und die Rotation bestätigen.

Warnung Vergessen Sie eine Passphrase erst, nachdem Sie überprüft haben, dass sie von keinem Volume, Snapshot oder Secret mehr referenziert wird. Geht eine referenzierte Passphrase verloren, können Sie das Volume möglicherweise nicht einbinden und die Daten bleiben verschlüsselt und unzugänglich.
Über diese Aufgabe

Die Rotation der LUKS-Passphrase erfolgt, wenn ein Pod, der das Volume einbindet, erstellt wird, nachdem eine neue LUKS-Passphrase festgelegt wurde. Wenn ein neuer Pod erstellt wird, vergleicht Trident die LUKS-Passphrase auf dem Volume mit der aktiven Passphrase im Secret.

  • Stimmt die Passphrase des Volumes nicht mit der aktiven Passphrase im Secret überein, findet eine Rotation statt.

  • Wenn die Passphrase des Volumes mit der aktiven Passphrase im Geheimnis übereinstimmt, wird der previous-luks-passphrase Parameter ignoriert.

Schritte
  1. Fügen Sie die node-publish-secret-name und node-publish-secret-namespace StorageClass-Parameter hinzu. Zum Beispiel:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: csi-san
    provisioner: csi.trident.netapp.io
    parameters:
      trident.netapp.io/backendType: "ontap-san"
      csi.storage.k8s.io/node-stage-secret-name: luks
      csi.storage.k8s.io/node-stage-secret-namespace: ${pvc.namespace}
      csi.storage.k8s.io/node-publish-secret-name: luks
      csi.storage.k8s.io/node-publish-secret-namespace: ${pvc.namespace}
  2. Identifizieren Sie vorhandene Passphrasen auf dem Volume oder Snapshot.

    Volumen
    tridentctl -d get volume luks-pvc1
    GET http://127.0.0.1:8000/trident/v1/volume/<volumeID>
    
    ...luksPassphraseNames:["A"]
    Schnappschuss
    tridentctl -d get snapshot luks-pvc1
    GET http://127.0.0.1:8000/trident/v1/volume/<volumeID>/<snapshotID>
    
    ...luksPassphraseNames:["A"]
  3. Aktualisieren Sie das LUKS-Geheimnis für das Volume, um die neue und die vorherige Passphrase anzugeben. Stellen Sie sicher, dass previous-luke-passphrase-name und previous-luks-passphrase mit der vorherigen Passphrase übereinstimmen.

    apiVersion: v1
    kind: Secret
    metadata:
      name: luks-pvc1
    stringData:
      luks-passphrase-name: B
      luks-passphrase: secretB
      previous-luks-passphrase-name: A
      previous-luks-passphrase: secretA
  4. Erstellen Sie einen neuen Pod, der das Volume einbindet. Dies ist erforderlich, um die Rotation zu initiieren.

  5. Überprüfen Sie, ob die Passphrase geändert wurde.

    Volumen
    tridentctl -d get volume luks-pvc1
    GET http://127.0.0.1:8000/trident/v1/volume/<volumeID>
    
    ...luksPassphraseNames:["B"]
    Schnappschuss
    tridentctl -d get snapshot luks-pvc1
    GET http://127.0.0.1:8000/trident/v1/volume/<volumeID>/<snapshotID>
    
    ...luksPassphraseNames:["B"]
Ergebnisse

Die Passphrase wurde geändert, wenn auf dem Volume und im Snapshot nur die neue Passphrase zurückgegeben wird.

Hinweis Wenn zwei Passphrasen zurückgegeben werden, zum Beispiel luksPassphraseNames: ["B", "A"], ist die Rotation unvollständig. Sie können einen neuen Pod auslösen, um zu versuchen, die Rotation abzuschließen.

Volumenerweiterung aktivieren

Sie können die Volumenerweiterung auf einem LUKS-verschlüsselten Volume aktivieren.

Schritte
  1. Aktivieren Sie das CSINodeExpandSecret Feature-Gate (Beta 1.25+). Weitere Informationen finden Sie unter "Kubernetes 1.25: Verwendung von Secrets für die knotengesteuerte Erweiterung von CSI-Volumes".

  2. Fügen Sie die node-expand-secret-name und node-expand-secret-namespace StorageClass-Parameter hinzu. Zum Beispiel:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: luks
    provisioner: csi.trident.netapp.io
    parameters:
      selector: "luks=true"
      csi.storage.k8s.io/node-stage-secret-name: luks-${pvc.name}
      csi.storage.k8s.io/node-stage-secret-namespace: ${pvc.namespace}
      csi.storage.k8s.io/node-expand-secret-name: luks-${pvc.name}
      csi.storage.k8s.io/node-expand-secret-namespace: ${pvc.namespace}
    allowVolumeExpansion: true
Ergebnisse

Wenn Sie die Online-Speichererweiterung initiieren, übergibt das kubelet die entsprechenden Anmeldeinformationen an den Treiber.