數據加密適用于對高安全性或合規性具有較高要求的應用場景,您無需自建和維護密鑰管理基礎設施,通過加密保護存儲在阿里云ECS上的數據就能保障數據的隱私性和自主性。本文介紹如何使用KMS(Key Management Service)托管的CMK(Customer Master Key)或OSS完全托管密鑰功能對阿里云容器服務ACK集群的OSS存儲卷數據加密。
前提條件
集群默認已安裝CSI組件。如需升級請參見升級csi-plugin和csi-provisioner。
說明如果您集群中使用Flexvolume組件,由于Flexvolume已廢棄,請參見遷移Flexvolume至CSI完成遷移后再進行掛載。您可以在 ,在存儲頁簽下確認存儲組件類型。
已創建Bucket,Bucket與集群需使用同一賬號操作。
說明若Bucket和ECS實例位于相同地域,請選擇私網域名。
加密方式
OSS存儲卷加密分為服務端加密SSE(Server-Side Encryption)、客戶端加密,阿里云容器服務只支持服務端加密:
服務端加密:OSS將數據保存到數據中心的磁盤之前進行加密,并且在下載對象時自動進行解密。
客戶端加密:可以使用客戶端加密SDK,在本地進行數據加密,并將加密后的數據上傳到OSS。
OSS針對不同使用場景提供了兩種服務器端加密方式,您可以根據實際使用場景選用。
使用KMS托管的默認CMK或指定CMK ID加密OSS Object(SSE-KMS)
KMS托管的默認CMK加密OSS Object:上傳對象文件時,配置
HTTP X-OSS-server-side-encryption
為KMS
,不指定CMK ID。KMS托管的指定CMK ID加密OSS Object:上傳對象文件時,配置
HTTP X-OSS-server-side-encryption
為KMS
,指定X-OSS-server-side-encryption-key-id
為CMK ID
。
重要使用KMS密鑰功能時會產生少量的KMS密鑰API調用費用。關于費用詳情,請參考KMS計費說明。
數據無需通過網絡發送到KMS服務端進行加解密,是一種低成本的加解密方式。
使用OSS完全托管的密鑰加密OSS Object(SSE-OSS)
基于OSS完全托管的加密方式,是Object的一種屬性。
OSS負責生成和管理數據加密密鑰,并使用行業標準的強加密算法AES-256。
上傳對象文件時,配置
HTTP X-OSS-server-side-encryption
為AES256
。
同一對象(Object)在同一時間內僅可以使用一種服務器端加密方式。
為OSS存儲卷加密
通過OSSFS工具配置OSS存儲卷的加密參數,在掛載PV時配置生效。關于OSSFS的配置及安裝,請參見OSSFS的安裝及配置。
OSSFS支持以下三種加密配置方式:
方式一:使用KMS托管的默認CMK加密OSS Object
將以下內容復制到kms-cmk-default.yaml文件中。
apiVersion: v1 kind: PersistentVolume metadata: name: oss-csi-pv spec: capacity: storage: 5Gi accessModes: - ReadOnlyMany csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: oss-csi-pv volumeAttributes: bucket: "python" url: "oss-cn-hangzhou.aliyuncs.com" otherOpts: "-o umask=022 -o max_stat_cache_size=0 -o allow_other" akId: "<YourAccessKey ID>" # 請替換<YourAccessKey ID>為您的AccessKey ID。 akSecret: "<YourAccessKey Secret>" # 請替換<YourAccessKey Secret>為您的AccessKey Secret。 path: "/" encrypted: "kms"
參數
說明
akId
AccessKey ID
akSecret
AccessKey Secret
encrypted
存儲卷的加密方式:
kms:KMS加密方式。
aes256:AES-256算法加密方式。
執行以下命令創建加密存儲卷。
kubectl create -f kms-cmk-default.yaml
通過存儲卷頁面查看已創建的加密存儲卷。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
方式二:使用KMS托管的指定CMK ID加密OSS Object
配置KMS訪問權限。
使用KMS托管的指定CMK ID加密OSS Object,需要為PV使用的AccessKey對應的RAM用戶授予KMS的訪問權限,操作步驟如下。更多信息,請參見服務器端加密。
使用阿里云賬號(主賬號)登錄RAM控制臺。
說明阿里云賬號(主賬號)對賬號中的資源具有完全管理權限,您也可以在RAM中創建一個RAM用戶,授予AdministratorAccess權限,充當賬號管理員,該管理員可以對賬號下所有云資源進行管控操作。更多信息,請參見創建RAM用戶作為賬號管理員。
在左側導航欄,選擇 。
在用戶頁面,單擊PV使用的AccessKey對應RAM用戶操作列的添加權限。
根據需要選擇權限是系統策略AliyunKMSFullAccess或自定義權限AliyunOSSEncryptCustomizedPolicy。
重要AliyunKMSFullAccess權限相對較大,如果需要更細粒度的權限控制,可為RAM用戶創建自定義權限策略AliyunOSSEncryptCustomizedPolicy,自定義策略內容如下,具體操作請參見創建自定義權限策略。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:List*", "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "acs:kms:*:141661496593****:*"http://表示允許調用該阿里云賬號ID下所有的KMS密鑰,如果僅允許使用某個CMK,此處可輸入對應的CMK ID。 ] } ] }
單擊確認新增授權,然后單擊關閉。
將以下內容復制到kms-cmk.yaml文件中。
apiVersion: v1 kind: PersistentVolume metadata: name: oss-csi-pv spec: capacity: storage: 5Gi accessModes: - ReadOnlyMany csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: oss-csi-pv volumeAttributes: bucket: "python" url: "oss-cn-hangzhou.aliyuncs.com" otherOpts: "-o umask=022 -o max_stat_cache_size=0 -o allow_other" akId: "<YourAccessKey ID>" # 請替換<YourAccessKey ID>為您的AccessKey ID。 akSecret: "<YourAccessKey Secret>" # 請替換<YourAccessKey Secret>為您的AccessKey Secret。 path: "/" encrypted: "kms" kmsKeyId: "<YourKMS KeyID>" # 請替換<YourKMS KeyID>為您的KMS ID。
執行以下命令創建加密存儲卷。
kubectl create -f kms-cmk.yaml
通過存儲卷頁面查看已創建的加密存儲卷。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
方式三:使用OSS完全托管的密鑰加密OSS Object(SSE-OSS)
將以下內容復制到sse-oss.yaml文件中。
apiVersion: v1 kind: PersistentVolume metadata: name: oss-csi-pv spec: capacity: storage: 5Gi accessModes: - ReadWriteOnce csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: oss-csi-pv volumeAttributes: bucket: "python" url: "oss-cn-hangzhou.aliyuncs.com" otherOpts: "-o max_stat_cache_size=0 -o allow_other" akId: "<YourAccessKey ID>" # 請替換<YourAccessKey ID>為您的AccessKey ID。 akSecret: "<YourAccessKey Secret>" # 請替換<YourAccessKey Secret>為您的AccessKey Secret。 path: "/" encrypted: "aes256"
執行以下命令創建加密存儲卷。
kubectl create -f sse-oss.yaml
通過存儲卷頁面查看已創建的加密存儲卷。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。