Configuration de clé unifiée Linux (LUKS)
Vous pouvez activer l'utilitaire Linux Unified Key Setup (LUKS) pour chiffrer les volumes SAN ONTAP et SAN ONTAP ÉCONOMIQUES sur Astra Trident. Astra Trident prend en charge la rotation de phrase secrète et l'extension de volume pour les volumes chiffrés LUKS.
Dans Astra Trident, les volumes chiffrés LUKS utilisent le cypher et le mode aes-xts-mclair 64, comme recommandé par "NIST".
-
Les nœuds worker doivent avoir cryptsetup 2.1 ou supérieur (mais inférieur à 3.0) installé. Pour plus d'informations, visitez "Gitlab : cryptsetup".
-
Pour des raisons de performances, nous recommandons aux nœuds workers de prendre en charge les nouvelles instructions AES-ni (Advanced Encryption Standard New instructions). Pour vérifier la prise en charge AES-ni, exécutez la commande suivante :
grep "aes" /proc/cpuinfo
Si rien n'est renvoyé, votre processeur ne prend pas en charge AES-ni. Pour plus d'informations sur AES-ni, visitez le site : "Intel : instructions AES-ni (Advanced Encryption Standard instructions)".
Activez le cryptage LUKS
Vous pouvez activer le chiffrement côté hôte par volume en utilisant Linux Unified Key Setup (LUKS) pour SAN ONTAP et les volumes ÉCONOMIQUES SAN ONTAP.
-
Définissez les attributs de cryptage LUKS dans la configuration back-end. Pour plus d'informations sur les options de configuration back-end pour le SAN ONTAP, reportez-vous à la section "Options de configuration du stockage SAN ONTAP".
"storage": [ { "labels":{"luks": "true"}, "zone":"us_east_1a", "defaults": { "luksEncryption": "true" } }, { "labels":{"luks": "false"}, "zone":"us_east_1a", "defaults": { "luksEncryption": "false" } }, ]
-
`parameters.selector`Permet de définir les pools de stockage à l'aide du cryptage 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 qui contient 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 LUKS-chiffrés ne peuvent pas tirer parti de la déduplication et de la compression ONTAP.
Configuration back-end pour l'importation de volumes LUKS
Pour importer un volume LUKS, vous devez définir luksEncryption
sur sur(true
le back-end. L' luksEncryption`option indique à Astra Trident si le volume est conforme LUKS (`true
) ou non conforme LUKS ) (`false`comme indiqué dans 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 des volumes LUKS de façon dynamique, définissez l'annotation trident.netapp.io/luksEncryption
sur true
et incluez une classe de stockage LUKS activée dans la demande de volume virtuel, 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
Faites pivoter une phrase de passe LUKS
Vous pouvez faire pivoter la phrase de passe LUKS et confirmer la rotation.
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 un volume, un snapshot ou un secret. En cas de perte d'une phrase secrète référencée, vous risquez de ne pas pouvoir monter le volume et les données resteront crypté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 pod, Astra Trident compare la phrase de passe LUKS sur le volume à la phrase de passe active dans le secret.
-
Si la phrase de passe du volume ne correspond pas à la phrase de passe active dans le secret, la rotation se produit.
-
Si la phrase de passe du volume correspond à la phrase de passe active du secret, le
previous-luks-passphrase
paramètre est ignoré.
-
Ajoutez les
node-publish-secret-name
paramètres etnode-publish-secret-namespace
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é.
Volumétrietridentctl -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"]
-
Mettez à jour le secret LUKS pour le volume afin de spécifier les phrases de passe nouvelles et précédentes. Assurez-vous que
previous-luke-passphrase-name
`previous-luks-passphrase`la phrase de passe précédente est identique.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 qui monte le volume. Ceci est nécessaire pour lancer la rotation.
-
Vérifiez que la phrase de passe a été pivotée.
Volumétrietridentctl -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 phrase de passe a été pivotée lorsque seule la nouvelle phrase de passe est renvoyée sur le volume et le snapshot.
Si deux phrases de passe sont renvoyées, par exemple luksPassphraseNames: ["B", "A"] , la rotation est incomplète. Vous pouvez déclencher un nouveau pod pour tenter de terminer la rotation.
|
Activer l'extension de volume
Vous pouvez activer l'extension de volume sur un volume chiffré LUKS.
-
Activez la
CSINodeExpandSecret
fonctionnalité Gate (bêta 1.25+). Voir "Kubernetes 1.25 : utilisez les secrets de l'extension des volumes CSI basée sur des nœuds" pour plus de détails. -
Ajoutez les
node-expand-secret-name
paramètres etnode-expand-secret-namespace
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 initiez l'extension du stockage en ligne, le kubelet transmet les identifiants appropriés au pilote.