本文说明 Beacon 的安全边界与约定。管理面鉴权已前移本批(见 ADR-0009);配置加密仍属后期(FR-20)。本期数据面为内网部署模型。
- admin / 管理台:需登录鉴权——单操作者凭据登录换无状态签名令牌,
/admin/v1/*(登录端点除外)须带Authorization: Bearer <token>,缺/错/过期返回 401;写操作 operator 以认证身份为准入审计。仍建议不要把 admin 端口暴露到公网。 - 脚本化 admin API token / API 密钥(FR-42 见 ADR-0026,FR-90 见 ADR-0042):供外部服务 / 脚本调
/admin/v1的运行时密钥,认证头X-Beacon-Api-Key: <bk_...>或Authorization: Bearer <bk_...>。库内只存 SHA-256 哈希、绝不存明文,明文仅创建 / 重置时一次性返回、不可二次读取(丢失只能重置轮换)。可吊销(软删即时失效)、可到期(expiresAt,过期即 401)、full/readonly两级角色(readonly 写端点一律 403,最小权限)。创建 / 吊销 / 重置写audit_log(明文 / 哈希绝不入 detail)。它与 agent 的X-Beacon-Token是不同物——后者仅防误连。管理台「复制为 curl」辅助仅在浏览器内拼接命令,token 不落库 / 不入日志。 - agent ↔ 控制面:共享
X-Beacon-Token(请求头X-Beacon-Token),仅用于防误连,不是安全边界;缺失返回 401。 - 配置加密(敏感配置值落库加密)在 FR-20 引入。
- DB 密码、
BEACON_BOOTSTRAP_TOKEN、管理台口令BEACON_ADMIN_PASSWORD与令牌签名密钥BEACON_AUTH_SECRET等走环境变量;仓库只放.env.example占位,.env已被.gitignore排除。 - 禁止在代码 / 注释 / 日志 / 提交信息中硬编码任何凭据(见
.claude/rules/与全局安全准则)。 - 日志不输出密码 / token / 完整凭据。
- 配置内容由 Beacon 文本透传(不解析业务语义),但发布时做结构化 parse 校验,拒绝坏 yaml/json,避免坏配置推爆全网。
- agent 上报字段在使用前做基本校验(身份非空、序列化安全)。
本项目为内部项目,不对外接收漏洞报告。发现安全问题请在内部 issue 跟踪,或直接联系项目负责人处理。