API Key 安全管理与用量计费 — 防止泄露、控制成本、监控用量
API Key 安全的重要性
一个百炼 API Key 的价值取决于你的余额。如果 Key 泄露:
- 攻击者可以用你的账号无限调用模型
- qwen3-max 的单价较高,一天可以刷出几千甚至上万的费用
- 阿里云的 API 调用不计入免费额度
必须认真对待 API Key 安全。
环境变量管理(推荐做法)
Linux / macOS
# 临时(当前终端有效)
export DASHSCOPE_API_KEY="sk-xxxxxxxxxxxxx"
# 永久(写入 ~/.bashrc 或 ~/.zshrc)
echo 'export DASHSCOPE_API_KEY="sk-xxxxxxxxxxxxx"' >> ~/.zshrc
source ~/.zshrc
Windows PowerShell
# 临时(当前会话有效)
$env:DASHSCOPE_API_KEY = "sk-xxxxxxxxxxxxx"
# 永久(写入用户环境变量)
[System.Environment]::SetEnvironmentVariable("DASHSCOPE_API_KEY", "sk-xxxxxxxxxxxxx", "User")
Python 中读取
import os
api_key = os.getenv("DASHSCOPE_API_KEY")
if not api_key:
raise ValueError("DASHSCOPE_API_KEY 环境变量未设置")
.env 文件(本地开发)
用 python-dotenv 管理:
pip install python-dotenv
创建 .env 文件:
DASHSCOPE_API_KEY=sk-xxxxxxxxxxxxx
在 .gitignore 中添加 .env,防止提交到仓库。
from dotenv import load_dotenv
load_dotenv() # 自动加载 .env 文件
import os
api_key = os.getenv("DASHSCOPE_API_KEY")
不要做的事
- ❶ 不要硬编码在源代码里
- ❷ 不要提交到 Git 仓库
- ❸ 不要写在浏览器前端代码中
- ❹ 不要分享到聊天、论坛、Issue
用量监控
百炼控制台
百炼控制台提供实时用量统计:
- 百炼控制台 → 用量统计
- 可以按天/周/月查看 token 消耗
- 可以按模型维度拆分
阿里云费用中心
更详细的账单在阿里云费用中心:
- 阿里云控制台 → 费用中心 → 消费记录
- 可以查看详细的计费项
- 可以按时间、产品、实例筛选
设置费用告警(重要)
强烈建议设置费用阈值告警:
- 阿里云费用中心 → 预算管理 → 创建预算
- 设置月度预算金额(如 100 元)
- 设置告警阈值(如达到 80% 时告警)
- 选择告警通知方式(短信、邮件)
这样即使 Key 泄露,你也能在达到一定费用后及时收到通知。
API 限流
百炼的默认限流
百炼对每个账号有默认的限流策略:
- QPS(每秒请求数):免费/低配额账号较低,付费账号更高
- RPM(每分钟请求数):同上
- 单次请求最大 token:各模型有上限
查询当前限流
在百炼控制台可以看到你的账号级限流配置。如果限流不够用,可以申请提升配额。
客户端限流(防止意外爆量)
用 Python 的 limits 库做客户端限流:
pip install limits
from limits import RateLimiter, storage, strategies
from limits.storage import MemoryStorage
from limits.strategies import FixedWindowRateLimiter
# 每分钟 60 次请求
storage = MemoryStorage()
limiter = FixedWindowRateLimiter(storage)
rate_limit = RateLimiter("60/minute", limiter)
def call_qwen3():
if not rate_limit.hit("qwen3-call"):
raise Exception("超过限流")
# 实际调用
Key 轮换
如果怀疑 Key 泄露,立即轮换:
- 百炼控制台 → API-KEY 管理
- 找到旧 Key,点击「停用」
- 创建新 Key
- 更新你的环境变量/配置
- 部署新 Key(如果有服务在运行)
建议定期(如 1-3 个月)轮换 Key,作为安全最佳实践。
生产环境建议
后端代理
不要让前端直接调百炼 API,而是通过你的后端代理:
用户 → 你的后端 → 百炼 API
好处:
- API Key 只存在于你的服务器上
- 可以在后端做额外的限流和日志
- 可以做用户鉴权(防止别人滥用你的 Key)
VPC 私有网络
企业用户可以把百炼接入到阿里云 VPC 私有网络:
- 通过专有 VPC Endpoint 访问百炼
- 流量不经过公网
- 更安全、更稳定
最小权限原则
- 只用需要的模型权限(文本/多模态)
- 如果只在国内用,不要开通海外服务
- 定期审查 API Key 的使用情况
日志审计
记录每次 API 调用的关键信息:
import time
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("qwen3-api")
def call_with_logging(prompt, model="qwen3-flash"):
start = time.time()
response = Generation.call(model=model, messages=messages)
elapsed = time.time() - start
logger.info(f"model={model}, prompt_len={len(prompt)}, "
f"elapsed={elapsed:.2f}s, status={response.status_code}")
return response
免费额度与优惠
新注册的阿里云用户通常有一定额度的免费百炼调用:
- 登录百炼控制台查看是否有赠送额度
- 注意:免费额度可能有时间限制
- 即使有免费额度,也建议设置费用告警
多 Key 管理
如果有多个应用/服务需要独立的 API Key:
- 每个应用用独立的 Key
- 一个 Key 只给一个用途
- 停用一个 Key 不影响其他
这样如果某个 Key 泄露,可以只停用那一个,不影响其他服务。
常见问题
Key 忘了复制
百炼的 API Key 只显示一次。忘了就只能新建一个。
Key 被滥用发现了
- 立即在控制台停用泄露的 Key
- 检查费用账单确认损失
- 轮换 Key
- 设置费用告警防止下次
费用突然暴涨
- 检查百炼用量统计,确认是哪个模型
- 检查是否有 Key 泄露(看调用来源 IP)
- 暂时停用 API Key 止损
- 排查代码是否有死循环/批量请求失控
相关阅读
- 01-阿里云百炼控制台:获取 API Key 的完整流程
- 02-DashScope Python SDK:正式的 SDK 调用
- 03-OpenAI 兼容接口:兼容 OpenAI 生态