映像檔安全性
自 v1.4.0 版本起提供
Harvester 允許您加密和解密虛擬機器映像檔。加密機制利用 Linux kernel 模組 dm_crypt 和命令列公用程式 cryptsetup。
此功能僅支援 Longhorn V1 資料引擎。您無法加密和解密儲存在其他儲存解決方案中的映像檔。
先決條件
請準備以下資源:
-
來源虛擬機器映像檔:您可以使用任何支援的方法 上傳或建立映像檔。
警告請勿上傳已加密的映像檔。
-
Secret:Kubernetes Secret 用作 dm_crypt 的密碼短語 (passphrase)。您必須指定
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 畫面上。
加密虛擬機器映像檔
-
在 Harvester UI 上,前往 Images (映像檔)。
-
點擊 Create (建立)。
-
指定命名空間和名稱。
-
在 Basics (基本) 頁籤上,選取 Encrypt (加密),然後選取來源映像檔。

- 在 Storage (儲存) 頁籤上,選取包含加密相關欄位的 StorageClass。
Harvester 會將必要的欄位傳遞給 Longhorn。

- 點擊 Create (建立)。
解密虛擬機器映像檔
-
在 Harvester UI 上,前往 Images (映像檔)。
-
點擊 Create (建立)。
-
指定命名空間和名稱。
-
在 Basics (基本) 頁籤上,選取 Decrypt (解密),然後選取來源映像檔。

- 在 Storage (儲存) 頁籤上,選取 harvester-longhorn (Default) 或其他常用的 StorageClass。
Harvester 使用您想要解密之來源映像檔的 StorageClass。

- 點擊 Create (建立)。
使用具有加密卷冊的映像檔
建立虛擬機器時,您必須選取想要使用的映像檔。

當虛擬機器使用的卷冊被加密時,Virtual Machines (虛擬機器) 畫面會顯示以下圖示和訊息。


若要確定哪些卷冊已加密,請檢查 Virtual Machine 詳細資訊畫面上的 Volumes (卷冊) 頁籤。

結合 Rancher 整合的進階用法
Secret 是一個未加密的 Base64 編碼字串。為了保證 Secret 的安全,您可以使用專案和命名空間來隔離權限。如需更多資訊,請參閱 多租戶。
限制
您無法執行以下動作:
- 從加密的映像檔匯出新映像檔
- 下載加密的映像檔
- 上傳加密的映像檔