注意
若Kubernetes集群中部署了多套HBlock CSI,需在各自對應的安裝路徑下,配置加密模式。
對于配置文件中的一些敏感信息,可以采用加密模式進行配置。當使用的卷在HBlock中配置了質詢握手認證協議(Challenge-Handshake Authentication Protocol,CHAP),則需要配置CHAP認證的用戶名和密碼。為了確保數據安全,建議采用加密模式來配置CHAP密碼。
在使用CHAP方式時,輸入的chapUser和chapPassword為加密字符串。加密字符串可以使用下列方法生成:使用deploy/csi-plugin-conf/csi-secret-decrypt.yaml中的DecryptData配置的密鑰對原來的字符串進行AES(ECP、paddingcs7)加密,加密后的結果進行base64編碼。
配置步驟
配置加密密鑰。
修改deploy/csi-plugin-conf/csi-secret-decrypt.yaml配置文件中的decryptFlag和decryptData參數。
apiVersion: v1 kind: Secret metadata: name: csi-plugin-stor-secret-decrypt namespace: @DRIVER_NAMESPACE@ type: Opaque data: #是否啟用加密,配置為true(啟用)或false(不啟用)的base64編碼字符串 decryptFlag: decryptFlag #密鑰的base64編碼字符串,密鑰長度必須為16位 decryptData: decryptData #密鑰的base64編碼參數
參數 描述 是否必填 metadata.name Secret資源的資源名稱。
取值csi-plugin-stor-secret-decrypt,不可更改。
是 metadata.namespace 綁定的Kubernetes命名空間。
取值:
如果已經安裝 HBlock CSI:命名空間已確定,直接將該字段值修改為對應命名空間值,保持完成csi-configMap.yaml文件的修改、保存并應用后,相關配置即可自動生效。
如果還未安裝HBlock CSI:此字段取值保持為@DRIVER_NAMESPACE@,執行deploy安裝腳本時,即可自動替換為對應的命名空間。
是 decryptFlag 是否啟用加密模式,配置為true(啟用)或false(不啟用)的Base64編碼字符串。
取值:
- dHJ1ZQ==:啟用加密,true的Base64編碼。
- ZmFsc2U=:不啟用加密,false的Base64編碼。
默認不啟用加密。
否 decryptData 加密的密鑰。
說明
啟用加密,此參數必填。
取值:源碼為16位的字符串。需要對源碼進行Base64編碼。
條件 示例:
啟用加密模式。例如decryptFlag的源碼為true,decryptData的源碼為stor012345678901。
使用Base64工具對decryptFlag、decryptData的源碼進行編碼。
對decryptFlag源碼進行Base64編碼,編碼后的decryptFlag如下:
dHJ1ZQ==對decryptData源碼進行Base64編碼,編碼后的decryptData如下:
c3RvcjAxMjM0NTY3ODkwMQ==修改配置文件deploy/csi-plugin-conf/csi-secret-decrypt.yaml配置文件中的參數。
apiVersion: v1 kind: Secret metadata: name: csi-plugin-stor-secret-decrypt namespace: defualt type: Opaque data: decryptFlag: dHJ1ZQ== decryptData: c3RvcjAxMjM0NTY3ODkwMQ==
應用配置文件csi-secret-decrypt.yaml。
[root@server csi-plugin-conf]# kubectl apply -f csi-secret-decrypt.yaml secret/csi-plugin-stor-secret-decrypt configured加密配置項。
以靜態PV中PV YAML配置文件(csi-pv-local.yaml)為例,加密CHAP認證的密碼,采用AES 128位加密,填充PKCS7的Padding加密CHAP密碼,并對加密后的結果進行Base64編碼。
apiVersion: v1 kind: PersistentVolume metadata: name: csi-pv-test labels: app: stor-pv-test spec: capacity: storage: 1Gi volumeMode: Filesystem #卷模式,支持Filesystem和Block模式,默認為Filesystem模式。 accessModes: # 訪問模式 - ReadWriteOnce persistentVolumeReclaimPolicy: Retain csi: driver: stor.csi.k8s.io volumeHandle: stor:lun1 volumeAttributes: fsType: xfs readOnly: "false" #是否使用CHAP驗證 chapEnable: "true" chapUser: username chapPassword: passwordchapUser和chapPassword加密步驟:
使用AES加密工具。“工作模式”為“ECB”,“填充模式”為“PKCS7”,“密鑰長度”為“AES-128”。
“加密密鑰”使用DecryptData配置的密鑰字符串(對應步驟1中的decryptData的源碼,如步驟1舉例中使用的源碼為stor012345678901)。
輸入加密文本(chapUser或chapPassword的源碼),點擊“開始AES加密文本”。下圖中為chapUser=csi123的加密方式,chapPassword按下圖方式加密即可。