Configuration unifiée des clés Linux (LUKS)
Vous pouvez activer Linux Unified Key Setup (LUKS) pour chiffrer les volumes ONTAP SAN et ONTAP SAN ECONOMY sur Trident. Trident prend en charge la rotation des phrases de passe et l'extension de volume pour les volumes chiffrés LUKS.
Dans Trident, les volumes chiffrés LUKS utilisent le chiffrement et le mode aes-xts-plain64, comme recommandé par"NIST" .
|
|
Le chiffrement LUKS n'est pas pris en charge pour les systèmes ASA r2. Pour plus d'informations sur les systèmes ASA r2, consultez"En savoir plus sur les systèmes de stockage ASA r2" . |
-
Les nœuds de travail doivent avoir cryptsetup 2.1 ou supérieur (mais inférieur à 3.0) installé. Pour plus d'informations, consultez"Gitlab : cryptsetup" .
-
Pour des raisons de performance, NetApp recommande que les nœuds de travail prennent en charge les nouvelles instructions de la norme de chiffrement avancé (AES-NI). Pour vérifier la prise en charge d'AES-NI, exécutez la commande suivante :
grep "aes" /proc/cpuinfo
Si aucune réponse n'est reçue, votre processeur ne prend pas en charge AES-NI. Pour plus d'informations sur AES-NI, consultez :"Intel : Instructions de la norme de chiffrement avancée (AES-NI)" .
Activer le chiffrement LUKS
Vous pouvez activer le chiffrement par volume, côté hôte, à l'aide de Linux Unified Key Setup (LUKS) pour les volumes ONTAP SAN et ONTAP SAN ECONOMY.
-
Définissez les attributs de chiffrement LUKS dans la configuration du backend. Pour plus d'informations sur les options de configuration du backend pour ONTAP SAN, veuillez consulter la documentation."Options de configuration SAN ONTAP" .
{ "storage": [ { "labels": { "luks": "true" }, "zone": "us_east_1a", "defaults": { "luksEncryption": "true" } }, { "labels": { "luks": "false" }, "zone": "us_east_1a", "defaults": { "luksEncryption": "false" } } ] } -
Utiliser
parameters.selectordéfinir les pools de stockage à l'aide du chiffrement LUKS. Par exemple: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} -
Créez un secret contenant la phrase de passe LUKS. Par exemple:
kubectl -n trident create -f luks-pvc1.yaml apiVersion: v1 kind: Secret metadata: name: luks-pvc1 stringData: luks-passphrase-name: A luks-passphrase: secretA
Limites
Les volumes chiffrés LUKS ne peuvent pas bénéficier de la déduplication et de la compression ONTAP .
Configuration du backend pour l'importation des volumes LUKS
Pour importer un volume LUKS, vous devez configurer luksEncryption à(true en arrière-plan. Le luksEncryption Cette option indique à Trident si le volume est conforme à la norme LUKS.(true ) ou non conforme à LUKS(false ) comme le montre l'exemple suivant.
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'
Configuration PVC pour l'importation de volumes LUKS
Pour importer dynamiquement des volumes LUKS, définissez l'annotation trident.netapp.io/luksEncryption à true et inclure une classe de stockage compatible LUKS dans le PVC comme indiqué dans cet exemple.
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
Rotation d'une phrase de passe LUKS
Vous pouvez modifier la phrase de passe LUKS et confirmer la modification.
|
|
N’oubliez pas une phrase de passe tant que vous n’avez pas vérifié qu’elle n’est plus référencée par aucun volume, instantané ou secret. Si la phrase de passe de référence est perdue, vous risquez de ne pas pouvoir monter le volume et les données resteront chiffrées et inaccessibles. |
La rotation de la phrase de passe LUKS se produit lorsqu'un pod qui monte le volume est créé après la spécification d'une nouvelle phrase de passe LUKS. Lors de la création d'un nouveau pod, Trident compare la phrase de passe LUKS du volume à la phrase de passe active du secret.
-
Si la phrase de passe figurant sur le volume ne correspond pas à la phrase de passe active dans le secret, une rotation a lieu.
-
Si la phrase de passe figurant sur le volume correspond à la phrase de passe active dans le secret, le
previous-luks-passphraseCe paramètre est ignoré.
-
Ajoutez le
node-publish-secret-nameetnode-publish-secret-namespaceParamètres de StorageClass. Par exemple: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} -
Identifier les phrases de passe existantes sur le volume ou l'instantané.
Volumetridentctl -d get volume luks-pvc1 GET http://127.0.0.1:8000/trident/v1/volume/<volumeID> ...luksPassphraseNames:["A"]
Instantanétridentctl -d get snapshot luks-pvc1 GET http://127.0.0.1:8000/trident/v1/volume/<volumeID>/<snapshotID> ...luksPassphraseNames:["A"]
-
Mettez à jour le secret LUKS du volume pour spécifier les nouvelles et anciennes phrases de passe. Assurer
previous-luke-passphrase-nameetprevious-luks-passphrasecorrespondre à la phrase de passe précédente.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 -
Créez un nouveau pod en montant le volume. Ceci est nécessaire pour lancer la rotation.
-
Vérifiez que la phrase de passe a été modifiée.
Volumetridentctl -d get volume luks-pvc1 GET http://127.0.0.1:8000/trident/v1/volume/<volumeID> ...luksPassphraseNames:["B"]
Instantanétridentctl -d get snapshot luks-pvc1 GET http://127.0.0.1:8000/trident/v1/volume/<volumeID>/<snapshotID> ...luksPassphraseNames:["B"]
La phrase de passe a été renouvelée lorsque seule la nouvelle phrase de passe a été renvoyée sur le volume et l'instantané.
|
|
Si deux phrases de passe sont renvoyées, par exemple luksPassphraseNames: ["B", "A"] La rotation est incomplète. Vous pouvez déclencher une nouvelle capsule pour tenter de terminer la rotation.
|
Activer l'expansion du volume
Vous pouvez activer l'extension de volume sur un volume chiffré LUKS.
-
Activer
CSINodeExpandSecretfonctionnalité gate (bêta 1.25+). Se référer à "Kubernetes 1.25 : Utilisation des secrets pour l’extension des volumes CSI pilotée par les nœuds" pour plus de détails. -
Ajoutez le
node-expand-secret-nameetnode-expand-secret-namespaceParamètres de StorageClass. Par exemple: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
Lorsque vous lancez l'extension du stockage en ligne, le kubelet transmet les informations d'identification appropriées au pilote.