全部產品
Search
文件中心

Container Service for Kubernetes:加密雲端硬碟儲存卷

更新時間:Mar 18, 2025

使用雲端硬碟加密功能,系統會將傳輸到雲端硬碟的資料自動進行加密,並在讀取資料時自動解密。雲端硬碟加密適用於有高安全性或合規性要求的應用情境,您無需自建和維護密鑰管理基礎設施,即可保護資料的隱私性和自主性。本文介紹如何使用阿里雲Key Management Service中管理的金鑰組叢集中的雲端硬碟儲存卷進行資料加密。

功能介紹

瞭解加密原理

雲端硬碟的加密採用行業標準的AES-256密碼編譯演算法,並且通過Key Management Service進行加密。加密金鑰採用雙層設計,並通過信封加密的機制實現對資料的加密,第一層為使用者的主要金鑰CMK(Customer Master Key),第二層為根據主要金鑰產生的資料密鑰DK(Data Key)。其中,主要金鑰CMK用於對資料密鑰DK進行加解密操作和保護,資料密鑰DK用於對真實業務資料進行加解密操作和保護。加密流程和信封加密機制如下:

  1. 加密資料密鑰DK。

    在使用資料密鑰DK之前,會用主要金鑰CMK加密資料密鑰。加密後的資料密鑰(非明文)可以安全地與加密的業務資料一同儲存。這樣即使儲存介質被訪問,沒有CMK也無法解密資料密鑰。

  2. 儲存和讀取加密資料。

    當需要讀取加密資料時,首先通過KMS請求解密資料密鑰。KMS驗證請求後,返回資料密鑰的明文形式,這一過程通常在記憶體中完成,不會儲存在任何儲存介質上。然後,使用管理程式在記憶體中的明文資料密鑰來解密雲端硬碟I/O操作中的資料。

說明

整個信封加密過程中,主要金鑰的明文不會在KMS託管的密碼機之外進行儲存和使用。同時,資料密鑰明文僅會在使用者使用的服務執行個體所在的宿主機的記憶體中進行使用,永遠不會以明文形式儲存在任何儲存介質上。

更多資訊,請參見雲產品整合KMS加密概述

加密哪些資料

加密的資料盤掛載到Pod後,以下資料會被自動加密,並在讀取資料時自動解密。

  • 加密雲端硬碟中的待用資料。

  • 加密雲端硬碟和執行個體間傳輸的資料(不包括作業系統內的資料)。

  • 加密雲端硬碟從執行個體傳遞到後端儲存叢集的資料。

  • 從加密雲端硬碟建立的所有快照,並且該快照的加密金鑰與雲端硬碟的加密金鑰保持相同。

  • 從加密快照建立的所有雲端硬碟。

前提條件

  • 叢集中已安裝CSI組件。

    說明
    • 您可以在叢集管理頁的左側導覽列選擇營運管理 > 組件管理,在儲存頁簽下確認csi-plugin和csi-provisioner組件的安裝情況。如需升級CSI組件來享受某些特定能力,請參見升級csi-plugin和csi-provisioner

    • 如果您的叢集目前使用Flexvolume組件,由於Flexvolume已廢棄,請先遷移到CSI組件。具體操作,請參見遷移Flexvolume至CSI

  • 已開通Key Management Service

注意事項

  • 支援加密的雲端硬碟類型包括ESSD AutoPL雲端硬碟、ESSD雲端硬碟、ESSD Entry雲端硬碟、SSD雲端硬碟、高效雲端硬碟和普通雲端硬碟。

  • 不支援加密本地碟。

  • 非加密雲端硬碟不能直接轉換成加密雲端硬碟;加密雲端硬碟也不能直接轉換為非加密雲端硬碟。

配置KMS存取權限

使用KMS加密雲端硬碟時,需要為ECS授予KMS的存取權限。

  1. 建立用於訪問KMS的RAM角色。具體操作,請參見建立可信實體為阿里雲服務的RAM角色

    說明

    如果已有AliyunECSDiskEncryptDefaultRole角色,可直接進行授權。

    需要注意的配置項如下:

    • 信任主體類型雲端服務

    • 信任主體名稱Elastic Compute Service/ECS

    • 角色名稱:AliyunECSDiskEncryptDefaultRole

  2. 為RAM角色(AliyunECSDiskEncryptDefaultRole)授權。具體操作,請參見為RAM角色授權

    需要注意的配置項如下:

    • 資源範圍帳號層級

    • 權限原則:選擇系統策略AliyunKMSFullAccess,或者自訂權限原則AliyunECSDiskEncryptCustomizedPolicy。

      重要

      AliyunKMSFullAccess許可權相對較大,如果需要更細粒度的許可權控制,建議建立自訂權限原則

      展開查看AliyunECSDiskEncryptCustomizedPolicy許可權內容

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "kms:DescribeKey",
                      "kms:GenerateDataKey",
                      "kms:Decrypt",
                      "kms:TagResource"
                  ],
                  "Resource": "*"
              }
          ]
      }
      1. 單擊確定

加密雲端硬碟儲存卷

在建立雲端硬碟時才可以啟用雲端硬碟加密,掛載或卸載雲端硬碟時並不需要進行加密相關的配置和操作。

  1. 建立啟用雲端硬碟加密的StorageClass。

    1. 修改以下YAML,儲存到sc-kms.yaml。

      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: csi-disk-encrypted
      provisioner: diskplugin.csi.alibabacloud.com
      parameters:
          fsType: ext4
          type: cloud_essd
          encrypted: "true"
          kmsKeyId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      reclaimPolicy: Delete

      相關parameters說明如下:

      • encrypted:建立的雲端硬碟是否為加密雲端硬碟。配置為true表示產生加密雲端硬碟。

      • kmsKeyId:建立加密雲端硬碟所使用的KMS密鑰。不配置時會使用預設的CMK;當encryptedfalse時,此配置不生效。

    2. 建立StorageClass。

      kubectl create -f sc-kms.yaml
  2. 建立PVC。

    1. 將以下內容儲存為sc-pvc.yaml。

      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: disk-pvc
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 20Gi
        storageClassName: csi-disk-encrypted
    2. 建立PVC。

      kubectl create -f sc-pvc.yaml
    3. 查看PVC。

      kubectl get pvc

      預期返回如下,可以看到PVC已綁定自動建立的PV,在VOLUME中可以擷取對應的雲端硬碟ID。

      NAME       STATUS    VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS         VOLUMEATTRIBUTESCLASS   AGE
      disk-pvc   Bound     d-2ze0nmbv2var0d9h****   20Gi       RWO            csi-disk-encrypted   <unset>                 6m20s
  3. 查看加密雲端硬碟是否生效。

    1. 登入ECS管理主控台

    2. 在左側導覽列,選擇儲存與快照 > Block Storage

    3. 雲端硬碟頁簽下,找到目標雲端硬碟,單擊雲端硬碟ID。

    4. 在雲端硬碟詳情頁面的基本資料中,確認是否加密欄位為已加密

相關文檔

如需瞭解更多關於雲端硬碟加密的資訊,請參見加密雲端硬碟