Skip to content

API 参考 ​

控制面的全部能力通过 REST API 暴露。WebUI、CLI 与第三方自动化都是同一 API 的客户端,不绕过控制面直接操作 Agent 或数据面。

完整端点、请求字段、响应结构与可执行 curl 示例以仓库中的双语文档为准:

  • 中文:api/control-plane-api.zh-CN.md
  • English:api/control-plane-api.en.md

入口 ​

项值
Base URLhttps://<host>/api/cp
外部入口nginx 443;80 只做 301 跳转
内部通信nginx 经共享卷 unix socket 转发,控制面不监听管理 TCP 端口
证书TOFU 自签;可用 --cacert control_plane/state/certs/server.crt 固定,或 -k 跳过校验
OpenAPI默认关闭;本地需要时设 KURRENT_CP_OPENAPI=1

认证 ​

除 /healthz 与引导链端点外,管理端点要求认证。三种凭据按顺序尝试,首个成功即短路;无效凭据返回 401,不再继续尝试。

凭据载体说明
mTLS 客户端证书443 双向 TLS初始化签发的管理员证书;nginx 校验链并注入身份头
管理 tokenAuthorization: Bearer <token>kurrent token create --usage admin 签发;只存摘要
会话 Cookie__Host-kurrent_session用证书或 token 调 POST /session 换取;身份来自服务端会话台账

主体类:

类来源能力
humanusers CA 签发的人员证书管理与查询
componentnodes CA 签发的 agent / nvmet-host 证书enroll / renew 与组件端点
automation管理 token按 scope 收窄
anonymous无凭据仅引导链与健康检查

授权规则:

  • 读请求(GET)只要求认证;
  • 写请求(POST / PUT / PATCH / DELETE)要求 admin 组;
  • 跨主体类默认拒绝,返回 403;
  • 自动化 token 的 enroll scope 只能签发 bootstrap token,不能读台账,也不能换会话;
  • Cookie 认证的写请求要求 Origin 与 Host 匹配;
  • 引导链端点匿名,但受绑定关系、设备验签与来源 IP 限速约束。

端点分组 ​

分组代表端点用途
健康与声明GET /healthz、GET /config进程存活、启动派生自检、生效声明与 configHash
引导链GET /boot-assets、GET /boot-vars、GET /devices/report、GET /devices/challenge、POST /devices/rotate固件引导变量、设备上报、挑战应答、密钥轮换
管理身份POST/DELETE /session、GET /sessions、GET /whoami会话登录、登出、台账与当前身份
设备GET /devices、POST /devices、DELETE /devices/{mac}、POST/DELETE /devices/{mac}/bind设备池、登记、吊销、绑定与解绑
WorkerPOST /workers、GET /workers、GET /workers/{id}/status、DELETE /workers/{id}Worker 台账、状态、批量删除
系统盘POST /workers/{id}/luns/disk、POST /workers/luns/disk/batch、DELETE /workers/{id}/luns/disk/{os_tag}、PUT /workers/{id}/default-disk建盘、批量建盘、删盘、默认启动盘
凭据GET/PUT/DELETE /workers/{id}/credentialNVMe-oF 认证密钥查看、轮换、吊销
AgentGET /agents、POST /agents、POST /agents/probe、PUT /agents/{id}、DELETE /agents/{id}存储节点台账与探测
LUN 与母盘GET /agents/{id}/luns、GET /masters、POST /agents/{id}/luns/disk、PUT /agents/{id}/masters/{name}/tag母盘标签、LUN 创建与删除
PKIPOST /pki/tokens、GET /pki/tokens、GET /pki/users、GET /pki/components、GET /pki/control、GET /enroll/crltoken、证书台账、CRL 分发
设置GET/POST/DELETE /settings/registration-window、GET/PUT /settings/enforcement注册窗口与验签强制开关
运维GET /operations操作审计日志

完整参数与响应字段见仓库 API 文档。

错误语义 ​

状态码含义
400请求参数或业务校验失败
401缺少凭据、凭据无效或 token 已失效
403主体类或权限不足;跨类访问
404对象不存在
409状态冲突:已存在、已绑定、节点排空等
429触发限速,响应带 Retry-After
503审计写入失败、Agent 不可达或启动派生自检失败

响应体通常为 {"detail": "..."}。每个响应带 X-Request-Id;审计记录包含同一 request_id。

审计是 fail-closed 的:请求的审计事件写入失败时,请求本身返回 503。审计不记录密钥、token 明文、私钥或 PSK。

限速按来源 IP 的滑动窗口执行:

端点默认阈值
/boot-vars240 次/分钟
/devices/report120 次/分钟
/devices/challenge120 次/分钟
/devices/rotate10 次/分钟

阈值可由 KURRENT_CP_RATE_LIMIT_* 环境变量调整,<= 0 关闭。限速用于抑制扫描,不是身份边界。

引导链端点 ​

端点认证关键约束
/boot-vars匿名绑定校验 + 可选设备验签;未验签不下发密钥;无默认盘返回 reboot
/devices/report匿名注册只在窗口期、额度内且带有效公钥;吊销设备不复活
/devices/challenge匿名未登记、未认领或已吊销返回 404;nonce 一次性、绑定 MAC
/devices/rotate匿名旧密钥签名 rotate‖mac‖new_pubkey‖nonce;nonce 一次性

字段级契约见固件契约。

状态与配置文件 ​

文件含义
config/agents.ymlAgent 台账与调度角色
state/devices.yml设备台账;绑定权威
state/workers.ymlWorker 台账与系统盘
state/credentials.ymlNVMe-oF 密钥库
state/credential-push.yml凭据推送状态
state/masters.yml母盘标签
state/settings.json运行时设置
state/users.yml管理面用户与组
state/sessions.yml服务端会话台账
state/audit.jsonl认证、授权、凭据审计与告警
state/pki/三套根 CA、签发台账与 CRL
state/operations.jsonl操作审计
dnsmasq/dhcp-hosts.confMAC → hostname 投影;设备台账才是权威

dhcp-hosts.conf 原地截断写入以保持 inode;它只是绑定操作的派生投影,不参与启动身份识别。

相关页面 ​