概述
关于 HTTP 请求头和示例,请参见 /cn/api/rest/authentication。
认证模式
开发模式(默认)
- 不需要 API 密钥
- 所有请求都被接受
- 适用于本地测试和开发
生产模式
- 所有请求都需要 API 密钥
- 无效的密钥返回 401 Unauthorized
- 对每个密钥实施速率限制
API 密钥格式
Shannon 使用带前缀的 API 密钥:创建 API 密钥
通过命令行
通过 API
速率限制
Shannon 使用固定窗口计数器对每个 API 密钥实施速率限制:默认限制
Token 预算和并发任务限制由编排器在工作流层级实施,而非在网关层。
速率限制标头
响应包含当前窗口限制。当返回 429 时,会设置Retry-After:
超过速率限制
当您超过速率限制时:处理速率限制
实施指数退避:多租户
Shannon 支持具有租户隔离的多租户部署:租户 ID
在请求中包含租户 ID:租户隔离
每个租户都有:- 隔离的会话存储
- 通过共享 Qdrant 集合中的负载过滤器(
tenant_id)实现的每租户隔离 - 独立的预算跟踪
- 专用指标
OPA 策略执行
Shannon 使用 Open Policy Agent 进行细粒度访问控制:策略结构
策略模式
在config/shannon.yaml 中配置:
enforce: 拒绝违反策略的请求dry-run: 记录违规但允许请求off: 禁用策略执行
示例: 限制模型
安全最佳实践
1. 定期轮换密钥
2. 使用环境变量
3. 在生产环境中启用 HTTPS
4. 监控 API 密钥使用情况
在 Prometheus 指标中跟踪使用情况:5. 实施 IP 白名单
故障排除
403 Forbidden
403 Forbidden
原因: API 密钥有效但权限不足(OPA 策略)解决方案: 检查 OPA 策略日志:
429 Rate Limited
429 Rate Limited
原因: 超过速率限制解决方案: 实施带指数退避的重试逻辑:
API 密钥不起作用
API 密钥不起作用
原因: 密钥可能已过期或被撤销解决方案: 创建新的测试密钥:
下一步
提交任务
了解如何使用身份验证提交任务
速率限制
理解速率限制和配额
Python SDK
使用 SDK 进行自动身份验证
REST API 参考
完整的 REST API 文档