Configuração de chave unificada do Linux (LUKS)
Você pode ativar a configuração de chave unificada do Linux (LUKS) para criptografar volumes DE ECONOMIA DE SAN ONTAP e SAN ONTAP no Trident. O Trident suporta rotação de senhas e expansão de volume para volumes criptografados com LUKS.
No Trident, os volumes criptografados por LUKS usam a cifra e o modo aes-xts-plain64, conforme recomendado "NIST"pelo .
-
Os nós de trabalho devem ter o cryptsetup 2,1 ou superior (mas inferior a 3,0) instalado. Para obter mais informações, visite "Gitlab: Cryptsetup".
-
Por motivos de desempenho, recomendamos que os nós de trabalho suportem Advanced Encryption Standard New Instructions (AES-NI). Para verificar o suporte ao AES-NI, execute o seguinte comando:
grep "aes" /proc/cpuinfo
Se nada for devolvido, o processador não suporta AES-NI. Para obter mais informações sobre o AES-NI, visite: "Intel: Advanced Encryption Standard Instructions (AES-NI)".
Ativar encriptação LUKS
Você pode ativar a criptografia por volume no lado do host usando o LUKS (Configuração de chave unificada do Linux) para volumes ECONÔMICOS SAN ONTAP e SAN ONTAP.
-
Defina atributos de criptografia LUKS na configuração de back-end. Para obter mais informações sobre opções de configuração de back-end para SAN ONTAP, "Opções de configuração de SAN ONTAP"consulte .
"storage": [ { "labels":{"luks": "true"}, "zone":"us_east_1a", "defaults": { "luksEncryption": "true" } }, { "labels":{"luks": "false"}, "zone":"us_east_1a", "defaults": { "luksEncryption": "false" } }, ]
-
Use
parameters.selector
para definir os pools de armazenamento usando a criptografia LUKS. Por exemplo: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}
-
Crie um segredo que contenha a frase-passe LUKS. Por exemplo:
kubectl -n trident create -f luks-pvc1.yaml apiVersion: v1 kind: Secret metadata: name: luks-pvc1 stringData: luks-passphrase-name: A luks-passphrase: secretA
Limitações
Os volumes criptografados com LUKS não podem aproveitar a deduplicação e a compactação do ONTAP.
Configuração de back-end para importação de volumes LUKS
Para importar um volume LUKS, você deve definir luksEncryption
como(true
no back-end. A luksEncryption
opção informa ao Trident se o volume é compatível com LUKS (true
) ou não com LUKS (false
), conforme mostrado no exemplo a seguir.
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'
Configuração de PVC para importação de volumes LUKS
Para importar volumes LUKS dinamicamente, defina a anotação trident.netapp.io/luksEncryption
como true
e inclua uma classe de armazenamento habilitada para LUKS no PVC, conforme mostrado neste exemplo.
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
Rode uma frase-passe LUKS
Pode rodar a frase-passe LUKS e confirmar a rotação.
Não se esqueça de uma frase-passe até ter verificado que ela não é mais referenciada por qualquer volume, instantâneo ou segredo. Se uma frase-passe referenciada for perdida, talvez você não consiga montar o volume e os dados permanecerão criptografados e inacessíveis. |
A rotação da frase-passe LUKS ocorre quando um pod que monta o volume é criado após uma nova frase-passe LUKS ser especificada. Quando um novo pod é criado, o Trident compara a frase-passe LUKS no volume com a frase-passe ativa no segredo.
-
Se a frase-passe no volume não corresponder à frase-passe ativa no segredo, ocorre rotação.
-
Se a frase-passe no volume corresponder à frase-passe ativa no segredo, o
previous-luks-passphrase
parâmetro é ignorado.
-
Adicione os
node-publish-secret-name
parâmetros enode-publish-secret-namespace
StorageClass. Por exemplo: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}
-
Identificar senhas existentes no volume ou instantâneo.
Volumetridentctl -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"]
-
Atualize o segredo LUKS para o volume para especificar as senhas novas e anteriores. Certifique-se
previous-luke-passphrase-name
eprevious-luks-passphrase
faça a correspondência da frase-passe 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
-
Crie um novo pod de montagem do volume. Isto é necessário para iniciar a rotação.
-
Verifique se a senha foi girada.
Volumetridentctl -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"]
A frase-passe foi girada quando apenas a nova frase-passe é retornada no volume e no instantâneo.
Se duas senhas forem retornadas, por luksPassphraseNames: ["B", "A"] exemplo, a rotação estará incompleta. Você pode acionar um novo pod para tentar completar a rotação.
|
Ative a expansão de volume
Você pode ativar a expansão de volume em um volume criptografado com LUKS.
-
Ative a
CSINodeExpandSecret
porta de recurso (beta 1,25 ou mais). "Kubernetes 1,25: Use segredos para a expansão orientada por nós de volumes CSI"Consulte para obter detalhes. -
Adicione os
node-expand-secret-name
parâmetros enode-expand-secret-namespace
StorageClass. Por exemplo: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
Quando você inicia a expansão de armazenamento on-line, o kubelet passa as credenciais apropriadas para o driver.