
用 Fleet 与 1Password Connect 实现 LAPS 本地管理员密码自动轮换【免费下载链接】fleetOpen device management项目地址: https://gitcode.com/GitHub_Trending/fl/fleet本地管理员密码管理是设备安全里人人知道重要、却很少有人愿意真正处理的问题静态密码在团队间共享、被写在便签纸上、甚至同一台机器上反复使用。本文基于 Fleet 官方发布的 LAPSLocal Administrator Password Solution本地管理员密码解决方案实践指南讲解如何用 Fleet 的策略自动化与脚本执行能力结合 1Password Connect 的凭据托管能力在 macOS 与 Windows 设备上每 7 天自动轮换本地管理员密码并安全存储。读完本文你将掌握从部署 1Password Connect、配置 Fleet Secret Variables到编写 GitOps 策略 YAML 与验证轮换效果的完整闭环方案。这个方案解决什么问题痛点macOS 与 Windows 设备上的本地管理员账户密码往往从创建那天起就再也不变。一旦有人离职、设备被入侵IT 只能在一台台甚至成百上千台机器上手工重置密码效率低下且容易遗漏。方案这套 LAPS 实现让 Fleet 每 7 天自动轮换一次本地管理员密码并把新密码安全写入 1Password 保管库Vault。Fleet 负责检测与自动化执行1Password 负责加密存储只有获得授权的管理员才能取回凭据——既消灭了静态密码风险又保留了按需取用能力。工作原理Fleet 的策略Policy持续监控设备检查本地管理员密码是否在最近一周内完成轮换。当某台主机未通过这项检查时Fleet 通过策略上的run_script自动化自动触发对应平台的 LAPS 脚本脚本按顺序完成四件事生成一个强随机密码通过 1Password Connect API 将密码写入指定保管库更新本地管理员账户的密码用设备主机名、用户名和时间戳为这条凭据打上标签。关键的安全设计是密码在脚本将其直接应用到本地账户之前不会以明文形式离开 1Password Connect 服务器。这也符合文档中对零信任检索的描述——即使有人拿到了设备访问权也找不到散落在系统里的明文密码。开始部署前置条件Fleet Premium——Secret Variables 与策略自动脚本执行属于 Premium 能力一台 Fleet 纳管设备可访问的 1Password Connect 服务器已配置好的 Fleet GitOps 仓库——脚本与策略都通过 GitOps 方式下发。部署 1Password Connect首先按照 1Password Connect 官方文档完成服务器部署你需要拿到三样信息Connect 服务器 URLAPI Token用于鉴权保管库 IDVault ID密码将要写入的保管库。这三样信息随后将分别对应 Fleet 侧的三个 Secret Variable。在 Fleet 中配置 Secret VariablesFleet 的 Secret Variables 以$FLEET_SECRET_前缀命名在脚本与配置下发时由服务端完成替换因此敏感值不会以明文形式写死在 GitOps 仓库或设备上的脚本里。在server/fleet/secrets.go中可以确认前缀常量定义const ServerSecretPrefix FLEET_SECRET_为这套 LAPS 方案创建以下四个 Secret Variables变量名用途FLEET_SECRET_OP_CONNECT_HOST1Password Connect 服务器端点FLEET_SECRET_OP_CONNECT_TOKENConnect API 鉴权 TokenFLEET_SECRET_OP_VAULT_ID凭据要写入的目标保管库 IDFLEET_SECRET_LAPS_ADMIN_USERNAME被创建/轮换的用户名默认laps-adminSecret Variables 的增删查在服务端有完整 API 支撑对应实现位于 server/fleet/api_secret_variables.go包括CreateSecretVariablesRequest支持dry_run预检、ListSecretVariablesRequest与DeleteSecretVariableRequest即可以通过 Fleet API 以声明方式管理这些变量。同时server/fleet/secrets.go 中定义了MissingSecretsError当脚本引用了数据库中不存在的$FLEET_SECRET_*变量时Fleet 会直接拒绝保存并提示缺失变量名这在调试 GitOps 配置时非常有用。添加脚本与策略获取laps-1password仓库中的脚本把它们复制进 Fleet GitOps 仓库的lib/目录并在其中加入用于检查最近一次密码轮换时间的策略 YAML 文件。每个策略都通过run_script自动化关联一个平台专属的 LAPS 脚本任何未通过 7 天轮换检查的主机都会自动触发对应脚本执行。当 GitOps 变更被推送到仓库后Fleet 会自动拾取并应用。从源码看run_script正是策略失败时的自动化触发机制。在 server/fleet/policies.go 中Policy结构体上明确声明// RunScript is used to trigger script execution when this policy fails. // // Only applies to team policies. RunScript *PolicyScript json:run_script,omitemptyPolicyScript携带关联脚本的ID与Name见同文件 PolicyScript 定义策略自动化类型也定义了PolicyAutomationTypeScripts scripts这一分支。也就是说脚本执行失败会进入策略自动化重试/安装尝试的治理框架——server/fleet/policies.go 中定义了MaxPolicyAutomationRetries 3、MaxPolicyAutomationInstallAttempts 10与 24 小时的安装尝试过期时间用于约束自动化重试行为。关于脚本本身Fleet 对可托管脚本有严格校验相关逻辑在 server/fleet/scripts.go仅允许.sh、.ps1、.py三种扩展名shell 脚本使用 shell shebang如#!/bin/sh或省略 shebangPython 脚本必须以#!/usr/bin/env python3形式的 shebang 开头PowerShell 脚本不允许 shebang由powershell.exe直接执行。因此 LAPS 的 macOS 脚本应命名为.sh、Windows 脚本为.ps1并严格遵守上述约束否则策略保存会被拒绝。脚本执行走POST /api/_version_/fleet/scripts/run接口该端点在 server/service/handler.go 中注册并受到MaxScriptSize请求体大小限制。验证部署是否生效部署完成后按以下清单验证检查 1Password 保管库——应出现带主机名标签的新凭据条目查看 Fleet 策略页面——确认主机在轮换后转为通过Passing状态测试凭据取回——由授权管理员从 1Password 拉取一条凭据验证端到端可用。Fleet 的活动流Activity Feed也会记录脚本执行活动ran_script事件类型定义在 server/fleet/activities.go其中包含script_execution_id与script_name等字段可作为审计与排障的依据。为什么这套方案有效自动化降低风险不再有共享密码与人工轮换排期设备按固定节奏自行轮换。审计追踪每次轮换都会在保管库中生成一条带元数据主机名、用户名、时间戳的新条目你能精确知道凭据何时变更、属于哪台设备。零信任取回凭据在 1Password 中保持加密状态直到具备权限的管理员取用。即便有人攻入设备也找不到明文密码。平台灵活性同一套工作流同时覆盖 macOS 与 Windows——一套策略、一套脚本集、一致的终端安全姿态。测试与故障排查laps-1password仓库自带完整的测试套件可通过 Docker Compose 在本地运行并提供了 macOS 与 Windows 两套手动测试清单。若某次轮换失败优先做两件事查看 Fleet 的脚本执行日志结合上文的活动流script_execution_id定位单次执行确认设备能否访问 Connect 服务器——防火墙规则与网络分段有时会拦截 API 调用这是最常见的失败原因。此外还可借助 Fleet 侧的MissingSecretsError提示见 server/fleet/secrets.go快速判断是否为 Secret Variable 缺失或拼写错误导致的配置问题。落地后的进阶建议LAPS 上线后文档建议继续完善为连续轮换失败配置告警依据自身安全要求调整轮换间隔默认 7 天为 helpdesk 团队文档化凭据取回流程复核 1Password 的访问策略确保只有授权管理员可以查看凭据。本地管理员密码管理本不必痛苦Fleet 负责自动化编排1Password 负责加密存储二者结合即可获得企业级的凭据管理能力。本文所涉及的所有 Fleet 能力Secret Variables、策略run_script自动化、脚本校验与执行 API均可在当前仓库对应源码中逐一印证为你的落地实施提供了完整的实现依据。【免费下载链接】fleetOpen device management项目地址: https://gitcode.com/GitHub_Trending/fl/fleet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考