跳转到内容

在隔离网络(air-gapped)站点中上手

Olivares AI 在设计上为 air-gap(隔离网络)就绪:一个静态二进制、一个嵌入式 SQLite 存储、离线(Ed25519) license 验证,且启动时没有任何强制的出站调用——没有需要关闭的“回家遥测”。本教程在一个完全没有互联网的网络上 到达首个价值,可走以下两条诚实路径之一:

  • 路径 A —— 静态二进制。 最简单的隔离网络方式:将一个经过验证的文件带过隔离边界并运行它(用 systemd, 如单节点教程中所示)。
  • 路径 B —— 已签名 bundle,用于集群。 带上发布 bundle,完全离线验证每个镜像与 chart, 按 digest 镜像到你的私有 registry,并用 Helm 安装。

bundle 脚本的机制(airgap-bundle.shairgap-mirror.sh、离线 cosign 验证)记录在 在隔离网络环境中安装——本页面是使用它们的端到端演练。

  1. 在联网侧,构建(或者,一旦发布版本上线后,下载并 验证)该二进制,并记录其 digest:

    Terminal window
    task build
    sha256sum bin/olivares > olivares.sha256
  2. 将两个文件都带过隔离边界,使用你批准的介质,并在断网侧验证 digest:

    Terminal window
    sha256sum --check olivares.sha256
  3. 安装并运行,与单节点教程中完全一样—— systemd unit、一次性安装 token、第一个组织。该流程中没有任何环节触及网络:TLS 材料在本地生成, license(如果你有的话)离线验证,存储是嵌入式 SQLite。

  4. 接入观测本地系统的数据源——pgAudit 日志尾部、在边界内交付的 CloudTrail 文件、eBPF/Tetragon 流。 sources 配置是一个本地文件;除非你配置某个 connector 去访问某物, 否则没有 connector 会向外拨号。

对于一个断网站点,这是推荐的起始形态:单节点、SQLite、本地数据源。这是同一个引擎——你之后可以成长为集群路径, 而无需改变你已学到的东西。

路径 B —— 已签名 bundle,用于集群

Section titled “路径 B —— 已签名 bundle,用于集群”
  1. 联网侧,一次性: 由一名维护者构建自包含的 bundle——每个镜像按 digest 锁定,Helm chart 被打包并签名, 收集 SBOM/OpenVEX/provenance,外加公钥和一份带有确切离线演练步骤的 VERIFY.md

    Terminal window
    scripts/airgap-bundle.sh --version <v> \
    --image <olivares-image-ref> \
    --chart deploy/helm/olivares \
    --cosign-key cosign.key
  2. 在隔离边界内,离线验证一切。 你只需要 cosigncranehelmtar——信任来自 bundle 中的 cosign.pub,而非任何在线透明日志:

    Terminal window
    for d in images/*/; do
    cosign verify --local-image "$d" --insecure-ignore-tlog --key cosign.pub
    done
    cosign verify-blob --key cosign.pub --insecure-ignore-tlog \
    --signature chart/*.tgz.sig chart/*.tgz
  3. 按 digest 镜像到你的私有 registry(脚本会重新锁定并确认 digest 在镜像过程中保持不变):

    Terminal window
    scripts/airgap-mirror.sh --bundle olivares-airgap-<v>.tar.gz \
    --registry registry.internal:5000
  4. 按 digest 安装,绝不按 tag,然后从首次启动 token 开始遵循 Kubernetes 教程——它是同一个 chart 和同一套流程:

    Terminal window
    helm install olivares \
    oci://registry.internal:5000/charts/olivares \
    --version <chart-version> \
    --set image.repository=registry.internal:5000/olivares \
    --set image.digest=<digest-from-digests.txt>
  • 备份的工作方式完全相同(olivares dr backup——加密 bundle,本地 KEK): 备份与恢复。将 bundle 存放在独立介质上;在没有异地网络的情况下, 3-2-1 规则加倍适用。
  • Ledger 验证在设计上完全离线: 用你锁定的公钥执行 olivares audit verify --strict—— troubleshooting § ledger
  • 监控是本地 Prometheus 抓取 /metrics;随附的告警规则不需要任何外部依赖—— 监控
  • 更新会以一个新的 bundle 重复 carry-verify-mirror(携带-验证-镜像)循环。digest manifest (digests.txt)就是你对正在运行之物的确切记录。