对于配置文件中的一些敏感信息,可以采用加密模式进行配置。当使用的卷在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
type: Opaque
data:
#是否启用加密,配置为true(启用)或false(不启用)的base64编码字符串
decryptFlag: decryptFlag
#密钥的base64编码字符串,密钥长度必须为16位
decryptData: decryptData #密钥的base64编码
参数
参数 描述 是否必填 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 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: Recycle
csi:
driver: stor.csi.k8s.io
volumeHandle: stor:lun1
volumeAttributes:
fsType: xfs
readOnly: "false"
#是否使用CHAP验证
chapEnable: "ture"
chapUser: username
chapPassword: password
chapUser、chapPassword的加密和Base64编码过程步骤(下面仅为一款编码工具的步骤,编码工具不同,界面上的名字可能不同):
(1)使用AES加密工具。选择“工作模式”为“ECB”,“填充模式”为“ PKCS7” ,“密钥长度”为 “AES-128 ”。
(2)“加密密钥”使用DecryptData配置的密钥字符串(对应步骤1中的decryptData的源码,如步骤1举例中使用的源码为stor012345678901)。
(3)输入加密文本(chapUser或chapPassword的源码),点击开始“AES加密文本”,进行加密和Base64编码。 下图中为chapUser=csi123的加密方式,chapPassword按下图方式加密即可。