第 1 步,共 8 步
密钥
API 密钥决定项目,以及它代表的成员或服务账号。密钥只以哈希形式存储,并在 30 秒内从内存中直接应答。
应用可能收到的响应
- 401未授权密钥缺失、未知、已停用、已归档或已过期。
- 403禁止访问密钥只有平台访问权限,或其成员缺少 api.request 权限。
- 429触发速率限制同一地址发来了过多使用未知密钥的请求。
网关从 x-api-key 读取密钥,否则从 Authorization: Bearer 读取:
网关如何处理每个请求。
密钥留在网关中,状态存放在您已在运行的数据库里,运维方式与其他服务无异。
密钥留在网关中
服务商密钥绝不会到达您的应用,控制台中的每个操作都对照一项权限进行检查。
您的应用持有的sk-kso-AbC1…wxyz模型调用
一个 Kaeso 密钥,只以哈希形式存储,带有有效期以及模型调用或平台访问权限。
网关持有的OpenAIAnthropicAES-256-GCM
服务商密钥,使用 AES-256-GCM 在您持有的主密钥环下进行信封加密。 使用 kaeso master-key rewrap 轮换主密钥。
- 登录
- 密码加身份验证器应用和恢复码、登录链接,以及通过各组织的 OIDC 提供商进行单点登录
- 权限
- 细粒度权限,内置角色,每个组织最多 50 个自定义角色
- 审计日志
- 覆盖实例、每个组织和每个项目
状态存放在您熟悉的数据库中
网关实例自身不保存任何状态,因此您可以在负载均衡器后添加更多实例。它们共享同一个 PostgreSQL、ClickHouse 和 Valkey。
- PostgreSQL
- 密钥、目录、限额、用量和审计日志
- ClickHouse
- 请求日志和用量汇总
- Valkey
- 速率和预算计数器、共享缓存
像运行任何服务一样运行它
通过 KAESO_* 变量或 TOML 文件进行配置,从文件中读取每个密钥类配置,并用您已有的工具进行监控。
- 指标
- Prometheus 位于端口
9100,Caddy 不会转发该端口;请保持其私有 - 健康检查
- 进程运行时
/healthz正常应答,/readyz报告 PostgreSQL、Valkey 和 ClickHouse 的状态 - 日志
- 结构化 JSON;默认保留请求日志 90 天,内容 30 天
- 流式响应
- 每 15 秒发送一次 keepalive;应用断开时会取消对服务商的调用
一个仓库,一个版本。
网关、控制台、KPP 和 Kaeso UI 一同发布,采用 MIT 许可证。
把它放在您的应用前面。
一个 Compose 文件,包含 Caddy、网关、控制台、PostgreSQL、ClickHouse 和 Valkey,运行在您自己的服务器上。