本功能为企业连接器的可选执行模式,仅执行现有count/sum/group_count。它把受信任的固定聚合程序放入单独进程及Linux cgroup v2,约束CPU、内存、进程数和子进程运行时间。默认关闭;启用后隔离条件缺失即拒绝启动或执行,不自动回退。
这不是任意代码、网络/文件系统/syscall沙箱,也不提供MPC、PSI或TEE证明。它不会自动隔离来源SQL采集、加工任务或独立CDC程序,不能据此关闭整项PDT-016/PDT-023。
运维准备
- 使用支持cgroup v2、clone3进入指定cgroup、
cgroup.kill及可执行sealed memfd的Linux主机。需要cpu/memory/pids控制器已启用的专属委派目录;运维按系统服务管理规范提供目录,不让连接器修改全局控制器。 - 委派目录应由连接器运行UID拥有,禁止组/其他用户写入,不是cgroup挂载根目录,也不能经过符号链接。程序只创建本次随机命名子组,结束后只清理自己的子组。
- 从同一候选构建取得
connector和datanous-aggregate-worker,通过受信任的交付清单核对worker SHA-256。不要把来自任意配置文件自报的摘要当作可信发布依据。 - 保留原企业来源白名单、文件权限和平台签名配置。worker只获得固定打开的只读CSV FD和最小计算策略,不获得连接器私钥、租约、DSN、来源路径或配置环境变量;签名由父连接器完成。
- macOS和其他不支持的平台会拒绝启用生产隔离模式。本机测试子进程协议成功不代表Linux硬限制通过。
配置
在已有企业本地sources.json中加入aggregateIsolation,保留既有root/files/connections等配置:
{
"aggregateIsolation": {
"enabled": true,
"workerPath": "/srv/datanous/bin/datanous-aggregate-worker",
"workerSHA256": "replace-with-trusted-64-lowercase-hex-sha256",
"cgroupParent": "/sys/fs/cgroup/approved-delegation",
"memoryMaxBytes": 134217728,
"cpuQuotaMicros": 50000,
"cpuPeriodMicros": 100000,
"pidsMax": 32,
"timeoutMillis": 30000
}
}
此示例须与完整sources配置合并;摘要和目录为占位值,不能原样执行。workerPath和cgroupParent须为绝对路径。
| 参数 | 支持范围与含义 |
|---|---|
enabled | 缺省false;true时所有固定聚合走严格隔离路径 |
memoryMaxBytes | 32MiB至1GiB;swap上限固定0,设置整组OOM处理 |
cpuPeriodMicros | 1,000至1,000,000微秒 |
cpuQuotaMicros | 1,000至period;例中为单核周期预算的50% |
pidsMax | 8至128,包含线程;不是同时执行任务数 |
timeoutMillis | 100至300,000毫秒,主要覆盖worker执行/传输阶段 |
父进程输入hash与worker映像复制受字节预算限制,并检查任务上下文;本地文件系统读取延迟不由子进程超时提供硬上限。输入最大64MiB/100万行,请求64KiB、响应512KiB、stderr4KiB。小内存配置可能拒绝大输入;不能把限额视为容量或吞吐承诺。
启动命令仍是既有connector -sources /secure/enterprise/sources.json ...。启用后,NewClient先用合成count做真实隔离自检,验证worker FD执行、clone3及cgroup;成功后才轮询业务任务。每次执行再次建立并核对资源约束,不沿用失效的启动假设。
执行与核对
- 父进程通过企业白名单和
os.OpenRoot固定只读输入inode,拒绝逃逸、FIFO及不合格对象;父子摘要不符时不签署结果。 - Linux把worker复制到sealed memfd并校验摘要,再从固定继承FD执行,避免路径替换或原地写入改变已校验映像。
- 每任务创建专属cgroup并设置/读回CPU、memory、swap、pids及整组OOM参数;子进程出生即进入该组。
- 取消、超时、输出超限、异常退出或清理失败均拒绝成功,不交付部分输出。退出时终止cgroup全部后代,确认
populated 0后移除自己的目录。 - 检查平台任务状态与安全诊断码。失败后先核对任务及租约状态,不为同一未知结果自动造新任务或重复消耗额度。
sum继续使用原有有限float64顺序累加;本次不引入十进制定点金额计算语义。聚合策略、最小分组、结果行数、提供方交付审核与合约约束保持独立有效。
Linux环境验收
在预先批准、允许测试进程创建子cgroup的专属Linux委派环境运行:
DATANOUS_TEST_CGROUP_PARENT=/explicit/private/delegation \
go test ./internal/aggregateprocess \
-run 'TestLinuxExecutablePinnedAndSealed|TestLinuxPhysicalCgroupLimits' \
-count=1 -v
测试包含CPU节流、内存OOM和进程数超限,必须使用可承受这些合成负载的专属环境。检查nr_throttled、oom_kill、pids.events max,并核对正向结果与所有所属cgroup清理。未提供环境时明确跳过,不将交叉编译或模拟transport测试当作内核限制通过。
本轮macOS定向race与实际worker CLI验证、Linux交叉编译已通过;Linux物理限制仍待上述环境。完整源码、配置和失败复测记录见PDT016固定聚合进程隔离开发记录。