跳到正文

审计与安全配置

本章讲配置变更的审计记录,以及控制台的安全设置。其中几项没有可视化界面,是设计取舍,本章如实说明。

审计日志

审计日志记录控制台里的配置变更操作(增/删/改),与请求日志(日志与日志体存储,记录每次 API 调用)互补。

重要:审计日志没有控制台界面。它只在后端写入 audit_log 表,控制台没有「审计」页,也没有列出审计的 API。如需查阅,直接查数据库的 audit_log 表。

每条审计记录的字段:

字段说明
actor操作者(控制台用户名,或 secret_key,或 api_key:<名>
actioncreate / update / delete
entity_typeaccess_key / upstream / model / console_user / access_key_group / load_balancer
entity_id受影响实体标识
diff变更差异(update 操作),超长截断
ip_address操作者 IP
request_idz-request-id 头(若有)
created_at

写入是「即发即忘」:审计写入失败不影响主操作,仅告警。MCP 工具调用与 ACL 违规也记录到审计日志。

说明:审计日志定位为运维元数据,不等同完整审计系统。生产级合规审计如需更强保证,建议配合外部日志采集。

IP 封禁

控制台登录防爆破由 IP 封禁自动处理:

  • 连续登录失败达 CONSOLE_MAX_FAILURES(默认 5)→ 自动临时封禁该 IP CONSOLE_BAN_DURATION(默认 300 秒)。
  • 封禁存于内存(重启丢失)与 Redis(多实例持久)。

没有手动封禁/解封的入口。这是有意的:手动 IP 管理属于 WAF(Web 应用防火墙)的职责,网关不做。如需手动 IP 控制,在网关前部署 WAF 或反代。

限流

三层限流:

层级配置默认
每访问密钥RATE_LIMIT_RPM / RATE_LIMIT_WINDOW_SECS禁用;启用后 120 req/min
每 IPIP_RATE_LIMIT_RPM禁用
每上游/每模型rpm / max_concurrency / tpm / min_interval(控制台数据库侧)按需配

只读快照:GET /console/api/rate-limit-status 返回各层当前令牌/并发占用。每密钥限流经环境变量配置,每上游/每模型限流在控制台配置,无独立写 API。

调用方遇限流时会收到 HTTP 429 Too Many Requests,响应体携带 Retry-After(单位秒,表示距下次可用还需等待的时间)。完整错误码字典见 错误码

访问密钥掩码

列表里密钥只显示前后 4 位(如 sk-a***xxxx)。完整值只在「复制」时按需取出(GET /access-keys/{name}/api-key),匿名密钥不支持取完整值。上游的 API key 在控制台永不暴露。

密码策略

  • bcrypt 哈希存储。
  • 新建/重置/改密均要求 ≥8 字符。
  • 禁用控制台用户 → 该用户现有会话立即吊销。

安全响应头

控制台路由统一带:

X-Content-Type-Optionsnosniff
X-Frame-OptionsDENY
Referrer-Policy(策略值)
Content-Security-Policy(策略值)

常见问题

Q:在控制台找不到审计日志页? 没有这页,是设计。直接查 audit_log 表。

Q:怎么手动封禁某个恶意 IP? 做不到,网关不提供手动封禁。IP 封禁是自动的(失败次数触发)。手动 IP 控制用 WAF/反代。

Q:登录被自己锁了怎么办? 等封禁超时(默认 300 秒)自动解。或让管理员调整 CONSOLE_MAX_FAILURES/CONSOLE_BAN_DURATION(需重启容器)。

Q:访问密钥列表的掩码能关掉看完整值吗? 不能,掩码是强制的。要取完整值用该行的「复制」按钮(调接口取一次)。

下一步配置 Header ACL 访问规则 看准入控制;日志与日志体存储 看请求日志;访问密钥与密钥组字段 看密钥管理;环境变量配置参考 看全部环境变量。