全部產品
Search
文件中心

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

更新時間:Jun 19, 2024

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

前提條件

功能介紹

ECS加密採用行業標準的AES-256密碼編譯演算法,利用祕密金鑰加密雲端硬碟。密鑰可以是服務密鑰和普通密鑰(BYOK)。在加密解密的過程中,執行個體的效能幾乎沒有衰減。建立加密的資料盤並將其掛載到ECS執行個體後,以下資料會被自動加密,並在讀取資料時自動解密。具體步驟,請參見加密資料盤

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

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

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

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

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

使用限制

  • 支援加密的資料盤包括ESSD雲端硬碟、SSD雲端硬碟、高效雲端硬碟和普通雲端硬碟。

  • 不支援加密本地碟。

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

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

(可選)步驟一:配置KMS存取權限

使用KMS的BYOK方式加密金鑰時,需要為ECS執行個體授予KMS的存取權限,即建立阿里雲服務角色並進行授權。操作步驟如下:

  1. 使用阿里雲帳號登入RAM控制台

  2. 在左側導覽列,選擇身份管理 > 角色

  3. 角色頁面,單擊建立角色

  4. 建立角色面板,選擇可信實體類型為阿里雲服務,然後單擊下一步

  5. 選擇角色類型為普通服務角色

  6. 輸入角色名稱AliyunECSDiskEncryptDefaultRole,然後選擇受信服務為雲端服務器

  7. 單擊完成,然後單擊關閉

  8. 在左側導覽列選擇許可權管理 > 授權,然後單擊新增授權

  9. 新增授權頁面,選擇授權範圍為整個雲帳號,在授權主體中搜尋已建立好的阿里雲服務角色AliyunECSDiskEncryptDefaultRole並選中。

  10. 根據需要選擇許可權是系統策略AliyunKMSFullAccess或自訂權限原則AliyunECSDiskEncryptCustomizedPolicy

    AliyunKMSFullAccess許可權相對較大,如果需要更細粒度的許可權控制,可參考下面步驟建立自訂權限原則AliyunECSDiskEncryptCustomizedPolicy。

    1. 新增授權頁面,單擊建立權限原則進入建立權限原則頁面。

    2. 建立權限原則頁面,單擊指令碼編輯頁簽,將如下自訂授權策略的內容拷貝到編輯框中。

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "kms:DescribeKey",
                      "kms:GenerateDataKey",
                      "kms:Decrypt",
                      "kms:TagResource"
                  ],
                  "Resource": "*"
              }
          ]
      }
    3. 單擊繼續編輯基本資料,在名稱後面輸入AliyunECSDiskEncryptCustomizedPolicy,然後單擊確定

  11. 單擊確定,然後單擊完成

步驟二:配置加密雲端硬碟資料卷

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

  1. 配置StorageClass參數。

    1. 將以下內容複寫到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_ssd
          encrypted: "true"
          kmsKeyId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      reclaimPolicy: Delete
      說明
      • encrypted:配置建立的雲端硬碟是否為加密雲端硬碟,true表示產生加密雲端硬碟。

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

    2. 執行以下命令建立StorageClass。

      kubectl create -f sc-kms.yaml
    3. 執行以下命令查看產生的StorageClass。

      kubectl get sc csi-disk-encrypted

      預期輸出:

      NAME                 PROVISIONER                       AGE
      csi-disk-encrypted   diskplugin.csi.alibabacloud.com   9m5s
  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

      預期輸出:

      NAME             STATUS   VOLUME                        CAPACITY   ACCESS MODES   STORAGECLASS             AGE
      disk-pvc         Bound    d-wz92s6d95go6ki9x****        25Gi       RWO            csi-disk-encrypted       10m
    4. 執行以下命令查看PV。

      kubectl get pv

      預期輸出:

      NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                STORAGECLASS        REASON        AGE
      d-wz92s6d95go6ki9x****   25Gi       RWO            Retain           Bound    default/disk-pvc     csi-disk-encrypted                10m

      從以上預期輸出可得,建立的雲端硬碟ID為:d-wz92s6d95go6ki9x****

  3. 查看加密雲端硬碟是否生效。

    1. 登入ECS管理主控台

    2. 在左側導覽列,選擇儲存與快照 > 雲端硬碟

    3. 雲端硬碟頁面可看到d-wz92s6d95go6ki9x****雲端硬碟處於已加密狀態。