最近更新时间: 2026-09-04 17:30:24
密钥注入用于在沙箱内访问外部服务时自动注入真实密钥,避免把 API Key 明文写入沙箱环境、代码或镜像中。qshell sandbox injection-rule 可以创建、查看、更新、删除注入规则,也可以在创建沙箱时引用规则或传入内联注入配置。以下示例基于 qshell v2.19.9+,该版本支持 GitHub 凭证注入和请求匹配条件。
qshell sandbox injection-rule <子命令>
qshell sbx ir <子命令>常用子命令:
| 命令 | 说明 |
|---|---|
injection-rule list | 列出注入规则 |
injection-rule get | 查看注入规则详情 |
injection-rule create | 创建注入规则 |
injection-rule update | 更新注入规则 |
injection-rule delete | 删除注入规则 |
| 类型 | 常用参数 | 说明 |
|---|---|---|
openai | --api-key, --base-url | OpenAI API 请求注入 |
anthropic | --api-key, --base-url | Anthropic API 请求注入 |
gemini | --api-key, --base-url | Gemini API 请求注入 |
qiniu | --api-key, --base-url | 七牛 AI API 请求注入 |
github | --api-key, --base-url | GitHub 凭证注入,--api-key 传入 GitHub Token |
http | --base-url, --headers | 自定义 HTTP 服务请求头注入 |
所有类型都可以通过 --if-headers 和 --if-queries 设置匹配条件。只有请求中已经存在这些 Header 或 query 参数且值精确匹配时,平台才会注入密钥。条件只用于缩小匹配范围,不是授权边界。
创建 OpenAI 注入规则:
qshell sandbox injection-rule create \
--name openai-default \
--type openai \
--api-key sk-xxx创建带代理地址的 OpenAI 注入规则:
qshell sandbox injection-rule create \
--name openai-proxy \
--type openai \
--api-key sk-xxx \
--base-url https://openai-proxy.example.com创建 Anthropic 注入规则:
qshell sandbox injection-rule create \
--name anthropic-default \
--type anthropic \
--api-key sk-ant-xxx创建 Gemini 注入规则:
qshell sandbox injection-rule create \
--name gemini-default \
--type gemini \
--api-key sk-gemini-xxx创建七牛 AI API 注入规则:
qshell sandbox injection-rule create \
--name qiniu-ai \
--type qiniu \
--api-key sk-qiniu-xxx创建 GitHub 凭证注入规则:
qshell sandbox injection-rule create \
--name github-default \
--type github \
--api-key ghp-xxx创建仅匹配 GitHub API 仓库路径的 GitHub 凭证注入规则:
qshell sandbox injection-rule create \
--name github-api \
--type github \
--api-key ghp-xxx \
--base-url https://api.github.com/repos/qiniu/*创建自定义 HTTP 注入规则:
qshell sandbox injection-rule create \
--name api-auth \
--type http \
--base-url https://api.example.com \
--headers "Authorization=Bearer token,X-Env=dev"创建带匹配条件的自定义 HTTP 注入规则:
qshell sandbox injection-rule create \
--name api-auth-scoped \
--type http \
--base-url https://api.example.com \
--headers "Authorization=Bearer token" \
--if-headers "X-Scope=prod" \
--if-queries "inject=true"--headers、--if-headers 和 --if-queries 使用逗号分隔多个 key=value。如果 value 本身包含 shell 特殊字符,建议用引号包裹整个参数。
列出规则:
qshell sandbox injection-rule listJSON 输出:
qshell sandbox injection-rule list --format json查看单条规则:
qshell sandbox injection-rule get <rule-id>创建沙箱时通过 --injection-rule 引用已有规则:
qshell sandbox create <template-id> --injection-rule <rule-id>引用多个规则:
qshell sandbox create <template-id> \
--injection-rule <openai-rule-id> \
--injection-rule <http-rule-id>后台创建:
qshell sandbox create <template-id> \
--detach \
--timeout 300 \
--injection-rule <rule-id>如果不希望提前创建规则,可以在创建沙箱时直接使用 --inline-injection:
qshell sandbox create <template-id> \
--inline-injection 'type=openai,api-key=sk-xxx'内联 Anthropic:
qshell sandbox create <template-id> \
--inline-injection 'type=anthropic,api-key=sk-ant-xxx,base-url=https://anthropic-proxy.example.com'内联自定义 HTTP:
qshell sandbox create <template-id> \
--inline-injection 'type=http,base-url=https://api.example.com,headers=Authorization=Bearer token;X-Env=dev'内联带条件匹配的 HTTP 注入:
qshell sandbox create <template-id> \
--inline-injection 'type=http,base-url=https://api.example.com,headers=Authorization=Bearer token,if-headers=X-Scope=prod,if-queries=inject=true'内联 GitHub 凭证注入:
qshell sandbox create <template-id> \
--inline-injection 'type=github,api-key=ghp-xxx,base-url=https://api.github.com/repos/qiniu/*'同时传入多个内联注入:
qshell sandbox create <template-id> \
--inline-injection 'type=openai,api-key=sk-xxx' \
--inline-injection 'type=http,base-url=https://api.example.com,headers=Authorization=Bearer token'内联注入适合临时调试。生产或多人协作场景建议使用持久注入规则,便于审计和复用。
更新规则名称:
qshell sandbox injection-rule update <rule-id> --name openai-prod更新 OpenAI 密钥:
qshell sandbox injection-rule update <rule-id> \
--type openai \
--api-key sk-new更新 GitHub 凭证注入:
qshell sandbox injection-rule update <rule-id> \
--type github \
--api-key ghp-new \
--base-url https://api.github.com/repos/qiniu/*更新自定义 HTTP header:
qshell sandbox injection-rule update <rule-id> \
--type http \
--base-url https://api.example.com \
--headers "Authorization=Bearer new-token"更新自定义 HTTP 匹配条件:
qshell sandbox injection-rule update <rule-id> \
--type http \
--base-url https://api.example.com \
--headers "Authorization=Bearer new-token" \
--if-headers "X-Scope=prod" \
--if-queries "inject=true"更新注入配置时需要同时指定 --type,以明确更新哪种类型的注入规则。
删除单条规则:
qshell sandbox injection-rule delete <rule-id>跳过确认:
qshell sandbox injection-rule delete <rule-id> -y删除多条规则:
qshell sandbox injection-rule delete rule-aaa rule-bbb -y交互式选择删除:
qshell sandbox injection-rule delete --select--inline-injection。headers 建议只放认证相关 header。--base-url 只能使用 github.com 或 api.github.com;如已通过 --resource type=github_repository 挂载仓库资源,不要再额外传入 type=github 注入。这篇文档有帮助吗?
正在加载反馈服务…