You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何搭建可处理不可信派生的Nix远程构建器?

多用户共享Nix远程构建器的安全配置方案

针对你提出的三个核心疑问,以下是具体的实操解答:

1. 最小化my-user权限的配置方法

要让my-user仅能触发Nix守护进程执行构建,需从用户组、SSH限制、权限隔离三个层面入手:

  • 加入专用用户组:将my-user添加到nix-users组,该组默认被授权向nix-daemon提交构建请求,无需root权限即可触发构建,但无法直接操作/nix/store或修改Nix核心配置。
  • 限制SSH登录权限:在服务器的~my-user/.ssh/authorized_keys文件中,给用户的公钥添加command限制,强制仅允许执行Nix远程构建的专用命令,示例配置如下:
    command="nix-store --serve --write --print-stderr",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...
    
    这样用户通过SSH连接时,只能运行指定的nix-store命令,无法获取交互式shell或执行其他任意操作。
  • 禁用sudo及额外权限:确保my-user不在sudoers列表中,且没有修改/etc/nix/nix.conf等核心配置文件的权限。

2. 恶意派生是否会破坏共享Nix存储?

在正确配置多用户模式的前提下,不会对共享/nix/store造成破坏,原因如下:

  • 构建用户权限隔离:多用户模式下,所有构建任务都由nixbld1、nixbld2等专用构建用户执行,这些用户对/nix/store仅有只读权限,无法直接修改或删除已有存储内容。
  • 写入流程管控:构建产物的写入操作由nix-daemon以root身份完成,只有当构建输出的哈希值与派生声明的预期哈希完全匹配时,才会被移入/nix/store,恶意脚本无法绕过这个校验流程。
  • 临时目录隔离:构建过程中生成的中间文件会存放在临时目录,即使恶意脚本执行rm -rf,也只能影响临时环境,无法触及真实的/nix/store。

3. 是否需要强制启用沙箱模式?

必须强制启用沙箱模式,这是多用户共享场景下的核心安全保障:

  • 环境完全隔离:沙箱会限制构建进程的网络访问、文件系统访问(仅允许读取指定的输入依赖和写入临时目录),彻底阻断恶意派生读取主机敏感文件或影响其他构建任务的可能。
  • 补充权限隔离的不足:即使构建用户nixbld的权限被意外突破,沙箱的内核级隔离(如Linux的namespaces)能进一步防止恶意代码逃逸到主机环境。
  • 全局强制配置:在/etc/nix/nix.conf中添加sandbox = true,并设置extra-sandbox-paths控制沙箱内的可访问路径,确保所有用户的构建任务都强制使用沙箱,无法通过命令行参数覆盖。

内容的提问来源于stack exchange,提问作者Yang Bo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:10:26