使用雲端硬碟加密功能,系統會將傳輸到雲端硬碟的資料自動進行加密,並在讀取資料時自動解密。雲端硬碟加密適用於有高安全性或合規性要求的應用情境,您無需自建和維護密鑰管理基礎設施,即可保護資料的隱私性和自主性。本文介紹如何使用阿里雲Key Management Service(Key Management Service)中管理的金鑰組叢集中的雲端硬碟儲存卷資料加密。
前提條件
叢集預設已安裝CSI組件。如需升級請參見升級csi-plugin和csi-provisioner。
說明如果您叢集中使用Flexvolume組件,由於Flexvolume已廢棄,請參見遷移Flexvolume至CSI完成遷移後再進行掛載。您可以在 ,在儲存頁簽下確認儲存群組件類型。
已開通Key Management Service。具體操作,請參見開通Key Management Service。
已通過kubectl串連Kubernetes叢集。具體操作,請參見通過kubectl串連叢集。
使用KMS的BYOK方式加密金鑰時,需要為ECS執行個體授予KMS的存取權限。具體操作,請參見(可選)步驟一:配置KMS存取權限。
功能介紹
ECS加密採用行業標準的AES-256密碼編譯演算法,利用祕密金鑰加密雲端硬碟。密鑰可以是服務密鑰和普通密鑰(BYOK)。在加密解密的過程中,執行個體的效能幾乎沒有衰減。建立加密的資料盤並將其掛載到ECS執行個體後,以下資料會被自動加密,並在讀取資料時自動解密。具體步驟,請參見加密資料盤。
加密雲端硬碟中的待用資料。
加密雲端硬碟和執行個體間傳輸的資料(不包括作業系統內的資料)。
加密雲端硬碟從執行個體傳遞到後端儲存叢集的資料。
從加密雲端硬碟建立的所有快照,並且該快照的加密金鑰與雲端硬碟的加密金鑰保持相同。
從加密快照建立的所有雲端硬碟。
使用限制
支援加密的資料盤包括ESSD雲端硬碟、SSD雲端硬碟、高效雲端硬碟和普通雲端硬碟。
不支援加密本地碟。
非加密雲端硬碟不能直接轉換成加密雲端硬碟。
加密雲端硬碟不能直接轉換為非加密雲端硬碟。
(可選)步驟一:配置KMS存取權限
使用KMS的BYOK方式加密金鑰時,需要為ECS執行個體授予KMS的存取權限,即建立阿里雲服務角色並進行授權。操作步驟如下:
建立用於訪問KMS的RAM角色。如果已有AliyunECSDiskEncryptDefaultRole角色,可直接進行授權。
使用阿里雲帳號或Resource Access Management員帳號登入RAM控制台。
在左側導覽列,選擇 。
在角色頁面,單擊建立角色。
在建立角色頁面,選擇可信實體類型為阿里雲服務,然後單擊下一步。
選擇角色類型為普通服務角色。
輸入角色名稱為AliyunECSDiskEncryptDefaultRole,然後選擇受信服務為雲端服務器。
單擊完成,然後單擊關閉。
為上一步建立的RAM角色授權。
在左側導覽列選擇
,然後單擊新增授權。在新增授權頁面,選擇授權範圍為帳號層級,在授權主體中搜尋已建立的RAM角色AliyunECSDiskEncryptDefaultRole並選中。
根據需要選擇許可權是系統策略AliyunKMSFullAccess或自訂權限原則AliyunECSDiskEncryptCustomizedPolicy。
重要AliyunKMSFullAccess許可權相對較大,如果需要更細粒度的許可權控制,可參考下面步驟建立自訂權限原則AliyunECSDiskEncryptCustomizedPolicy。
單擊確認新增授權,然後單擊關閉。
步驟二:加密雲端硬碟資料卷
在建立雲端硬碟時才可以啟用雲端硬碟加密,而掛載或卸載雲端硬碟時並不需要進行加密相關的配置和操作。
配置StorageClass參數。
將以下內容複寫到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;當encrypted
為false
時,此配置不生效。
執行以下命令建立StorageClass。
kubectl create -f sc-kms.yaml
執行以下命令查看產生的StorageClass。
kubectl get sc csi-disk-encrypted
預期輸出:
NAME PROVISIONER AGE csi-disk-encrypted diskplugin.csi.alibabacloud.com 9m5s
建立PVC。
將以下內容複寫到sc-pvc.yaml檔案中。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: csi-disk-encrypted
執行以下命令建立PVC。
kubectl create -f sc-pvc.yaml
執行以下命令查看建立的PVC。
kubectl get pvc
預期輸出:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE disk-pvc Bound d-wz92s6d95go6ki9x**** 25Gi RWO csi-disk-encrypted 10m
執行以下命令查看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****。
查看加密雲端硬碟是否生效。
登入ECS管理主控台。
在左側導覽列,選擇 。
在雲端硬碟頁面可看到d-wz92s6d95go6ki9x****雲端硬碟處於已加密狀態。