跳转到主要内容

概述

关于 HTTP 请求头和示例,请参见 /cn/api/rest/authentication
Shannon 支持 API 密钥认证以保护对编排平台的访问。为了方便本地开发,身份验证默认禁用,可在生产部署时启用。

认证模式

开发模式(默认)

在开发模式下:
  • 不需要 API 密钥
  • 所有请求都被接受
  • 适用于本地测试和开发

生产模式

在生产模式下:
  • 所有请求都需要 API 密钥
  • 无效的密钥返回 401 Unauthorized
  • 对每个密钥实施速率限制

API 密钥格式

Shannon 使用带前缀的 API 密钥:
切勿将 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 白名单

故障排除

原因: 缺少或无效的 API 密钥解决方案:
原因: API 密钥有效但权限不足(OPA 策略)解决方案: 检查 OPA 策略日志:
原因: 超过速率限制解决方案: 实施带指数退避的重试逻辑:
原因: 密钥可能已过期或被撤销解决方案: 创建新的测试密钥:

下一步

提交任务

了解如何使用身份验证提交任务

速率限制

理解速率限制和配额

Python SDK

使用 SDK 进行自动身份验证

REST API 参考

完整的 REST API 文档