Agent Skills
返回列表
🔒

Sops-nix 密钥注入

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/inject-sops-managed-secrets-into-nixos-and-home-manager-configs-with-sops-nix。

技能介绍

声明式配置中的密钥管理痛点

在 NixOS 和 Home Manager 的声明式配置流程中,敏感信息(如 API Token、SSH 私钥、数据库凭据)往往与配置代码混在一起。如果直接将解密后的密钥明文写入仓库,会导致严重的安全泄露;而如果采用手动复制或外部脚本的方式在 nixos-rebuild 时注入环境变量,又会破坏纯声明式的可重现性和审计追踪。开发者急需一种方案,能在系统激活阶段自动解密机密文件,并将结果安全地物化到对应的配置路径中,同时避免密钥在版本控制里裸奔。

sops-nix 的工作机制与核心步骤

该技能基于 sops-nix 模块,将 SOPS(Secrets OPerationS)与声明式配置无缝衔接。其核心能力是在系统激活期间,直接从 age 或 PGP 加密的 SOPS 文件中读取密钥,无需人工干预或手抄明文值。

关键步骤包括:

  • 模块集成:在 NixOS 或 Home Manager 配置中启用 sops-nix 模块,并指定受管的密钥文件路径。
  • 密钥物化:在 nixos-rebuild activate 阶段,系统会自动调用解密逻辑,将 SOPS 管理的机密写入目标路径,并严格控制文件权限。
  • 状态管理:通过 sops-nix.service 或激活脚本维护密钥的同步状态,确保系统重启或配置更新后,注入的密钥依然与加密源保持一致。

适用边界与注意事项

虽然该方案高度自动化,但在落地时仍需关注几个关键限制:

  • 密钥分发机制:对于多节点环境,推荐使用 SSH host keys 进行密钥分发,这要求目标系统启用 OpenSSH。如果手动分发 age 或 PGP 密钥,可能会导致 SOPS 触发 Shamir 秘密共享机制,要求提供多个私钥才能解密。
  • Home Manager 依赖:Home Manager 模块依赖 systemd/user,因为它是通过运行 sops-nix.service 服务来管理密钥的,而非传统的激活脚本。
  • 环境要求:需要确保执行 Nix build 和系统激活的环境具备 sops 二进制及相应的解密私钥访问权限。

使用场景

  • 维护 NixOS 服务器,需要在 `nixos-rebuild` 激活时自动解密 age 加密的 API Token 并写入配置目录。
  • 管理 Home Manager 配置,想通过声明式模块把 PGP 加密的 SSH 私钥注入到用户主目录,避免手动复制。
  • 部署多节点环境,希望利用 SSH host keys 分发密钥,确保各节点激活时都能解密 SOPS 管理的数据库凭据。

适合人员

  • 注重配置可重现性与审计追踪的 NixOS 系统管理员,希望将密钥管理纳入声明式代码库。
  • 管理大量敏感凭据的 DevOps 工程师,需要自动化解密流程以避免明文密钥泄露。
  • 使用 Home Manager 管理多台开发机的技术专家,追求配置与密钥的高度同步。