ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Fleet 4.74.0 特性深度解析:Linux 开箱配置体验、自定义软件图标与 AWS IAM 认证实战

Fleet 4.74.0 特性深度解析:Linux 开箱配置体验、自定义软件图标与 AWS IAM 认证实战 Fleet 4.74.0 特性深度解析Linux 开箱配置体验、自定义软件图标与 AWS IAM 认证实战【免费下载链接】fleetOpen device management项目地址: https://gitcode.com/GitHub_Trending/fl/fleetFleet 4.74.0 是面向 IT 管理员与安全工程师的一次重要版本发布其核心亮点包括Linux 设备的开箱配置体验Setup Experience、可上传的自定义软件图标、集中化的批量脚本执行详情页、自助服务软件的默认启动指引以及为自托管实例引入的 AWS IAM 认证覆盖 RDS MySQL 与 ElastiCache Redis。本文以 fleet-4.74.0.md 发布说明为主线结合当前仓库的 Go 源码与接口定义逐一拆解这些能力的用法、API 形态与底层实现。一、Linux 开箱配置体验让新工作站开箱即用1.1 解决了什么问题传统 Linux 工作站的初始化往往依赖管理员手动安装软件、手工执行脚本新设备在第一天无法达到可投入使用状态。Fleet 4.74.0 将原本主要面向 Apple 平台的 Setup Experience 扩展到了 Linux管理员可以把必需软件纳入 Linux 设备的配置流程端用户在设置过程中即可看到实时安装进度减少人工介入。1.2 支持的平台与状态机从 server/fleet/setup_experience.go 可以看到Setup Experience 已覆盖 macOS、iOS、iPadOS、Windows、Linux 与 Android 六类平台var SetupExperienceSupportedPlatforms []string{ macos, ios, ipados, windows, linux, android, }每个步骤的状态由SetupExperienceStatusResultStatus定义包含pending、running、success、failure、cancelled五个取值其中success与failure是终态IsTerminalStatus()返回 true。一次开箱配置的步骤可以是四类中的一种软件安装器software installer、VPP 应用安装、内部应用.ipa安装或脚本执行由SetupExperienceStatusResult结构中互斥的外键字段SoftwareInstallerID/VPPAppTeamID/InHouseAppID/SetupExperienceScriptID区分IsValid()会校验这些字段不能同时设置。1.3 关键 API编排端与设备端Fleet 4.74.0 为 Linux Setup Experience 新增了两类端点在 server/service/handler.go 与 server/fleet/api_orbit.go 中有明确注册管理端Admin APIPUT /api/v1/fleet/setup_experience/software与GET /api/v1/fleet/setup_experience/software现在接受platform参数取值linux或macos默认macos用于按平台编排要安装的软件清单。设备端Device / Orbit APIPOST /api/fleet/orbit/setup_experience/init由 fleetdOrbit agent在设备侧发起请求体仅包含orbit_node_key用于通知服务器开始开箱配置流程。POST /api/v1/fleet/device/{token}/setup_experience/status以设备令牌查询当前配置状态。POST /api/fleet/orbit/setup_experience/statusmacOS 与 Linux 主机通用的状态上报端点请求体支持force_release与reset_failed_setup_steps后者用于在 macOS 软件安装失败后重新入队已取消的步骤。设备端返回的SetupExperienceStatusPayload结构见 server/fleet/setup_experience.go包含脚本、软件列表、引导包bootstrap package、配置描述文件、账户配置、组织 Logo URL 与require_all_software标志——后者决定是否必须所有软件都安装成功才算完成开箱。1.4 主机标识的工程细节一个值得注意的实现细节是HostUUIDForSetupExperience函数macOS/iOS/iPadOS/Android 使用硬件的host.UUID作为标识而 Windows/Linux 设备由于可能存在硬件 UUID 重复的问题改用host.OsqueryHostIDOSQuery 主机 ID作为 setup_experience_status_results 表中的标识。这保证了两类设备在并发初始化场景下的唯一性。二、自定义软件图标让自助服务更易识别IT 管理员现在可以为软件上传自定义图标端用户在My device Self-service我的设备 自助服务中能更直观地识别并安装所需工具降低软件查找成本。该能力与软件标题Software Title绑定图标 URL 支持两种形态管理端 API 形态带软件标题 ID 的图标 URL设备令牌形态device token URL由SetupExperienceStatusResult.ForMyDevicePage在渲染 My Device 页面时通过SoftwareTitleIconUrlWithDeviceToken动态转换保证端用户通过设备令牌也能安全加载图标。这意味着图标不仅出现在管理控制台的软件详情中也会随 Setup Experience 与自助服务页面一并展示相关显示字段DisplayName与IconURL在 server/fleet/setup_experience.go 中定义。三、批量脚本详情页脚本执行状态一屏尽览此前批量脚本Batch Script的执行状态、输出与错误信息分散在各主机的Host details页面排查效率低。Fleet 4.74.0 新增了批量脚本运行详情页并在 API 层配套了专门端点。3.1 数据模型与端点数据表batch_script_executions与batch_activity_host_results后者保存每次批量执行的execution_id, host_id映射并有唯一约束与级联删除外键见 server/datastore/mysql/migrations/tables/20250424153059_AddBatchScriptExecutionTables.go 与 server/datastore/mysql/migrations/tables/20250814123333_AddBatchHostResultsUnique.go。新增端点GET /api/v1/fleet/scripts/batch/:batch_execution_id/host_results在 server/api_endpoints/api_endpoints.yml 注册用于列出批量脚本执行所覆盖的目标主机及其结果batch_execution_id使用[a-zA-Z0-9-]格式校验。3.2 排序与展示优化批量脚本在Batch Progress批量进度UI 中按状态分类排序started状态按开始时间排序finished状态按完成时间排序避免列表跳动。fleetctl get mdm-command-results的输出改为垂直格式而非表格便于在终端中阅读长输出。主机详情页的批量脚本关联查询通过batch_activity_host_results左连接实现见 server/datastore/mysql/hosts.go把脚本执行记录与主机信息统一呈现。四、自助服务软件启动说明端用户少走弯路Fleet 4.74.0 为My device Self-service中的软件加入了默认启动指引。例如 macOS 应用会提示Finder Applications访达 应用程序Windows 程序也有对应的打开方式提示。端用户在安装完成后能立即知道如何打开软件减少困惑。本次更新为自助服务的 macOS 应用与 Windows 程序都补充了打开说明与自定义软件图标、Setup Experience 一起构成完整的端用户自助体验闭环。五、AWS IAM 认证用短期凭证连接 MySQL 与 Redis对自托管 Fleet 的企业用户4.74.0 新增了面向 AWS RDSMySQL与 AWS ElastiCacheRedis的 IAM 认证支持用短期凭证替代长期静态密码符合 AWS 最佳实践。5.1 核心机制带缓存与抖动的令牌管理器server/aws_common/iam_auth.go 实现了通用的IAMAuthTokenManager令牌有效期 15 分钟但每 10 分钟加上最多 30 秒随机抖动jitter即刷新避免大量连接在同一时刻集中重建令牌使用读写锁sync.RWMutex缓存令牌并采用双检锁模式避免并发时重复生成支持通过LoadAWSConfig配置 AssumeRole含 STS External ID方便跨账号或最小权限场景。5.2 RDS MySQL 认证实现server/datastore/mysql/rdsauth/connector.go 通过实现database/sql/driver.Connector接口把 AWS 生成的 IAM 令牌作为 MySQL 密码注入 DSN使用auth.BuildAuthTokenAWS SDK for Go v2 的feature/rds/auth包生成令牌通过NewConnectorFactory工厂注入到通用的 MySQL 连接初始化逻辑中从而在不给公共连接代码引入 AWS 依赖的前提下启用 IAM 认证自动为端点拼接端口若 DSN 未包含并预加载 AWS RDS CA 证书的 TLS 配置。5.3 ElastiCache Redis 认证实现server/datastore/redis/aws_iam_auth.go 采用 SigV4 预签名 URL 的方式生成令牌构造GET https://{clusterName}/请求附加Actionconnect与User{userName}参数X-Amz-Expires90015 分钟使用 AWS SDK v4 Signer 对请求预签名服务名为elasticache把预签名 URL 去掉https://前缀后作为 Redis 的 IAM 认证令牌。两种实现均复用了aws_common.IAMAuthTokenManager的缓存与抖动策略配置项包括region、sts_assume_role_arn、sts_external_id等对应MysqlConfig中的Region/StsAssumeRoleArn/StsExternalID。六、GitOps 软件编排的结构性变更Breaking Change本版本在软件 YAML 上有破坏性变更GitOps 用户需要留意迁移self_service、labels_include_any、labels_exclude_any、categories、setup_experience声明从软件包级移动到团队team级别一个软件包可由多个团队按需配置setup_experience现在可以设置在软件包software package、Fleet Maintained App 或 App Store 应用上与本次 Linux 开箱配置能力直接呼应单个 GitOps YAML 文件的software.packages下现在支持写入多个软件包generate-gitops命令生成的输出文件名支持 emoji 等特殊字符。七、安全与运维相关的其他改进对安全工程师值得关注的更新包括新增对 Hydrant 作为证书颁发机构CA的支持并提供了实验性 API可让 Fleet 向 Hydrant 请求证书出于安全考虑禁止在 Apple 配置描述文件的PayloadDisplayName字段中使用FLEET_SECRET环境变量新增POST /api/v1/fleet/configuration_profiles/batch端点支持批量修改 MDM 配置描述文件新增/batch/{batch_execution_id}/host-results端点用于列出批量执行的目标主机支持使用旧版 SSO 扩展注册 Company Portal 的主机接入 Entra 条件访问Conditional Access。此外还有一些性能与稳定性修复值得留意为distributed_query_campaign_targets表新增索引以加速实时查询。注意若该表已有数百万行数据迁移建索引可能耗时较长建议先在预发布环境验证迁移时长旧 campaign 目标的清理会在数小时内渐进完成避免数据库过载。实时查询 campaign 目标在 campaign 完成后 24 小时自动清理控制表体积OpenTelemetry 集成增强为异步任务host seen、labels、policies、query stats增加链路追踪改进 HTTP span 命名启用 gzip 压缩并减小批量大小以避免 gRPC 错误YARA 规则在PATCH /api/latest/fleet/config大批量修改及大量主机拉取/api/osquery/yara/{name}时的性能优化修复了自 Fleet 4.71.0 以来 Google Cloud StorageGCS支持失效的问题通过规避 AWS Go SDK v2 签名与 GCS 端点不兼容实现修复 Ubuntu GDM 环境下 Linux 锁屏脚本在 GUI 模式下失效的问题现在会切换 UI 到文本模式修复同时更新 10 个策略自动化时的死锁问题以及 UI 中分布式查询被拒绝错误降级为警告等若干问题。八、升级建议升级前请重点阅读发布说明中关于软件 YAML 破坏性变更的迁移文档尤其确认 GitOps 配置中self_service、labels_*、categories、setup_experience字段是否已按团队级别调整若使用自托管部署并打算启用 AWS IAM 认证请为 Fleet 服务所在账号配置好对 RDS / ElastiCache 的 IAM 权限与 STS AssumeRole并参考本仓库 server/aws_common/iam_auth.go 与 server/datastore/mysql/rdsauth/connector.go 的实现核对连接参数region、assume role ARN、STS External ID 等。涉及大量实时查询数据的主机建议先在预发布环境验证distributed_query_campaign_targets索引迁移耗时。说明本文技术细节与 API 路径均取自当前仓库源码如 server/service/handler.go、server/fleet/setup_experience.go、server/datastore/mysql/rdsauth/connector.go命令与配置请以实际部署环境为准。【免费下载链接】fleetOpen device management项目地址: https://gitcode.com/GitHub_Trending/fl/fleet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表