全栈应用服务器

  • 全栈应用服务器 > API 文档 > 沙箱概述 > 密钥注入

    密钥注入

    最近更新时间: 2026-10-16 16:28:57

    密钥注入

    密钥注入 API 用于管理平台侧保存的 HTTPS 请求注入规则。创建沙箱时可以通过 injections 引用已保存规则,或直接传入内联规则。真实密钥由平台侧持有,沙箱内进程不会直接读取真实密钥。

    支持的注入类型

    类型必填参数描述
    `http``base_url`自定义 HTTP Header 注入
    `openai``api_key`OpenAI 兼容 API 注入,需自行填写 `base_url`
    `anthropic``api_key`Anthropic API 注入,需自行填写` base_url`
    `qiniu``api_key`七牛 AI API 注入,默认匹配 `api.qnaigc.com`
    `github``token`GitHub HTTPS 请求注入,匹配 `github.com` 和 `api.github.com`

    所有注入类型都支持 base_url 的 host 精确匹配;当 base_url 包含 path 时按规范化路径精确匹配,path 末尾的 * 表示前缀匹配。http、openai、anthropic、gemini、qiniu 和 github 类型还支持 if_headers / if_queries 条件匹配,用于要求请求中已经存在指定 Header 或 query 参数后才注入。

    查询注入规则列表

    描述

    查询当前账号下已保存的注入规则。

    请求路径

    GET /injection-rules
    

    响应字段

    返回注入规则数组:

    字段名称字段类型描述
    `ruleID``string`注入规则 ID
    `name``string`注入规则名称,同一用户下唯一
    `createdAt``string`创建时间
    `updatedAt``string`更新时间
    `injection``object`注入规则配置

    请求示例

    curl -X GET "$QINIU_SANDBOX_API_URL/injection-rules" \
      -H "Authorization: Qiniu <SignedToken>"
    

    SignedToken 由七牛 AK/SK 对请求签名生成。Go SDK 和 qshell 会自动完成签名。

    创建注入规则

    描述

    创建一条可复用的注入规则。

    请求路径

    POST /injection-rules
    

    请求参数

    参数名称参数类型必填描述
    `name``string`是注入规则名称,最长 64 个字符,同一用户下唯一
    `injection``object`是注入规则配置

    http 类型参数:

    参数名称参数类型必填描述
    `injection.type``string`是固定为 `http`
    `injection.base_url``string`是匹配 HTTPS 请求的基础 URL;未指定协议时默认使用 `https`
    `injection.if_headers``object`否请求 Header 匹配条件,最多 20 项;Header 名大小写不敏感
    `injection.if_queries``object`否请求 query 参数匹配条件,最多 20 项;参数名大小写敏感
    `injection.headers``object`否要注入或覆盖的 HTTP Header,最多 20 项

    AI 服务类型参数:

    参数名称参数类型必填描述
    `injection.type``string`是取值为 `openai`、`anthropic`、`gemini` 或 `qiniu`
    `injection.api_key``string`是对应服务的 API Key
    `injection.base_url``string`否自定义基础 URL;不传时使用该类型默认 Host
    `injection.if_headers``object`否请求 Header 匹配条件,最多 20 项
    `injection.if_queries``object`否请求 query 参数匹配条件,最多 20 项

    GitHub 类型参数:

    参数名称参数类型必填描述
    `injection.type``string`是固定为 `github`
    `injection.token``string`是GitHub Token
    `injection.base_url``string`否自定义匹配 URL;不传时匹配 `github.com` 和 `api.github.com`;传入时 host 必须为 `github.com` 或 `api.github.com`
    `injection.if_headers``object`否请求 Header 匹配条件,最多 20 项
    `injection.if_queries``object`否请求 query 参数匹配条件,最多 20 项

    响应字段

    字段同注入规则列表中的单个规则对象。

    请求示例

    curl -X POST "$QINIU_SANDBOX_API_URL/injection-rules" \
      -H "Authorization: Qiniu <SignedToken>" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "openai-prod",
        "injection": {
          "type": "openai",
          "api_key": "sk-xxx"
        }
      }'
    

    创建带条件匹配的 HTTP 注入规则:

    curl -X POST "$QINIU_SANDBOX_API_URL/injection-rules" \
      -H "Authorization: Qiniu <SignedToken>" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "internal-api-prod",
        "injection": {
          "type": "http",
          "base_url": "https://api.example.com/v1/*",
          "if_headers": {
            "X-Scope": "prod"
          },
          "if_queries": {
            "inject": "true"
          },
          "headers": {
            "Authorization": "Bearer secret-token"
          }
        }
      }'
    

    创建 GitHub 凭证注入规则:

    curl -X POST "$QINIU_SANDBOX_API_URL/injection-rules" \
      -H "Authorization: Qiniu <SignedToken>" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "github-api",
        "injection": {
          "type": "github",
          "base_url": "https://api.github.com/repos/qiniu/*",
          "token": "ghp_xxx"
        }
      }'
    

    响应示例

    {
      "ruleID": "ir_123456",
      "name": "openai-prod",
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z",
      "injection": {
        "type": "openai"
      }
    }
    

    获取注入规则详情

    请求路径

    GET /injection-rules/{ruleID}
    

    路径参数

    参数名称参数类型必填描述
    `ruleID``string`是注入规则 ID

    成功时返回单个注入规则对象。

    更新注入规则

    请求路径

    PUT /injection-rules/{ruleID}
    

    请求参数

    参数名称参数类型必填描述
    `name``string`否新的注入规则名称,最长 64 个字符
    `injection``object`否新的注入规则配置

    成功时返回更新后的注入规则对象。

    删除注入规则

    请求路径

    DELETE /injection-rules/{ruleID}
    

    成功时返回 204 No Content。

    在创建沙箱时引用规则

    已保存的注入规则可以在创建沙箱时通过 type: id 引用:

    curl -X POST "$QINIU_SANDBOX_API_URL/sandboxes" \
      -H "X-API-Key: $QINIU_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "templateID": "base",
        "injections": [
          {
            "type": "id",
            "id": "ir_123456"
          }
        ]
      }'
    

    在创建沙箱时使用内联注入

    创建沙箱时也可以直接传入内联注入配置,字段结构与保存的 injection 相同;引用已有规则时使用 type: id。

    curl -X POST "$QINIU_SANDBOX_API_URL/sandboxes" \
      -H "X-API-Key: $QINIU_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "templateID": "base",
        "injections": [
          {
            "type": "openai",
            "api_key": "sk-xxx"
          },
          {
            "type": "github",
            "base_url": "https://api.github.com/repos/qiniu/*",
            "token": "ghp_xxx"
          }
        ]
      }'
    

    相关文档

    以上内容是否对您有帮助?