跳至主要内容

磁碟區安全

自 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: argon2i
    important

    該範例包含 Kubernetes Secret 的預設 YAML 代碼。除此之外,你可以使用 LUKS 模式的加密選項,這是一種 cryptsetup 操作模式。Harvester v1.4.1 及更高版本支援這些選項,但你必須驗證這些選項是否受到節點的支援。

    選項可能的值
    CRYPTO_KEY_CIPHERaes-xts-plain, aes-xts-plain64, aes-cbc-plain, aes-cbc-plain64, aes-cbc-essiv:sha256
    CRYPTO_KEY_HASHsha256, sha384, sha512
    CRYPTO_KEY_SIZE256, 384, 512
    CRYPTO_PBKDFargon2i, 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: Immediate
    important

    你可以使用 Harvester UI(Edit as YAML 功能)和 kubectl 在系統命名空間中建立 Secret。系統命名空間中的資源不會顯示在 Harvester UI Secrets 畫面上。

加密磁碟區​

你可以在以下 UI 位置使用加密 StorageClass 建立加密磁碟區:

  • Volumes: Create 畫面

    create-empty-volume

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

    create-empty-volume

與 Rancher 整合的進階用法​

Secret 是未加密的 Base64 編碼字串。為了保護 Secret 的安全,你可以使用專案和命名空間來隔離權限。如需更多資訊,請參閱多租戶。

限制​

你無法執行以下操作:

  • 從加密磁碟區匯出新磁碟區
  • 將加密磁碟區還原為未加密磁碟區
  • 將未加密磁碟區還原為加密磁碟區