Bernstein Air-gap 离线部署指南:无网环境 6 步完成签名 Wheelhouse 完整安装 【免费下载链接】bernsteinThe open‑source AI Agents Governance Orchestration framework: write the rules declaratively, Bernstein enforces them and produces the verifiable, replayable record. Free, Apache-2.0. https://bernstein.run项目地址https://gitcode.com/gh_mirrors/be/bernstein点击查看免费下载Bernstein 是一个开源的 AI Agents 治理与编排框架Governance Orchestration用声明式规则约束 AI 智能体行为并产出可验证、可回放的审计记录基于 Apache-2.0 协议免费使用。本指南面向完全无法访问互联网的 Air-gap 离线环境教你 6 步完成签名 Wheelhouse 的构建、校验与完整安装——全程只需要一台联网构建机目标主机零 PyPI 流量。一、为什么需要 Air-gap 离线部署以下场景中默认的联网安装路径走不通 目标主机没有 PyPI 出口受监管、主权客户或纯离线环境 合规要求对每一个依赖做密码学来源证明 出站流量必须默认拒绝fail closed除非运维显式放行 部署需要端到端可审计不能依赖托管控制平面Bernstein 的离线方案非常优雅同一个 wheel两种模式变的只是出站策略。离线部署在标准安装之上只多三样东西组件作用WheelhouseBernstein 全部固定依赖闭包 bernstein 本体一个目录即可pip install --no-indexSigned ManifestMANIFEST.json列出每个 wheel 的 sha256另附逐文件的.sig分离签名供合规团队安装前验证Runtime Profilebernstein run --profile airgap将默认出站策略从any翻转为none二、准备构建机唯一需要联网的机器构建机要求可访问 PyPI 的出网能力已安装uv和 Python 3.12安装了cosignv2.4.x / v2.6.x / v3.x 均支持脚本会自动适配参数差异三、Step 1构建签名 Wheelhouse在构建机上执行二选一# 方式一直接跑脚本 python scripts/build_airgap_wheelhouse.py --version 1.10.0 # 方式二operator 友好的子命令 bernstein wheelhouse build --version 1.10.0脚本会解析 Bernstein 的固定依赖闭包下载全部 wheel生成MANIFEST.json含每个文件的 sha256 与大小产物落在dist/airgap-wheelhouse/version/。四、Step 2用 cosign 对每个文件签名COSIGN_KEY/secure/path/cosign.key \ bash scripts/sign_airgap_wheelhouse.sh dist/airgap-wheelhouse/1.10.0签名脚本的关键细节对每个 wheel 和 MANIFEST生成分离签名wheel.sig密钥绝不埋进包体默认--tlog-uploadfalse避免向公网 Rekor 日志发起连接自动适配 cosign v3 的sign-blob默认值变化保证跨版本可验签最终目录结构如下dist/airgap-wheelhouse/1.10.0/ ├── bernstein-1.10.0-py3-none-any.whl ├── bernstein-1.10.0-py3-none-any.whl.sig ├── fastapi-0.115.x-py3-none-any.whl ├── fastapi-0.115.x-py3-none-any.whl.sig ├── ...全部传递依赖及其签名 ├── MANIFEST.json └── MANIFEST.sig五、Step 3通过加密介质交付将上述整个目录拷贝到加密介质切勿漏掉.sig文件并单独携带公钥PEM 格式供客户提前验证。如果客户无法访问 attestation 端点可让构建机预下载 Sigstore 构建来源证明gh attestation download \ ./airgap-wheelhouse/1.10.0/bernstein-1.10.0-py3-none-any.whl \ --owner sipyourdrink-ltd每个 wheel 旁会多出一个wheel.sigstore伴生文件随目录一起交付。六、Step 4安装前先验证关键一步⚠️ 铁律从未验证过的 wheelhouse绝不直接pip install。bernstein verify ./airgap-wheelhouse/1.10.0 \ --ca-pubkey ./bernstein-release.pub \ --require-signatures任一 sha256 不匹配或签名失败 → 非零退出并在错误信息中点名问题 wheel偏好 GPG 的客户可切换验证后端--verifier gpg --keyring ./customer.gpg离线主机做 Sigstore 验证时追加--sigstore --sigstore-offline利用随包交付的.sigstore文件客户若不完全信任上游签名密钥还能用自己的密钥二次重签整个 wheelhouse再用--ca-pubkey ./customer.pub验证——分离签名方案让密钥永不进入交付物。七、Step 5pip --no-index 离线安装验证通过后即可安装python -m venv .venv source .venv/bin/activate pip install --no-index --find-links ./airgap-wheelhouse/1.10.0 bernstein bernstein --version最容易踩的坑漏写--no-indexpip 会偷偷回连 PyPI。请始终成对出现--no-index --find-links dir。八、Step 6airgap 运行与自检先跑离线姿态自检首次运行前的 pre-flightbernstein doctor airgap # 人类可读 bernstein doctor --json airgap # 机器可读可作为合规证据doctor airgap会检查 8 项内容airgap profile 是否生效、网络策略是否为 deny-all、各 adapter 声明的端点是否全被拦截、MCP 目录是否全部关闭、memo 缓存是否锁定在本地.sdd/runtime/memo/、审计链 HMAC 是否有效、运行时 socket guard 是否就绪、运行时配置中是否残留外部主机名。只有FAIL行会导致非零退出WARN行如合法的运维放行项不阻断。然后以 airgap profile 运行显式放行内网本地模型端点bernstein run --profile airgap --allow-network 127.0.0.1:11434 \ --goal Refactor my-detection-rule.yml so the selection clause is stricter放行白名单语法重复使用--allow-network添加规则写法含义127.0.0.1仅回环地址10.0.0.0/8整个内网 CIDR 段ollama.local:11434指定 host:portnone显式全拒绝--profile airgap的默认值any关闭网关airgap profile 之外的兼容默认值若某个 plan 尝试使用端点不在白名单内的 adapterBernstein 会在子进程启动之前直接拒绝并报错例如NetworkPolicyDenied: network egress denied by policy: api.anthropic.com:443 (from adapter:Claude Code)这就是默认拒绝安全模型的落点未声明external_endpoints的纯本地 adapter如本地 Ollama 上的 Aider不受影响而云端 adapter 在无白名单时永远出不了边界。九、常见问题速查症状原因解决办法pip install仍解析到 PyPI忘了--no-index始终成对传--no-index --find-links dirbernstein verify报missing signature拷贝时漏了.sig文件整体拷贝完整 wheelhouse 目录--sigstore报gh CLI not on PATH客户机没装 GitHub CLI安装gh或改用 cosign / GPG 验证运行时报NetworkPolicyDenied端点不在放行白名单追加--allow-network host或改用本地 adapter--profile不被识别Bernstein 版本过旧升级到 ≥ 1.10.0十、已知限制官方 wheelhouse 构建覆盖Linux x86_64macOS / Windows / arm64 需按同一 pin 集自建原生依赖cffi、lxml固定为manylinux_2_28_x86_64客户发行版不匹配时需换更近的基底镜像重编bernstein doctor airgap报告的是状态而非运行时网关用于确认本次运行干净不作运行时拦截使用十一、延伸阅读完整离线安装文档docs/installation/air-gap.mdWheelhouse 构建脚本scripts/build_airgap_wheelhouse.py签名脚本scripts/sign_airgap_wheelhouse.sh校验命令实现src/bernstein/cli/commands/verify_cmd.py、src/bernstein/core/distribution/verifier.pySigstore 构建来源验证src/bernstein/core/distribution/sigstore_attestation_verify.py离线自检实现src/bernstein/core/distribution/doctor_airgap.py网络策略核心src/bernstein/core/security/network_policy.py赞分享【免费下载链接】bernsteinThe open‑source AI Agents Governance Orchestration framework: write the rules declaratively, Bernstein enforces them and produces the verifiable, replayable record. Free, Apache-2.0. https://bernstein.run项目地址https://gitcode.com/gh_mirrors/be/bernstein点击查看免费下载相关推荐GPUStack 离线Air-Gapped环境部署完整指南镜像同步、导入与安装GPUStack 离线Air Gapped环境部署完整指南镜像同步、导入与安装 GPUStack 支持在完全无互联网访问的离线air gapped环境后端人工智能模型推理服务集群管理可观测性ComfyUI离线节点部署完整指南三步解决无网络环境安装难题ComfyUI离线节点部署完整指南三步解决无网络环境安装难题 在AI绘画工具ComfyUI的使用过程中网络连接问题常常成为节点安装的最大障碍。无论是企业内网人工智能AI 应用插件系统Fluent Bit离线部署方案Air-gapped环境安装指南Fluent Bit离线部署方案Air gapped环境安装指南 在企业级生产环境中许多服务器处于严格隔离的Air gapped离线网络环境无法直接访可观测性日志分析云原生流处理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考