CellSpec 禁止路径(DenyPaths)

wesgine 的 CellSpec.DenyPaths 声明 Cell 内 Agent 不可读写的文件系统路径。


设计目的

Agent 的 read / write / exec 工具可以访问宿主文件系统。DenyPaths 在 Sandbox 层拦截对敏感路径的访问,保护:


声明方式

CellSpec{
    DenyPaths: []string{
        filepath.Join(dataDir, "hypervisor.db"),
        configFile,
        "/etc/passwd",
    },
}

检查机制

Sandbox 层的 checkPathAccess() 在每次文件操作前执行路径前缀匹配:

  1. 规范化请求路径(filepath.Clean + filepath.Abs)
  2. 逐条比对 DenyPaths 的前缀
  3. 匹配 → 返回 ErrPathDenied
  4. 不匹配 → 放行

与 Compliance 预设的关系

ComplianceClass 的预设(如 PresetFinancial)会注入额外的 DenyPaths:

预设注入的 DenyPaths
PresetFinancial/credentials、金融数据目录等
PresetPIIStrict个人信息存储目录等

但这些注入的 DenyPaths:


与 EnginePaths 的区别

字段作用谁设定
DenyPaths禁止访问的路径列表消费方声明 + Compliance 注入
EnginePaths引擎内部保护的路径引擎自动设定

两者共同参与 pathaccess 模块的路径边界判定。


运行时修改

DenyPaths 可通过 SpecPatch 修改(mutable 字段):

PATCH /admin/cells/{id}
{
  "deny_paths": ["/new/sensitive/path"]
}

相关文档