Skip to main content
Version: Next

Проверка шифрования разделов Longhorn

Для того чтобы проверить, что разделы в kubernetes шифруются на диске, необходимо выполнить несколько шагов.

Для начала проверим список зарегистрированных StorageClass:

kubectl -n longhorn-system get storageclass

Пример вывода:

longhorn (default)       driver.longhorn.io   Delete          Immediate           true                   233d
longhorn-crypto-global driver.longhorn.io Delete Immediate true 26d
longhorn-hdd driver.longhorn.io Delete Immediate false 31d
longhorn-nvme driver.longhorn.io Delete Immediate false 28d

Storage class с включенным шифрованием обычно имеет суффикс crypto или crypto-global. В данном примере, storage class с включенным шифрованием называется longhorn-crypto-global.

Проверим, что в данном storage class включено шифрование:

kubectl -n longhorn-system get sc longhorn-crypto-global -o yaml | grep 'encrypted:'

В случае включенного шифрования вывод должен содержать: encrypted: "true".

Получим список разделов, используемых виртуальными машинами DataLab:

kubectl get pvc -n datalab -o wide

Пример вывода:

NAME                   STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS             AGE     VOLUMEMODE
dlclaim-0305f95040a3 Bound pvc-b65929b5-e508-4809-a406-6cc12f9e04fb 50Gi RWO longhorn-crypto-global 12d Filesystem
dlclaim-0a06cbd2e900 Bound pvc-f53fbef4-8c57-430f-b596-c95e5cb03063 50Gi RWO longhorn-crypto-global 6d13h Filesystem
dlclaim-388c00e12156 Bound pvc-235cb98d-7bc0-4183-a885-b4e53d81a273 50Gi RWO longhorn-crypto-global 4d21h Filesystem

Виртуальные машины, использующие шифрованные разделы используют storage class "longhorn-crypto-global". Для того чтобы проверить, что раздел действительно зашифрован, можно попытаться примонтировать виртуальный диск в одну из папок на хост (данные действия необходимо производить на одной из нод kubernetes):

mkdir /tmp/lh-test
mount /dev/longhorn/pvc-b65929b5-e508-4809-a406-6cc12f9e04fb /tmp/lh-test

При попытке монтирования должна появиться ошибка: mount: /tmp/lh-test: unknown filesystem type 'crypto_LUKS'.

Это означает, что раздел зашифрован и его нельзя примонтировать без ключа.

Настройки шифрования, в том числе и парольная фраза хранятся в Kubernetes Secrets. Если отдельные параметры не указаны, то используются следующие значения:

  • Парольная фраза (CRYPTO_KEY_VALUE) - случайно генерируется при установке
  • Хранилище ключа (CRYPTO_KEY_PROVIDER) - secret (Kubernetes Secrets)
  • Алгоритм шифрования (CRYPTO_KEY_CIPHER) - aes-xts-plain64 (AES с режимом связывания блоков xts)
  • Длина ключа (CRYPTO_KEY_SIZE) - 256 (256 бит)
  • Алгоритм генерации ключа (KDF) из парольной фразы (CRYPTO_PBKDF) - argon2i