Configuración de clave unificada de Linux (LUKS)
Puede habilitar Unified Key Setup (LUKS) de Linux para cifrar los volúmenes DE ECONOMÍA SAN de ONTAP y SAN DE ONTAP en Astra Trident. Astra Trident admite la rotación de claves de acceso y la expansión de volumen para volúmenes cifrados con LUKS.
En Astra Trident, los volúmenes cifrados con LUKS utilizan el cifrado y el modo aes-xts-plain64, como recomienda "NIST".
-
Los nodos de trabajo deben tener instalado cryptsetup 2.1 o superior (pero inferior a 3.0). Para obtener más información, visite "Gitlab: Cryptsetup".
-
Por motivos de rendimiento, recomendamos que los nodos de trabajo admitan las nuevas instrucciones estándar de cifrado avanzado (AES-ni). Para verificar el soporte de AES-ni, ejecute el siguiente comando:
grep "aes" /proc/cpuinfo
Si no se devuelve nada, su procesador no admite AES-ni. Para obtener más información sobre AES-NI, visite: "Intel: Instrucciones estándar de cifrado avanzado (AES-ni)".
Active el cifrado LUKS
Puede habilitar el cifrado por volumen en el lado del host usando la configuración de clave unificada de Linux (LUKS) para SAN de ONTAP y volúmenes DE ECONOMÍA SAN de ONTAP.
-
Defina los atributos de cifrado LUKS en la configuración de backend. Para obtener más información sobre las opciones de configuración de backend para SAN de ONTAP, consulte "Opciones de configuración de SAN de ONTAP".
"storage": [ { "labels":{"luks": "true"}, "zone":"us_east_1a", "defaults": { "luksEncryption": "true" } }, { "labels":{"luks": "false"}, "zone":"us_east_1a", "defaults": { "luksEncryption": "false" } }, ]
-
Se utiliza
parameters.selector
para definir los pools de almacenamiento mediante el cifrado LUKS. Por ejemplo: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}
-
Cree un secreto que contenga la frase de paso LUKS. Por ejemplo:
kubectl -n trident create -f luks-pvc1.yaml apiVersion: v1 kind: Secret metadata: name: luks-pvc1 stringData: luks-passphrase-name: A luks-passphrase: secretA
Limitaciones
Los volúmenes cifrados LUKS no pueden aprovechar la deduplicación y la compresión de ONTAP.
Configuración de backend para importar volúmenes LUKS
Para importar un volumen LUKS, debe establecer luksEncryption
en(true
en el backend. luksEncryption`La opción indica a Astra Trident si el volumen es compatible con LUKS (`true
) o no con LUKS (false
) como se muestra en el siguiente ejemplo.
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'
Configuración de PVC para importar volúmenes LUKS
Para importar volúmenes LUKS dinámicamente, establezca la anotación trident.netapp.io/luksEncryption
en true
e incluya una clase de almacenamiento habilitada para LUKS en la RVP como se muestra en este ejemplo.
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
Gire una frase de paso LUKS
Puede girar la frase de paso de LUKS y confirmar la rotación.
No olvide una clave de acceso hasta que haya verificado que ya no hace referencia a ningún volumen, snapshot o secreto. Si se pierde una clave de acceso de referencia, es posible que no se pueda montar el volumen y los datos seguirán estando cifrados e inaccesibles. |
LA rotación DE la frase de paso LUKS se produce cuando se crea un pod que monta el volumen después de especificar una nueva frase de paso LUKS. Cuando se crea un nuevo pod, Astra Trident compara la frase de paso de LUKS del volumen con la frase de paso activa en el secreto.
-
Si la clave de acceso del volumen no coincide con la clave de acceso activa en el secreto, se produce la rotación.
-
Si la clave de acceso del volumen coincide con la clave de acceso activa en el secreto,
previous-luks-passphrase
se omite el parámetro.
-
Añada
node-publish-secret-name
los parámetros ynode-publish-secret-namespace
StorageClass. Por ejemplo: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}
-
Identifique las bases de datos passhrases existentes en el volumen o la snapshot.
Volumentridentctl -d get volume luks-pvc1 GET http://127.0.0.1:8000/trident/v1/volume/<volumeID> ...luksPassphraseNames:["A"]
Snapshottridentctl -d get snapshot luks-pvc1 GET http://127.0.0.1:8000/trident/v1/volume/<volumeID>/<snapshotID> ...luksPassphraseNames:["A"]
-
Actualice el secreto LUKS del volumen para especificar las passphrases nuevas y anteriores. Asegúrese de que
previous-luke-passphrase-name
`previous-luks-passphrase`coincide con la frase de contraseña anterior.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
-
Cree un nuevo pod montando el volumen. Esto es necesario para iniciar la rotación.
-
Compruebe que se ha girado la frase de paso.
Volumentridentctl -d get volume luks-pvc1 GET http://127.0.0.1:8000/trident/v1/volume/<volumeID> ...luksPassphraseNames:["B"]
Snapshottridentctl -d get snapshot luks-pvc1 GET http://127.0.0.1:8000/trident/v1/volume/<volumeID>/<snapshotID> ...luksPassphraseNames:["B"]
La frase de contraseña se giró cuando solo se devuelve la nueva frase de contraseña en el volumen y la instantánea.
Si se devuelven dos contraseñas, por ejemplo luksPassphraseNames: ["B", "A"] , la rotación está incompleta. Puede activar un nuevo pod para intentar completar la rotación.
|
Habilite la expansión de volumen
Es posible habilitar la ampliación de volumen en un volumen cifrado LUKS.
-
Active la
CSINodeExpandSecret
puerta de función (beta 1,25+). Consulte "Kubernetes 1.25: Use Secrets for Node-Driven Expansion of CSI Volumes" para obtener más información. -
Añada
node-expand-secret-name
los parámetros ynode-expand-secret-namespace
StorageClass. Por ejemplo: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
Al iniciar la ampliación de almacenamiento en línea, el kubelet pasa las credenciales adecuadas al controlador.