恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Fleet 的 Orbit 代理管理器:使用 fleetctl 一键安装并自动更新 osquery 与 Fleet Desktop

  • 首页
  • 资讯中心
  • /
  • Fleet 的 Orbit 代理管理器:使用 fleetctl 一键安装并自动更新 osquery 与 Fleet Desktop

相关资讯

.NET ILLink 常量传播与不可达分支移除优化深度解析 2026/9/19 10:43:26
3 分钟,给 Hermes Desktop 装上 Hindsight 完整长期记忆 2026/9/19 10:43:26
使用 Fleet 构建 Linux 桌面清单与可见性:主机盘点、动态标签与合规策略实战 2026/9/19 10:43:26

最新资讯

数据治理解决方案深度拆解:核心域、平台选型与落地实践
AI辅助编程实战:用Codex从零开发微信小游戏并上线
AutoResearch:AI驱动的科研智能助手解析与应用
网盘下载慢?手把手获取直链,配合多线程工具跑满带宽
ComfyUI工作流资源网站全攻略:从入门到进阶的实用指南
Wails3 项目模板上手指南:从 `wails3 init` 到开发与生产构建的完整实战

今日推荐

oh-my-hermes:打造跨工具的命令编排与插件化工作流
OpenClaw.NET 用 /goal start 跑长任务,模型 Base URL 改到 TaoToken
SYB创业计划书财务逻辑拆解:从销售收入预测到现金流量计划

本周热门

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化
Flutter应用改名全指南:从Android到iOS的配置与工具实践

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

Fleet 的 Orbit 代理管理器:使用 fleetctl 一键安装并自动更新 osquery 与 Fleet Desktop

发布时间:2026/9/19 10:43:26
Fleet 的 Orbit 代理管理器:使用 fleetctl 一键安装并自动更新 osquery 与 Fleet Desktop Fleet 的 Orbit 代理管理器使用 fleetctl 一键安装并自动更新 osquery 与 Fleet Desktop【免费下载链接】fleetOpen device management项目地址: https://gitcode.com/GitHub_Trending/fl/fleet导读本文围绕 Fleet 开源仓库中 Orbit 组件的设计与实战展开介绍如何通过fleetctl package生成安装包、将 Orbit 部署到终端主机并利用基于 TUFThe Update Framework的安全更新通道自动安装与升级 osquery 和 Fleet Desktop。读完本文你将掌握 Orbit 的完整部署流程、更新渠道stable/edge的用法、全部核心命令行参数以及 Orbit 如何作为 osquery 的即插即用替代品在 Fleet 生态中扮演 agent manager 的角色。什么是 OrbitFleet 在终端主机上的 agent managerOrbit 是 Fleet 的代理管理器agent manager。它的职责是替你在终端主机end-user hosts上安装并持续更新 Fleet 的各类 agent当前主要是 osquery 与 Fleet Desktop。在引入 Orbit 之前运维人员需要手动在每台主机上分别维护 osquery、Fleet Desktop 等多个代理的安装与升级版本对齐、平台差异、更新窗口等问题都需要自己操心。Orbit 的出现解决了这一痛点它定期向你的 Fleet 实例查询期望的最新状态然后自动把主机上的 agent 调整到符合规格的版本。正如原文档所说有了 Orbit你不再需要同时把 osquery、Fleet Desktop 和别的 agent 在脑子里来回掂量。从仓库中的定位说明orbit/README.md可以进一步确认Orbit 是一个轻量级的 osquery 安装器与自动更新器lightweight osquery installer and autoupdater。借助 Orbit可以轻松部署 osquery、管理配置并保持组件最新。Orbit 是 Fleet 的推荐 agent但它也可以独立于 Fleet 使用Fleet 也可以在没有 Orbit 的情况下工作。Orbit 同时被定位为 osquery 的近乎即插即用替代品(near) drop-in replacement这一点在 orbit/cmd/orbit/orbit.go 中应用的用法说明里也有体现A powered-up, (near) drop-in replacement for osquery。Orbit 与 Kolide Launcher 的设计差异orbit/README.md 的 FAQ 中明确阐述了 Orbit 受 Kolide Launcher 启发、但不共享任何代码并对比了两者的关键设计取舍两者都遵循 TUF 规范管理更新但 Orbit 使用官方的 go-tufLauncher 则是自行实现Orbit 可以作为 osquery 的近乎drop-in 替代品支持完全自定义 osquery 启动参数Launcher 则重度托管 osquery 参数脱离其 SaaS 很难部署Orbit 偏好 osquery 内置的 logging、configuration、live report 等久经考验的插件Launcher 使用自定义实现Orbit 偏好 osquery 内置的远程 APILauncher 使用自定义 gRPC APIOrbit 鼓励启用 osquery 的性能看门狗WatchdogLauncher 则将其禁用。此外Orbit 还瞄准了 Launcher 范围之外的问题通过发布渠道release channels配置更新以更精细地控制 agent 版本、从远端Fleet服务器管理 osquery 启动参数、支持部署与更新 osquery 扩展、从远端管理 osquery 版本。如何在主机上安装 Orbit使用 fleetctl package 生成安装包Orbit 通过安装器包installer package部署到主机上安装包可以用fleetctl package命令生成。生成后在主机上运行安装器即可完成安装。安装包还可以借助 Munki 等企业级部署工具进行大规模分发。fleetctl package生成安装包时会从 TUF 仓库拉取对应的可执行文件orbit、osqueryd、fleet-desktop 等并打包。在 docs/Get started/FAQ.md 中可以看到典型的用法示例# 生成 Debian 安装包同时支持 --typepkg / --typemsi 等其他平台格式 fleetctl package \ --typedeb \ --fleet-urlhttps://localhost:8080 \ --enroll-secretsuperRandomSecret \ --fleet-desktop常用参数说明以 orbit/cmd/orbit/orbit.go 中 Orbit 实际支持的 flags 为准fleetctl package参数与其对应参数作用默认值--fleet-urlFleet 服务器地址host:port会补全为https://前缀无--enroll-secret用于向 Fleet 服务器注册enroll的注册密钥无--type安装包格式pkg / msi / deb / rpm 等平台相关--fleet-desktop是否在安装包中附带 Fleet Desktop视平台而定--disable-updates完全禁用自动更新详见下文关闭自动更新关闭即默认开启更新--insecure禁用 TLS 证书校验仅建议测试环境使用关闭--orbit-channel/--desktop-channel/--osqueryd-channel分别指定 orbit、Fleet Desktop、osqueryd 的更新渠道stable--osqueryd-channel4FAQ 中展示的用法将 osqueryd 渠道固定为4大版本线stable在开发环境从源码直接运行 Orbit如果不通过安装包也可以直接从源码运行 Orbit 进行开发调试。orbit/README.md 给出了三种典型场景连接 Fleet 服务器开发模式、关闭更新、跳过 TLS 校验go run github.com/fleetdm/fleet/v4/orbit/cmd/orbit \ --dev-mode \ --disable-updates \ --root-dir /tmp/orbit \ --fleet-url https://localhost:8080 \ --insecure \ --enroll-secret Pz3zC0NMDdZfb3FtqiLgwoexItojrYh/ \ -- --verbose使用自定义 flagfile例如给 osqueryd 传入flagfile.txtgo run github.com/fleetdm/fleet/v4/orbit/cmd/orbit \ --dev-mode \ --disable-updates \ --root-dir /tmp/orbit \ -- --flagfileflagfile.txt --verbose打开交互式 SQL shell便于构建/测试扩展表go run github.com/fleetdm/fleet/v4/orbit/cmd/orbit \ --dev-mode \ --disable-updates \ --root-dir /tmp/orbit \ shell注意--之后的内容会原样透传给 osqueryd这是 Orbit 作为 osquery drop-in 替代品的关键机制——你可以通过这种方式把任意 osquery 启动参数传给 osquerydorbit/README.md Using a custom flagfile 一节。Orbit 当前v1能做什么按照原文档的描述在 v1 阶段 Orbit 提供两项核心能力安装当前与 Fleet 兼容的最新版本 osquery 与 Fleet Desktop升级osquery 与 Fleet Desktop 到与 Fleet 兼容的最新版本。这两项能力都建立在 TUF 更新机制之上。Fleet 官方维护了一个 TUF 服务器https://updates.fleetdm.com见 orbit/pkg/update/update.go 中的DefaultURL常量为 agent 提供安全更新。Orbit 会周期性地检查并自动将 agent 更新到最新版本运维侧无需任何手工操作在需要时也可以把 agent固定pin到某个特定版本见下文更新渠道与固定版本。关闭自动更新如果出于合规、测试或离线环境等考虑需要禁用自动更新可以在生成安装包时传入--disable-updatesfleetctl package --typedeb \ --fleet-urlhttps://localhost:8080 \ --enroll-secretsuperRandomSecret \ --disable-updates该选项来自 docs/Get started/FAQ.mdCan I disable auto-updates?。在代码层面当禁用更新时Orbit 使用update.NewDisabled创建一个禁用版 Updater它不会访问远端 TUF 仓库但仍能按本地路径定位 osqueryd 等可执行文件这在无网络/禁更新的环境中非常有用orbit/pkg/update/update.go 的NewDisabled注释明确说明了这一设计意图。深入 TUFOrbit 的安全更新机制TUF 客户端与信任链Orbit 的更新系统实现在 orbit/pkg/update 包中核心组件是Updaterupdate.go与Runnerrunner.go。Updater负责管理更新状态UpdateMetadata()下载并校验远端仓库元数据Lookup()在本地元数据中查找目标Get()下载若本地不存在目标并返回本地信息。Runner是配合oklog/run使用的专用更新运行器按CheckInterval定期检查目标是否过期并保证本地目标与远端 TUF 元数据保持一致。TUF 的信任锚是嵌入在二进制中的 root 元数据root keys。从源码看orbit/pkg/update/update.go 内置了一段默认 root 元数据JSON 编码的 ed25519 公钥集合当本地元数据缺失时例如首次运行、本地元数据文件被误删或从旧 TUF 服务器https://tuf.fleetctl.com迁移到新服务器时Updater 会用这段内嵌 root 初始化 TUF 客户端tufClient.Init从而建立信任链。这保证了即使元数据缓存被清除agent 也能安全地重新引导信任。下载、校验与试运行检查Updater.Get的下载流程非常讲究安全性update.go先Lookup目标的 TUF 元数据取目标的 hash 作为重试键——这样一旦 TUF 服务器发布了新版本即可立刻下载新目标而不必等待重试冷却通过 go-tuf 客户端下载文件go-tuf 会自行校验文件大小与 hash注释明确The go-tuf client handles checking of max size and hash下载完成后checkExec会实际执行一次新二进制对非跨平台目标执行--help对 macOS 的.pkg目标则用pkgutil --payload-files校验确认其可运行后才替换旧文件Windows 上会先把旧文件改名为.old再执行原子替换避免覆盖失败导致 agent 损坏下载失败时由内置 retryer 处理按产品规格连续重试 3 次然后冷却 24 小时再重试。此外解压 tar.gz 目标时extractTarGz会做zip-slip 防护拒绝包含..的路径避免恶意或损坏的归档把文件写到预期目录之外。签名过期自愈Orbit 还处理了 TUF 元数据签名过期的场景update.go 的SignaturesExpired、runner.go 的RunnerOptions.SignaturesExpiredAtStartup当 root/targets/snapshot 角色签名过期时go-tuf 会拒绝加载 targets此时 Runner 只按检查间隔轮询签名状态一旦签名恢复有效就退出进程让下一次 Orbit 启动可以正常初始化——这是一种优雅的自愈设计。更新渠道与固定版本Orbit 通过 TUF 元数据中的**渠道channel**区分不同更新轨道当前主要有stable与edge两个渠道。仓库中自动生成的 orbit/TUF.md 实时记录了updates.fleetdm.com上各组件在两条渠道的部署版本节选当前仓库快照中的 stable 渠道组件macOSLinuxWindowsLinux (arm64)Windows (arm64)orbit1.60.01.60.01.60.01.60.01.60.0desktop1.60.01.60.01.60.01.60.01.60.0osqueryd5.23.15.23.15.23.15.23.15.23.1edge渠道则承载着更新的候选版本如 orbit/desktop 1.61.0适合希望提前验证新特性的团队。想要把 agent 固定到特定版本线可在生成安装包时分别指定渠道fleetctl package --typedeb \ --fleet-urlhttps://localhost:8080 \ --enroll-secretsuperRandomSecret \ --orbit-channeledge \ --desktop-channelstable \ --osqueryd-channel4示例取自 docs/Get started/FAQ.md--osqueryd-channel4表示把 osqueryd 固定在大版本线4。在代码层面渠道作用于 TUF 仓库中的目标路径repoPath会拼出{target}/{platform}/{channel}/{targetFile}这样的路径update.go而 orbit/pkg/update/options.go 中定义了各平台macOS、Linux、Linux arm64、Windows、Windows arm64与各组件orbit、osqueryd、desktop乃至 macOS 专用的 nudge、swiftDialog、escrowBuddy的目标信息其中每个目标的Channel默认都是stable可通过--orbit-channel、--osqueryd-channel、--desktop-channel覆盖。如果你希望自建更新服务器self-managed agent updatesFleet 也提供了相应工具链。仓库中 tools/tuf 相关工具说明了如何生成一个本地 TUF 仓库并用它构建包含自编译 Orbit 的安装包详见 orbit/README.md Generate Installer Packages from Orbit Source 一节。Orbit 的核心命令行参数以下参数定义于 orbit/cmd/orbit/orbit.go每个参数都支持通过同名环境变量前缀ORBIT_传入便于在打包或系统服务场景下配置参数环境变量默认值说明--root-dirORBIT_ROOT_DIR平台默认目录Orbit 状态根目录旧安装默认/var/lib/orbit会自动识别并沿用--insecureORBIT_INSECUREfalse禁用 TLS 证书校验不能与--fleet-certificate/--update-tls-certificate同时使用--fleet-urlORBIT_FLEET_URL无Fleet 服务器地址--fleet-certificateORBIT_FLEET_CERTIFICATE无Fleet 服务器证书链路径--update-urlORBIT_UPDATE_URLhttps://updates.fleetdm.com更新服务器地址--update-tls-certificateORBIT_UPDATE_TLS_CERTIFICATE无更新服务器 TLS 证书链路径--enroll-secretORBIT_ENROLL_SECRET无注册密钥与--enroll-secret-path互斥--enroll-secret-pathORBIT_ENROLL_SECRET_PATH无从文件读取注册密钥macOS/Windows 上读取后会删除文件并把密钥存入系统密钥库keystore--osqueryd-channelORBIT_OSQUERYD_CHANNELstableosqueryd 更新渠道--orbit-channelORBIT_ORBIT_CHANNELstableOrbit 自身更新渠道--desktop-channelORBIT_DESKTOP_CHANNELstableFleet Desktop 更新渠道--update-intervalORBIT_UPDATE_INTERVAL15 分钟更新检查间隔启动时会先检查一次下一次检查会加入最多 10 分钟的随机延迟--disable-updatesORBIT_DISABLE_UPDATESfalse禁用自动更新--dev-modeORBIT_DEV_MODEfalse开发模式会从 TUF 拉取一次 osqueryd--debugORBIT_DEBUGfalse开启 debug 日志--log-fileORBIT_LOG_FILE无额外把日志写入文件Windows 上作为服务运行时仅写文件--fleet-desktopORBIT_FLEET_DESKTOPfalse启动 Fleet Desktop--enable-scriptsORBIT_ENABLE_SCRIPTSfalse启用脚本执行--host-identifierORBIT_HOST_IDENTIFIERuuid主机标识方式uuid或instance后者需 Fleet v4.42.0--osquery-dbORBIT_OSQUERY_DB无自定义 osquery 数据库目录必须为绝对路径--disable-keystoreORBIT_DISABLE_KEYSTOREfalse禁用 macOS keychain / Windows Credentials Manager 存储注册密钥--use-system-configurationORBIT_USE_SYSTEM_CONFIGURATIONfalse尝试从主机上的配置macOS 配置描述文件读取 fleet-url 与 enroll-secret值得注意的细节来自源码行为启动时若设置了--enroll-secret-pathOrbit 会读取密钥文件并在系统密钥库可用时将其写入密钥库、随后删除明文文件避免注册密钥常驻磁盘orbit.go 的readEnrollSecretFromFile下次启动则优先从密钥库读取tryReadEnrollSecretFromKeystore。在 macOS 上配合 MDM 部署时若启用--use-system-configurationOrbit 会轮询配置描述文件与本地文件直到同时拿到 fleet-url 和 enroll-secret 为止每 30 秒重试这为 ABM/MDM 零接触注册提供了支持。macOS 上 Orbit 还会检测硬件迁移将硬件 UUID 持久化到hardware-uuid.txt若检测到 UUID 变化如把磁盘迁移到了新机器会清理 osquery 数据库与 node key 并触发重新注册orbit.go。Orbit 用到的各类状态文件注册密钥、node key、硬件 UUID、Fleet Desktop token、TLS 客户端证书等在 orbit/pkg/constant/constant.go 中有统一定义例如secret.txt、secret-orbit-node-key.txt、identifier、fleet_client.crt/.key、update_client.crt/.key等。Orbit 如何启动并守护 osquery在正常运行流程中orbit/cmd/orbit/orbit.go 的orbitAction校验参数--insecure与证书路径互斥、--osquery-db必须绝对路径、--host-identifier取值合法等初始化 TUF 元数据与 Updater先做一次启动早期更新检查early update check——若拉到了新版本且非 dev-mode直接退出让服务管理器拉起新版本避免其他子系统干扰下载下载/定位 osqueryd 与 Fleet Desktop 的可执行文件失败时以 5 分钟为间隔持续重试实际网络请求由Updater.Get的内置退避控制清理更新残留的.old文件、结束遗留的 osqueryd 进程Windows 上尤为重要因为 Task Manager 强杀不会发 SIGTERM用 osquery 获取主机信息硬件序列号、UUID、主机名、平台等作为注册enroll载荷以--enroll_secret_env方式把注册密钥通过环境变量注入 osqueryd拼装 osquery 启动参数数据目录、日志目录、数据库路径等把 Orbit 之后的命令行参数flagfile、verbose 等原样透传给 osquerydWindows 上还注册为系统服务服务名为Fleet osquery见 orbit/pkg/constant/constant.go由osservice包管理系统服务生命周期随后由 update Runner 按--update-interval周期检查更新让 osquery 与 Fleet Desktop 始终与 TUF 元数据保持一致。这种启动即检查、后台周期守护的结构保证了 agent 版本可以随 Fleet 侧发布的兼容版本平滑演进这也是Orbit 替你管理 agent的核心含义。从源码构建 Orbit如果你需要自行编译 Orbit例如定制版本可以按 orbit/README.md 的指引构建。官方推荐使用 goreleaser各平台的配置文件为orbit/goreleaser-linux.ymlLinux amd64orbit/goreleaser-linux-arm64.ymlLinux arm64orbit/goreleaser-macos.ymlmacOSorbit/goreleaser-windows.ymlWindows amd64orbit/goreleaser-windows-arm64.ymlWindows arm64不使用 goreleaser 时也可以直接go build例如 LinuxCGO_ENABLED1 \ GOOSlinux \ GOARCHamd64 \ go build \ -trimpath \ -ldflags-s -w -X github.com/fleetdm/fleet/v4/orbit/pkg/build.Version$VERSION \ -X github.com/fleetdm/fleet/v4/orbit/pkg/build.Commit$COMMIT \ -X github.com/fleetdm/fleet/v4/orbit/pkg/build.Date$DATE \ -o ./orbit-linux ./orbit/cmd/orbit官方建议在目标平台上原生构建而非交叉编译以避免构建或运行期错误。生成的安装包内含自编译 Orbit需要先搭建本地 TUF 仓库仓库内 tools/tuf 提供了相关说明。未来方向Orbit 的演进路线按照原文档的展望v1 只是起点Orbit 的目标是成为 Fleet 在终端主机上的代表。原文档提到两个已在规划中的能力允许 Orbit 更新 osquery 的命令行参数flags——这意味着 osquery 的启动配置可以从 Fleet 侧远端下发与调整为 osquery 管理扩展extensions——支持部署与更新 osquery 扩展。加上 orbit/README.md 中列出的、超出 Launcher 范围的既有目标更新渠道精细控制、远端管理 osquery 版本等可以推断 Orbit 正在从安装器 自动更新器逐步演进为 Fleet 终端侧的统一 agent 管理入口。当前仓库中 Orbit 已远超 v1 时的形态它已承担脚本执行--enable-scripts、Fleet Desktop 自服务、MDM 迁移、BitLocker/LUKS 磁盘加密支持、setup experience、主机身份证书TPM-backed HTTP signing等大量能力可见于 orbit/pkg 下scripts、bitlocker、luks、setup_experience、useraction等子包印证了one-stop shop for all your agent needs的发展方向。结语Orbit 解决了终端 agent 生命周期管理中安装、升级、对齐这一核心痛点部署侧用fleetctl package一条命令生成各平台安装包运行时由基于 TUF 的安全更新链路自动把 osquery 与 Fleet Desktop 维持在兼容版本并可通过 stable/edge 渠道或固定渠道实现精细化版本控制。对于希望在 Fleet 生态中一次部署、自动进化的团队来说理解 Orbit 的安装、参数与更新机制是落地 Fleet 终端管理的第一步。【免费下载链接】fleetOpen device management项目地址: https://gitcode.com/GitHub_Trending/fl/fleet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号