公司研发部新上了等保三级系统,办公网和开发测试网物理隔离,但运维同事总得给测试机装个 curl、jq 或自研的配置校验工具——U盘禁用、微信传文件被拦截、邮件附件清零……工具链卡在隔离墙外,人却急着上线。
别硬塞,先理清“链”在哪
所谓“工具链”,不是单个 exe 或 shell 脚本,而是一组有依赖关系的组件:比如一个内网部署脚本(bash),调用本地编译的二进制校验器(Go 交叉编译生成),再读取一份 JSON 模板(由前端团队维护)。这三样缺一不可,且版本必须对齐。强行只传一个,到了目标机器上跑不起来,反而更耗时间。
老办法行不通,新思路要落地
我们试过用光盘刻录 ISO,结果测试机光驱早被 BIOS 禁用;也搭过临时 HTTP 服务走隔离网段,但审批流程拖了三天。后来在一台带双网卡的跳板机上搭了个极简方案:
#!/bin/bash
# run-on-airgap.sh —— 放在跳板机隔离侧,自动拉取、签名、打包
TOOL_DIR="/opt/tools/v1.2.3"
SIGN_KEY="/etc/airgap/sign.key"
tar -czf tools-v1.2.3.tar.gz -C "$TOOL_DIR" .
gpg --detach-sign --armor -o tools-v1.2.3.tar.gz.asc tools-v1.2.3.tar.gz
生成带签名的压缩包后,把 tools-v1.2.3.tar.gz 和 tools-v1.2.3.tar.gz.asc 一起拷到 USB(仅启用只读模式),插进目标机验证执行:
# 在目标机运行(无网络)
gpg --verify tools-v1.2.3.tar.gz.asc tools-v1.2.3.tar.gz
if [ $? -eq 0 ]; then
tar -xzf tools-v1.2.3.tar.gz -C /usr/local/bin/
echo "✅ 工具链已就位,版本 v1.2.3"
else
echo "❌ 签名无效,拒绝安装"
fi
小团队也能跑起来的轻量组合
不需要整套 DevOps 平台,几个命令+一个共享目录就能闭环:
• 用 git archive 打包工具源码(避免 .git 泄露)
• 用 make release 触发本地交叉编译(Mac 上出 Linux 二进制)
• 把产出物扔进 NAS 的 /airgap/releases/ 目录(该目录仅开放只读 SMB)
• 测试机通过预置脚本定时检查哈希值,变化则触发解压更新
上周财务系统升级,审计要求所有部署工具留痕。我们把每次生成的 SHA256 值、签名时间、操作人姓名写进 RELEASE-NOTE.md,和工具包放一起——审计员扫一眼就过了。
工具链不是越重越好,而是要在“可验证、可追溯、不越权”之间找平衡点。隔离不是挡路石,是倒逼你把每一步都写清楚的镜子。