磁碟區安全
自 v1.4.0 版起提供
Harvester 允許你加密和解密虛擬機器映像檔。加密機制利用 Linux 核心模組 dm_crypt 和命令列工具 cryptsetup。
先決條件
準備以下資源:
-
Secret:Kubernetes Secret 用作 dm_crypt 的密碼片語。你必須指定
CRYPTO_KEY_VALUE欄位的值。所有其他欄位都是固定的。
範例 Secret:
apiVersion: v1
kind: Secret
metadata:
name: encryption
namespace: default
data:
CRYPTO_KEY_CIPHER: aes-xts-plain64
CRYPTO_KEY_HASH: sha256
CRYPTO_KEY_PROVIDER: secret
CRYPTO_KEY_SIZE: 256
CRYPTO_KEY_VALUE: "Your encryption passphrase"
CRYPTO_PBKDF: argon2iimportant該範例包含 Kubernetes Secret 的預設 YAML 代碼。除此之外,你可以使用 LUKS 模式的加密選項,這是一種 cryptsetup 操作模式。Harvester v1.4.1 及更高版本支援這些選項,但你必須驗 證這些選項是否受到節點的支援。
選項 可能的值 CRYPTO_KEY_CIPHER aes-xts-plain, aes-xts-plain64, aes-cbc-plain, aes-cbc-plain64, aes-cbc-essiv:sha256 CRYPTO_KEY_HASH sha256, sha384, sha512 CRYPTO_KEY_SIZE 256, 384, 512 CRYPTO_PBKDF argon2i, argon2id, pbkdf2 你可以使用 kubectl 或 Harvester UI(Edit as YAML 功能)在系統命名空間中建立 Secret。系統命名空間中的資源不會顯示在 Harvester UI Secrets 畫面上。
-
StorageClass:映像檔使用 Longhorn 加密,因此必須將所需的欄位傳遞給 Longhorn CSI 驅動程式。你可以在建立 StorageClass 時指定加密 Secret。如需更多資訊,請參閱映像檔 StorageClass。

StorageClass 範例:
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: encryption
parameters:
csi.storage.k8s.io/node-publish-secret-name: encryption
csi.storage.k8s.io/node-publish-secret-namespace: default
csi.storage.k8s.io/node-stage-secret-name: encryption
csi.storage.k8s.io/node-stage-secret-namespace: default
csi.storage.k8s.io/provisioner-secret-name: encryption
csi.storage.k8s.io/provisioner-secret-namespace: default
encrypted: "true"
migratable: "true"
numberOfReplicas: "3"
staleReplicaTimeout: "2880"
provisioner: driver.longhorn.io
reclaimPolicy: Delete
volumeBindingMode: Immediateimportant你可以使用 Harvester UI(Edit as YAML 功能)和 kubectl 在系統命名空間中建立 Secret。系統命名空間中的資源不會顯示在 Harvester UI Secrets 畫面上。
加密磁碟區
你可以在以下 UI 位置使用加密 StorageClass 建立加密磁碟區:
-
Volumes: Create 畫面

-
Virtual Machine: Create 畫面上的 Volumes 分頁

與 Rancher 整合的進階用法
Secret 是未加密的 Base64 編碼字串。為了保護 Secret 的安全,你可以使用專案和命名空間來隔離權限。如需更多資訊,請參閱多租戶。
限制
你無法執行以下操作:
- 從加密磁碟區匯出新磁碟區
- 將加密磁碟區還原為未加密磁碟區
- 將未加密磁碟區還原為加密磁碟區