配置文件加密
1. 背景
CN部分客户要求配置文件(private.yaml)不允许存在明文密码。
2. 版本要求:
ONES标品版本(6.18以上)已提供标准方案,支持国密SM4或者AES256算法来加解密,任选其一即可。
3. 操作前提
(1) ONES前端页面上的基本业务正常, 无报错。
(2) ONES后端各个pod状态状态,如下命令输出为空
kubectl get pod -A|grep -vE 'Running|Completed'
4. 加密操作
支持国密SM4或者AES256算法来加解密,任选其一、加解密保持一致即可。
# 4.1 进入配置文件所在默认目录,下载版本
cd /data/ones/ones-installer-pkg/config/
curl -O https://res.ones.pro/script/encrypt
chmod a+x encrypt
cp private.yaml private.yaml.2025bak
# 4.2 生成密钥方法1,国内客户推荐使用国密SM4算法(秘钥长度16字节),并保留输出结果,供后续加解密使用
openssl rand -hex 16
# 生成密钥方法2,使用AES256算法(秘钥长度32字节),并保留输出结果,供后续加解密使用
# openssl rand -hex 32
# 4.3 密码加密方法1,加密所有包含password的key,采用4.2生成的密钥及国密SM4算法
cat private.yaml |grep -iE 'password|pwd' |sed -n s/:.*//p|xargs -n 1 ./encrypt -algo sm4cbc -key {HEX形式的密钥} -file private.yaml -encrypt
# 4.3 密码加密方法2,加密所有包含password的key,采用4.2生成的密钥及AES256算法
# cat private.yaml |grep -i password|sed -n s/:.*//p|xargs -n 1 ./encrypt -algo aes256cbc -key {HEX形式的密钥} -file private.yaml -encrypt
# 4.4 修改private.yaml配置并下发
ones-ai-k8s.sh
vi config/private.yaml
configEncryptionKey: 'xxxxx' # 增加或修改配置项,保存HEX形式的密钥
make setup-ones
# 4.5 如需查看配置信息,可参照如下方式用同样的算法和密钥来解密文件,事后再参照4.4加密
# 密码解密方法1,采用4.2生成的密钥及国密SM4算法
./encrypt -algo sm4cbc -key {HEX形式的密钥} -file private.yaml -decrypt
# 密码解密方法2,采用4.2生成的密钥及AES256算法
# ./encrypt -algo aes256cbc -key {HEX形式的密钥} -file private.yaml -decrypt
5. 验证
(1)查看 project-api、wiki-api 是否重启
(2) ONES后段各个pod状态状态,如下命令输出为空
kubectl get pod -A|grep -vE 'Running|Completed'
(3) ONES前端页面上的基本业务正常, 无报错。