资讯动态

Fleet 4.60.0 发布解读:Linux 磁盘加密密钥托管、OS 设置自定义目标与脚本预览

发布时间:2026/9/18 8:12:28 来源:尧图企业网站定制
Fleet 4.60.0 发布解读Linux 磁盘加密密钥托管、OS 设置自定义目标与脚本预览【免费下载链接】fleetOpen device management项目地址: https://gitcode.com/GitHub_Trending/fl/fleetFleet 4.60.0 是开源设备管理平台 Fleet 的一次重要功能迭代围绕三个核心能力展开为 Ubuntu/Fedora 等 Linux 工作站托管Escrow磁盘加密密钥、通过labels_include_any为 OS 设置配置描述文件提供包含任意标签的自定义目标能力以及在 Host details 与 Scripts 页面直接预览脚本。本文以 fleet-4.60.0.md 发布说明为主体结合仓库内 disk-encryption 架构文档、orbit LUKS 实现 与 GitOps YAML 配置参考完整讲解这三个新特性背后的原理、配置方式与运维影响帮助读者在升级到 4.60.0 后立即用好这些能力。版本概览Fleet 4.60.0 的核心亮点Highlights如下Escrow Linux disk encryption keys支持为 LinuxUbuntu 与 Fedora工作站托管磁盘加密密钥团队可以在员工离职时无需本地密码即可访问加密数据在简化交接的同时保证关键数据既受保护又可访问。Custom targets for OS settings新增 include any 标签选项可把 OS 设置配置描述文件精确下发给团队内的特定主机实现在不破坏整体基线的前提下灵活调整配置。Preview scripts before run在Host details或Scripts页面直接预览脚本内容运行前先核对脚本是否正确降低出错风险。如果你计划从旧版本升级请参考仓库内的 升级指引 与部署相关文档完整变更清单可对照 CHANGELOG.md 查看。Linux 磁盘加密密钥托管Escrow解决什么问题过去 Linux 工作站的磁盘加密密钥托管一直是 MDM 领域的缺口macOS 有 FileVault Escrow BuddyWindows 有 BitLocker 恢复密钥托管而 LinuxUbuntu/Fedora 系缺少同等能力的钥匙托管。当员工离职或忘记密码时IT 往往无法打开加密磁盘中的数据。Fleet 4.60.0 补齐了这一能力——它只在主机已启用加密且运行受支持操作系统时才发起托管流程不会在不合格主机上打扰用户。支持范围与前提根据 disk-encryption.md 的实现说明Fleet 可以为以下 Linux 主机托管磁盘加密密钥操作系统Ubuntu、Kubuntu、Fedora磁盘加密安装系统时启用了LUKS2加密托管行为Fleet 只会在主机已经启用加密且系统版本合格时发起流程不会在不符合条件的主机上向用户弹出提示。托管流程密码短语模式Fleet 的 Linux 密钥托管是一个用户输入密码 → 生成新密钥 → 上传托管的多步流程完整时序见 disk-encryption.md用户在操作系统安装阶段对磁盘启用 LUKS2 加密管理员在 Fleet 中启用磁盘加密Disk encryption主机向 Fleet 注册Enroll随后通过 orbit 上报加密状态Fleet 服务器通过 orbit 配置中的notifs.RunDiskEncryptionEscrow通知客户端主机已加密但尚无密钥被托管orbit 触发Fleet Desktop弹出用户密钥托管对话框用户输入其 LUKS 加密密码短语passphraseorbit 用该密码短语在 LUKS2 卷上新建一个密钥槽key slot槽内放入 orbit 随机生成的新密码orbit 将新密码加密后上报给 Fleet 服务器完成托管服务器确认密钥已托管后关闭RunDiskEncryptionEscrow通知流程结束。与 Windows 类似Linux 密钥没有周期性的可解密性复查——密钥在托管时即被标记为可解密之后不再重新校验。客户端实现细节orbit/pkg/luks客户端逻辑位于 orbit/pkg/luks/luks_linux.go仅 Linux 构建几个值得注意的实现要点最大密钥槽数maxKeySlots 8当 LUKS 卷的密钥槽已满时会匹配Key slot \d is full错误ErrKeySlotFull此时需要先清理旧密钥槽才能继续托管用户交互文案对话框标题为 Enter disk encryption passphrase密码错误时提示 Passphrase incorrect. Please try again.成功后提示用户关闭窗口并到 Fleet 的 My device 页面点击Refetch以清除黄色横幅luks_linux.go超时处理若用户在限定时间内未输入密码会提示 Please visit Fleet Desktop My device and click Create key将密钥创建动作交给用户主动触发。服务器端存储与归档托管的密钥存储在 MySQL 的host_disk_encryption_keys表中。密钥值按平台使用不同凭据加密只能由对应的私钥解密平台加密所用凭据解密依据macOS、iOS、iPadOSFleet CA 证书assets.CACertsAndKeyForDecryptionWindowsWSTEP 身份证书mdm.windows_wstep_identity_cert_bytes及其私钥LinuxFleet 服务器私钥server.private_key重要提醒替换上述任何凭据都会导致此前用旧凭据托管的所有密钥无法解密。macOS 仅对尚未验证过的密钥每小时复查一次可解密性Windows 与 Linux 的密钥在托管时即标记为可解密之后不再复查。此外任何被托管的密钥还会在host_disk_encryption_keys_archive表中保留一份备份副本加密方式与在线密钥一致。当主密钥因轮换等原因不可用时可以执行以下 SQL 从归档表恢复该主机最近一次归档的密钥将HOST_ID替换为实际主机 IDINSERT INTO host_disk_encryption_keys (host_id, base64_encrypted, base64_encrypted_salt, key_slot, decryptable, created_at) SELECT host_id, base64_encrypted, base64_encrypted_salt, key_slot, 1 AS decryptable, created_at FROM host_disk_encryption_keys_archive WHERE host_id HOST_ID ORDER BY created_at DESC LIMIT 1;4.60.0 之后的迁移 20260910153522_AddEscrowSentAtToHostDiskEncryptionKeys.go 进一步为host_disk_encryption_keys增加了escrow_sent_at列用于记录 LUKS 托管请求何时交给 fleetd、以及何时收到结果为托管状态跟踪提供了更细的时间维度。TPM 支持的 FDEUbuntu 26 及更新版本仓库文档还描述了 Ubuntu 26 及更新版本引入的TPM-backed FDE场景底层仍是 LUKS2/dm-crypt但 LUKS 密钥被密封到 TPM磁盘开机自动解锁默认没有用户密码短语密钥槽由 snapdsecboot管理。此时 Fleet 不能再用cryptsetup luksAddKey的方式添加密钥槽外部添加的槽不被 snapd 跟踪内核更新重新密封时可能被清除而是orbit 通过检查 LUKS2 tokens 识别出 snapd 管理的卷通过 snapd REST API/run/snapd.socket的POST /v2/system-volumessnapd 2.74 支持执行generate-recovery-key → add-recovery-key → check-recovery-key在名为fleet-escrow的专用槽中登记 Fleet 专属的恢复密钥不动用户的安装期恢复密钥由于磁盘自动解锁、没有可收集的密码整个流程静默完成、无用户对话框escrow 请求POST /api/fleet/orbit/luks_data中key_type为recovery_key由于恢复密钥没有 salt 和密钥槽host_disk_encryption_keys中对应列为空。OS 设置的自定义目标labels_include_any新能力定位过去Fleet 的配置描述文件configuration profiles通常以团队为单位整体下发。4.60.0 引入的include any 标签选项GitOps 中对应labels_include_any允许把 OS 设置精确下发给团队内拥有任一指定标签的主机从而在不打乱更大范围基线配置的前提下对特定主机子集做差异化调整。该能力同时在 API/数据库与界面层落地服务器为 include any 标签配置描述文件的部署增加了数据库支持profile 对账机制profile reconciliation支持 include any 标签/Profile 关系界面支持为包含任一已定义标签的主机安装自定义配置描述文件。在 GitOps 中的配置方式在 yaml-files.md 的 GitOps 参考中labels_include_any可出现在macos_settings、windows_settings等 OS 设置区块例如macos_settings: configuration_profiles: - path: ../lib/macos/profiles/ddm.json labels_include_any: - Engineering activation: ../lib/macos/activations/activation.json windows_settings: configuration_profiles: - paths: ../lib/windows/profiles/*.xml labels_include_any: - Engineering语义规则同样适用于software区块的软件安装目标labels_include_all目标为拥有全部指定标签的主机labels_include_any目标为拥有任一指定标签的主机labels_exclude_any目标为不拥有任何这些标签的主机三选一labels_include_all、labels_include_any、labels_exclude_any只能设置一个都不设置则面向所有主机。例如在software区块中可以只为特定团队安装某款 App Store 应用software: app_store_apps: - app_store_id: us.zoom.videomeetings platform: android self_service: true labels_include_any: # Available in Fleet Premium - Product - MarketingFleet Maintained Apps 同样支持该字段例如只给Engineering标签的主机安装fleet_maintained_apps: - slug: parallels/darwin version: ^26 self_service: true labels_include_any: - Engineering在 Policies 中labels_include_any需写在单个 policy上写在顶层不会生效。该能力的数据库基础可从迁移 20241220114904_AddVppAppTeamAndSoftwareInstallerLabelsTable.go 中看到标签与软件/VPP 应用关联表的建立脉络。配套改进性能向大型团队批量添加/移除配置描述文件的性能提升了约一个数量级修复修复了基于排除标签excluded labels部署 MDM 配置描述文件时的缺陷。运行前脚本预览Fleet 4.60.0 在Host details与Scripts页面新增脚本预览能力管理员无需先把脚本下载到本地即可直接查看脚本内容确认无误后再执行。这减少了脚本写错就直接跑到上千台主机上的风险也简化了日常脚本审计流程。配合 4.60.0 的脚本相关改进脚本被编辑或删除时会取消尚未执行的挂起脚本执行任务pending script executions避免过期脚本继续生效界面支持从脚本页面与主机详情页面查看脚本内容而无需下载。其余变更速览端点操作Endpoint operationsGitOps 新增labels_include_any支持整个应用的键盘可访问性大幅改进复选框、下拉框、表格导航等新增fleetd注册的活动记录含主机序列号与显示名Fleet 可通过节点密钥node key认证的 HTTPS 向 Agent 下发 YARA 规则需要 osquery 5.14新增查询可在开启/关闭自动化时明确当前日志目标log destination活动流在自动化启用、编辑或禁用时生成活动记录新增查看脚本入口后配套的挂起执行取消逻辑见上文。设备管理MDM改进 NDES SCEP 代理对超时与权限不足错误的处理云客户新增 Windows 自动注册autoenrollment配置的信息横幅team_identifier签名信息已补充到/api/latest/fleet/hosts/:id/software端点返回的 macOS 应用数据中软件标题详情页新增主机数/版本数新鲜度指示支持为 Ubuntu 与 Fedora 的磁盘加密提供界面化操作与本文第一个特性配套支持使用zstd压缩的 deb 包。漏洞管理Vulnerability managementFleet Premium 下可在主机列表端点GET /api/latest/fleet/hosts使用populate_softwarewithout_vulnerability_descriptions跳过计算开销较大的漏洞详情填充仅获取软件清单从而显著降低主机列表接口的负载。缺陷修复与改进节选上传大型软件安装包时服务端内存占用下降注意安装包现在会使用临时磁盘空间需保证充足存储软件批量端点的状态码由 200OK调整为202Accepted语义更贴合已受理、异步执行升级测试用依赖msw以提升安全性针对 Ubuntu 24.04 上 GDM 的 bug改为在解锁时重启 Linux 机器以绕过问题GitOps 在 Fleet 中存在多于 1 个 ABM token 时若使用已废弃的apple_bm_default_team键将返回错误修复上传不含顶层Distribution.xml但含顶层PackageInfo.xml的 macOS 软件包例如 Okta Verify.app失败的问题修复部分 Fleet Maintained Apps 生成错误卸载脚本的问题修复 PEEXE自解压安装包如 Opera名称/版本解析问题修复基于排除标签部署 MDM 配置描述文件的缺陷修复 GitOps 中安装器查询与脚本路径解析统一以引用文件位置为基准的问题注意此修复会破坏此前为兼容不一致行为而编写的 YAML修复 Apple ADE 过程中启用 MDM IdP 集成时最低 OS 版本强制未生效的问题修复在未 MDM 注册的主机上允许尝试安装 App Store 应用的问题。升级建议升级到 Fleet 4.60.0 时建议关注以下几点磁盘空间新版本上传大型软件安装包会占用临时磁盘空间请确保 Fleet 服务器所在存储有足够余量YAML 兼容性GitOps 的路径解析行为已修复并可能破坏旧 YAML——如果你的安装器或脚本位于子目录且引用了其他位置的脚本请先修正路径再升级废弃键检查若使用多个 ABM token请移除已废弃的apple_bm_default_team键否则 GitOps 会返回错误软件批量 API 调用方POST /api/latest/fleet/software/...类批量端点的返回码从 200 变为 202集成代码需相应适配。部署与升级的具体步骤可参考仓库内的 部署文档、fleet-server-configuration.md 以及根目录 README.md 中关于发行与构建的说明。【免费下载链接】fleetOpen device management项目地址: https://gitcode.com/GitHub_Trending/fl/fleet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价