使用雲端硬碟加密功能,系統會將傳輸到雲端硬碟的資料自動進行加密,並在讀取資料時自動解密。雲端硬碟加密適用於有高安全性或合規性要求的應用情境,您無需自建和維護密鑰管理基礎設施,即可保護資料的隱私性和自主性。本文介紹如何使用阿里雲Key Management Service(Key Management Service)中管理的金鑰組叢集中的雲端硬碟儲存卷資料加密。
前提條件
已建立Kubernetes叢集,並且在該叢集中安裝CSI外掛程式。具體操作,請參見建立Kubernetes託管版叢集。
已開通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的存取權限,即建立阿里雲服務角色並進行授權。操作步驟如下:
使用阿里雲帳號登入RAM控制台。
在左側導覽列,選擇 。
在角色頁面,單擊建立角色。
在建立角色面板,選擇可信實體類型為阿里雲服務,然後單擊下一步。
選擇角色類型為普通服務角色。
輸入角色名稱為AliyunECSDiskEncryptDefaultRole,然後選擇受信服務為雲端服務器。
單擊完成,然後單擊關閉。
在左側導覽列選擇 ,然後單擊新增授權。
在新增授權頁面,選擇授權範圍為整個雲帳號,在授權主體中搜尋已建立好的阿里雲服務角色AliyunECSDiskEncryptDefaultRole並選中。
根據需要選擇許可權是系統策略AliyunKMSFullAccess或自訂權限原則AliyunECSDiskEncryptCustomizedPolicy。
AliyunKMSFullAccess許可權相對較大,如果需要更細粒度的許可權控制,可參考下面步驟建立自訂權限原則AliyunECSDiskEncryptCustomizedPolicy。
在新增授權頁面,單擊建立權限原則進入建立權限原則頁面。
在建立權限原則頁面,單擊指令碼編輯頁簽,將如下自訂授權策略的內容拷貝到編輯框中。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt", "kms:TagResource" ], "Resource": "*" } ] }
單擊繼續編輯基本資料,在名稱後面輸入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****雲端硬碟處於已加密狀態。