加密本地模型文件
容器镜像方式加密
- 参考镜像启动脚本run_aiguard.sh,执行前请将[image_name]和[image_version]替换对应正确的名称和版本,加粗部分请根据实际情况修改。
#!/bin/bash if [ $# != 2 ]; then echo "USAGE: $0 input key_file" exit 1 fi encrypt_dir=$1 key_file_path=$2 USERNAME=aiguard OUTPUT=workdir/output/ function create_user(){ id ${USERNAME} >/dev/null 2>&1 if [ $? -eq 0 ]; then uid=`id -u ${USERNAME}` if [ $uid -ne 9002 ]; then echo "user ${USERNAME} exist, but uid isn't 9002." return 1 fi return 0 else useradd -u 9002 -m ${USERNAME} >/dev/null 2>&1 if [ $? -eq 0 ]; then echo "create user ${USERNAME} success." return 0 fi echo "create user ${USERNAME} failed." return 1 fi } function is_or_not_clear_output(){ while true do read -r -p "Directory ${OUTPUT} is not empty, it must be empty when running aiguard. Do you want to empty it? [y/n]" input case $input in [yY][eE][sS]|[yY]) rm -rf ${OUTPUT}/* >/dev/null 2>&1 return 0 ;; [nN][oO]|[nN]) return 1 ;; *) echo "Invalid input..." ;; esac done } create_user if [ $? -ne 0 ]; then exit 1 fi mkdir -p workdir/input if [ -d ${OUTPUT} ]; then if [ "$(ls -A $OUTPUT)" ]; then is_or_not_clear_output if [ $? -ne 0 ]; then exit 1 fi fi fi mkdir -p ${OUTPUT} cp -af $encrypt_dir/* workdir/input cp -af $key_file_path workdir chown ${USERNAME} -R workdir find workdir/ -exec chmod -77 {} + find workdir/input -type f -exec chmod 500 {} + docker run -it --rm -u ${USERNAME} -v $PWD/workdir:/home/${USERNAME}/workdir -w /home/${USERNAME}/workdir [image_name]:[image_version] bash
- $encrypt_dir为加密文件路径。
- $key_file_path密钥文件路径。
执行命令启动镜像
bash run_aiguard.sh $encrypt_dir $key_file_path 命令样例: bash run_aiguard.sh ./model_file ./key_file
- 请确保加密文件路径目录下只有待加密的明文或待解密的密文。
- 用户9002的id不能被占用,否则无法运行。
- 在用户节点执行命令加密模型文件,检查MK.json的权限,若权限大于600需修改权限为600。
#修改文件权限(可选) chmod 600 MK.json #执行加密命令 aiguard encrypt -i ./input -o ./output -f MK.json
执行加密命令时,会弹出提示,要求输入导出主秘钥时使用的口令,输入后生成加密文件,并存储“./output”,加密文件用于边缘节点推理,请用户自行拷贝。
父主题: 边缘场景容器化推理