调用方 API Key
调用方 API Key 用于标识向 AISIX 代理 API 发送请求的应用。AISIX 可以使用每把 Key 限制模型访问,并应用调用方专属的流量控制。这些 Key 不授予运维人员访问权限。AISIX Enterprise 和 AISIX Cloud 运维人员通过已登录的控制台会话管理资源,或使用 Admin Token 调用 AISIX Cloud Admin API。开源 AISIX 网关的运维人员则通过资源文件或 etcd 配置网关。
本指南将介绍如何创建调用方 API Key、授予它一个或多个模型别名的访问权限,并管理其生命周期。应用会向 AISIX 发送明文调用方 API Key,而 AISIX 只在 API Key 资源中保存其 SHA-256 哈希。
本指南适用于提交明文 Key 的应用。如需让应用提交来自外部身份提供商的短期凭证,请改为配置 JWT 身份认证。AISIX 会把验证后的 JWT 身份映射到调用方 API Key,因此仍会应用该 Key 的访问控制和流量控制。在 AISIX Enterprise 和 AISIX Cloud 中,匹配的预算也会生效。
示例涵盖 AISIX Enterprise 和 AISIX Cloud 使用 AISIX Cloud Admin API 的路径,以及 AISIX OSS 使用资源文件的路径。API 可以生成明文值,而开源 AISIX 网关会从环境变量派生哈希,或接受资源文件中预先计算的哈希。
准备工作
请先准备以下内容:
- 调用方应被允许使用的模型别名。如果尚未创建,请先配置服务提供方密钥和模型别名。
- 对于 AISIX Enterprise 或 AISIX Cloud,需要环境访问权限和具备写入权限的 Admin Token。对于 AISIX Enterprise,请按照 AISIX Enterprise 快速入门操作。如需申请 AISIX Cloud 访问权限,请联系 API7。
- 对于开源 AISIX 网关,需要包含该模型别名的声明式资源文件。
创建调用方 API Key
根据部署的管理路径配置调用方凭证。
AISIX Enterprise 或 AISIX Cloud
导出控制面连接信息,以及调用方可使用的模型 ID:
# AISIX_CP 是 Admin API 基础 URL;应包含 /api,且不含尾部斜杠
# 本地 AISIX Enterprise 快速入门使用 http://localhost:8080/api
export AISIX_CP="YOUR_AISIX_CONTROL_PLANE_API_URL"
export AISIX_TOKEN="YOUR_ADMIN_TOKEN"
export ENV_ID="YOUR_ENVIRONMENT_ID"
export MODEL_ID="YOUR_MODEL_ID"
MODEL_ID 是创建模型别名时返回的 id,不是别名。
使用允许的模型创建 API Key 资源。AISIX Cloud Admin API 会生成明文密钥,并且只在创建响应中返回一次:
RESPONSE=$(curl -sS -X POST "$AISIX_CP/environments/$ENV_ID/api_keys" \
-H "Authorization: Bearer $AISIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "chat-app",
"allowed_models": ["'"$MODEL_ID"'"]
}')
export API_KEY_ID=$(echo "$RESPONSE" | jq -r '.api_key.id')
export AISIX_API_KEY=$(echo "$RESPONSE" | jq -r '.plaintext')
echo "$RESPONSE" | jq
你应该会看到类似下面的响应:
{
"api_key": {
"id": "f1ad9f8a-75d0-46ae-9d8d-0cfe8d1d8387",
"env_id": "9be9891a-6a53-4bd8-a897-a03fe38a1ca5",
"display_name": "chat-app",
"allowed_models": [
"6a3f2c1d-8f4e-49b2-b6f1-3f6f24d0f9a2"
],
"disabled": false,
"status": "active",
"created_at": "2026-06-24T12:18:39Z",
"updated_at": "2026-06-24T12:18:39Z"
},
"plaintext": "sk-***"
}
高亮的 id 用于以后更新、轮换或删除该密钥。高亮的 plaintext 是调用方凭证。它只在此响应中返回且以后无法恢复,因此请安全保存,并立即使用它配置应用。该密钥会自动投射到已关联的网关。
开源 AISIX 网关
选择明文调用方凭证,并使其可用于网关进程:
export CALLER_API_KEY="YOUR_CALLER_API_KEY"
向 api_keys 集合添加条目。key_env 值是环境变量的名称,不是凭证本身:
api_keys:
- display_name: chat-app
key_env: CALLER_API_KEY
allowed_models:
- gpt-4o-prod
网关通过模型的 display_name 解析 allowed_models,并将环境变量值的 SHA-256 哈希存储在活动资源中。应用前请验证完整的资源文件。如果 CALLER_API_KEY 已可用于运行中的网关进程,请发送 SIGHUP 重新加载文件。如果现在才引入该变量,请使用该变量重启或重新创建网关,以便进程能够解析它。
控制模型访问
模型允许列表是调用方 API Key 的授权边界。请选择与该 API Key 用法匹配的最小范围。
| 访问模式 | AISIX Enterprise 或 AISIX Cloud | 开源 AISIX 网关 | 适用场景 |
|---|---|---|---|
| 指定模型 | 列出同一环境中的模型资源 ID,例如 ["$MODEL_ID"]。 | 列出同一资源文件中的模型别名,例如 ["gpt-4o-prod"]。也支持单个 * 的 Glob 模式。 | 应用只应调用已批准的模型别名。 |
| 不授予模型访问权限 | 使用 []。 | 使用 []。 | 需要先创建密钥,之后再授予模型访问权限。 |
模型列表端点也使用同一个允许列表。它会返回调用方 API Key 可访问的所有具体直接或虚拟别名,包括路由、语义和合议别名。通配符别名是模式而非具体模型名称,因此不会返回。