OpenWhispr API密钥作用域与安全最佳实践:细粒度控制你的访问权限
【免费下载链接】openwhisprVoice-to-text dictation app with local (Nvidia Parakeet/Whisper) and cloud models (BYOK). Privacy-first and available cross-platform.项目地址: https://gitcode.com/GitHub_Trending/op/openwhispr
OpenWhispr 是一款开源、隐私优先的语音转文字速记应用。当你想用脚本、自动化工具或 AI 助手访问你的笔记与转录记录时,就需要通过API 密钥(API Key)进行认证。本文带你吃透 OpenWhispr API 密钥的作用域(Scope)机制与安全最佳实践:如何勾选最小组合、如何设置过期时间,以及密钥泄露时的应急处理方法,帮你用最少的权限换取最大的安全。
为什么"最小权限"是 API 密钥的第一原则?
API 密钥就像一把万能钥匙——它应该只打开你真正需要的门。OpenWhispr 的每个 API 请求都会根据密钥携带的作用域进行校验:缺少所需权限的请求会被直接拒绝并返回403 Forbidden。这意味着,即使某把密钥意外泄露,它的"破坏半径"也只限于你当初赋予它的权限范围。🔐
先认识:OpenWhispr 的两种密钥类型
| 密钥类型 | 前缀 | 创建位置 | 访问范围 |
|---|---|---|---|
| 个人密钥 | owk_live_ | 设置 → API 密钥 | 你自己的私有笔记、文件夹、转录历史 |
| 团队工作区密钥 | ow_wks_live_ | 设置 → 工作区 → 开发者 | 团队空间(Space)内的共享内容 |
个人密钥永远看不到团队空间内容;工作区密钥则每次操作都通过space_id指向一个团队空间。两者都在创建时只显示一次完整密钥。
8 个作用域权限全解析
在创建密钥的对话框里,你可以像勾选"开关"一样组合权限(定义见 src/constants/apiKeys.ts):
| 作用域 | 能做什么 | 典型场景 |
|---|---|---|
notes:read | 列出、查看、搜索笔记和文件夹 | 只读备份、内容同步 |
notes:write | 创建、更新、删除笔记和文件夹 | 自动化写入会议纪要 |
transcriptions:read | 查看转录历史 | 数据回顾、统计分析 |
transcriptions:write | 通过 API 转录音频 | 批量转写任务 |
dictionary:read/dictionary:write | 查看 / 编辑个人术语词典 | 同步专有名词 |
snippets:read/snippets:write | 查看 / 编辑文本片段 | 管理常用短语库 |
此外,每把密钥都默认附带usage:read(读取用量统计),无需勾选,也不会显示在界面上。
推荐的"最小权限"组合:
- 📥 只读备份脚本:
notes:read+transcriptions:read - 📝 团队知识库同步:
notes:read+notes:write - 🧰 本地自动化全家桶:笔记 + 片段的读写权限
- ⚠️ 原则:不需要的写权限,一个都别勾
三步创建一把"最小权限"密钥
- 打开入口:设置 → API 密钥(每个账号最多5 把密钥,鼓励按用途拆分)
- 填写表单:
- 名称建议"用途 + 日期",如
备份脚本-2026-09,方便日后审计 - 权限:只勾选必要的复选框
- 过期时间:永不过期 / 30 天 / 60 天 / 90 天 / 1 年
- 名称建议"用途 + 日期",如
- 立即复制:完整密钥只显示这一次,关闭对话框后无法再次查看(界面会明确提醒 "Copy this key now. It won't be shown again.")
创建与撤销的完整交互逻辑在 src/components/ApiKeysSection.tsx 中,密钥服务的请求封装见 src/services/ApiKeysService.ts。
保护 API 密钥的 5 条安全最佳实践
最小化作用域:只读任务绝不授予
write权限,让"泄露=事故"变成"泄露=无感"。临时任务用短过期:测试用 30 天密钥,常规集成用 90 天;"永不过期"只留给长期核心密钥。过期后密钥自动失效(API 返回
401 invalid_api_key)。定期审计并吊销闲置密钥:密钥列表中每把密钥都展示前缀(如
owk_live_ab12...)和"上次使用时间"。发现长期未用或来路不明的密钥,直接点击撤销按钮一键吊销。绝不把密钥写进代码和 Git 仓库:用环境变量或密钥管理器保存;接入 AI 助手(如 MCP 服务器)时通过
Authorization请求头传递密钥。放心依赖本地加密存储:OpenWhispr 对设备上的敏感凭据使用系统钥匙串(macOS Keychain / Windows DPAPI / Linux libsecret)+ AES-256-GCM 加密落盘,实现见 src/helpers/secretCrypto.js;整体安全模型与凭据策略记录在 SECURITY.md 中。
密钥泄露了?60 秒应急流程
- 打开 设置 → API 密钥,找到泄露密钥,点击撤销(立即生效,依赖它的集成会马上停止工作)
- 查看该密钥的"上次使用时间",评估是否已被滥用
- 按同样最小的作用域重新创建一把新密钥,替换集成中的旧密钥
作用域之外:限流与错误码速查
限流按密钥独立计算,多个集成各自持有密钥、互不抢占配额(完整规则见 agent-skills/openwhispr-api/SKILL.md):
| 套餐 | 每分钟 | 每天 |
|---|---|---|
| 免费版 | 30 | 1,000 |
| Pro | 120 | 10,000 |
| Business | 300 | 50,000 |
💡 搜索请求消耗 5 倍配额;触发限流时响应头会带
Retry-After提示等待秒数。
遇到报错时先分清两件事:401= 密钥缺失、格式错误、已过期或已吊销;403= 密钥本身有效,但缺少所需作用域——后者只需重新创建并勾选对应权限。
常见问题
- 密钥丢失后还能查看吗?不能。完整密钥仅在创建时显示一次,唯一办法是新建密钥并吊销旧密钥。
- 为什么调用报错 403?密钥缺少所需作用域(例如只勾了
notes:read却尝试创建笔记)。 - 最多能创建多少把密钥?每个账号 5 把,达到上限后界面会隐藏"创建"按钮。
总结
OpenWhispr 的 API 密钥体系把安全决策交还给了你:8 个细粒度作用域、5 把密钥配额、灵活的过期策略和"一次显示"的强制提醒,让"最小权限"从口号变成一次复选框勾选。建议现在就审计一遍你的密钥——只留必要的权限,给每把密钥设个过期日期。
相关资源:
- 作用域与上限定义:src/constants/apiKeys.ts
- 密钥管理界面:src/components/ApiKeysSection.tsx
- 工作区密钥服务:src/services/WorkspaceApiKeysService.ts
- 安全策略与凭据存储说明:SECURITY.md
- 完整 API 参考(端点、分页、错误码):agent-skills/openwhispr-api/SKILL.md
- 本地密钥加密实现:src/helpers/secretCrypto.js
【免费下载链接】openwhisprVoice-to-text dictation app with local (Nvidia Parakeet/Whisper) and cloud models (BYOK). Privacy-first and available cross-platform.项目地址: https://gitcode.com/GitHub_Trending/op/openwhispr
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考