AI-Employe 安全实践指南:Firebase 私钥、OpenAI API Key 与用户数据如何安全管理

📅 2026/8/22 14:57:37
AI-Employe 安全实践指南:Firebase 私钥、OpenAI API Key 与用户数据如何安全管理
AI-Employe 安全实践指南Firebase 私钥、OpenAI API Key 与用户数据如何安全管理【免费下载链接】AI-EmployeCreate browser automation as if you were teaching a human using GPT-4 Vision.项目地址: https://gitcode.com/gh_mirrors/ai/AI-EmployeAI-Employe是一个用 GPT-4 Vision 像教人类一样 操控浏览器的开源自动化工具技术栈包含 Next.js、Rust、Postgres、MeiliSearch 与 Firebase Auth。正因为涉及Firebase 私钥、OpenAI API Key 与用户数据这三类敏感资产本文面向新手整理了一份完整的安全管理指南帮你从零理解它哪些密钥放哪里、谁能访问、如何防泄露。一、AI-Employe 的三类敏感资产先搞清楚你要保护什么在动手配置之前先建立一张安全地图。AI-Employe 中真正需要保护的只有三类东西资产类型作用泄露后果Firebase 私钥Service Account服务端校验用户登录身份ID Token攻击者可伪造/验证任意用户接管账户体系OpenAI API Key调用 GPT-4 Vision 生成操作指令直接产生高额账单损失用户数据Postgres工作流、操作步骤、执行记录用户浏览行为与自动化任务暴露理解这三者的边界后面所有配置逻辑就清晰了私钥只在服务端API Key 只在后端用户数据只在受控数据库。二、Firebase 私钥管理开发/生产分离 仅服务端持有1. 为什么私钥绝对不能出现在前端AI-Employe 把密钥按持有者严格分层前端/浏览器插件只持有公开配置apiKey、authDomain等这类凭证设计上就是可公开的仅用于发起登录和携带身份私钥private_key只存在于服务端用于验证前端上传回来的 ID Token 是否合法。这个分层可以从代码中直接验证浏览器端初始化client/extension/src/lib/firebaseClient/index.ts 只读取NEXT_PUBLIC_API_KEY等公开变量服务端私钥初始化client/web/firebaseAdmin/index.ts 通过admin.credential.cert()加载私钥 JSON并且根据NODE_ENV自动切换开发/生产密钥。2. 开发密钥与生产密钥分开放项目约定了存放路径仓库只提供空模板cert_sample真实密钥需自己生成开发环境firebaseAdmin/cert/dev.json生产环境firebaseAdmin/cert/prod.json为什么模板是 dev_sample.json / prod_sample.json 而仓库里是空的这正是最佳实践样例占位、真实密钥不入库。新手操作建议在 Firebase 控制台进入Project settings → Service accounts → Generate new private key开发机生成一份存dev.json生产机生成另一份存prod.json——两套密钥互相独立开发机丢失密钥不影响生产将cert/目录加入.gitignore只提交cert_sample模板。3. 身份如何被验证而非信任拿到 ID Token 后服务端不会直接相信它而是走两道校验verifyToken.ts解析Authorization头中的 Bearer Token调用auth.verifyIdToken()验证签名与有效期失败返回nullwithProtectApi.ts统一 API 守卫——无 Token 返回 401、Token 无效返回 401、缺少邮箱或用户不存在同样拒绝只有全部通过才放行到业务逻辑。这套中间件式保护意味着每一个受保护的 API 都强制经过同一把锁新增接口时只要包一层withProtectApi即可避免漏保护的人为失误。三、OpenAI API Key 管理环境变量注入 客户端可自带 Key1. 统一从环境变量读取绝不硬编码Rust 后端通过 .env.sample 定义的模板管理所有机密启动时由 load_env.rs 按RUST_ENV动态加载.env.development或.env.production再由 config.rs 集中初始化OPEN_AI_API_KEY # OpenAI 服务密钥 MEILISEARCH_API_KEY # 搜索引擎密钥 DATABASE_URL # 数据库连接串 FIREBASE_APP_ID # Firebase 应用 ID注意config.rs中的写法是env::var(OPEN_AI_API_KEY).expect(...)——缺少环境变量时服务直接拒绝启动这比运行时才报 401更安全属于典型的 fail-fast 设计。2. 密钥只进入服务端不出现在浏览器调用 GPT-4 Vision 的逻辑全部位于 Rust 后端server/src/common/gpt/action.rs 与 server/src/common/gpt/tasks.rs前端与插件只与自家后端通信永远接触不到 OpenAI Key。这意味着即使有人抓包分析浏览器流量也看不到任何模型调用凭证。3. 灵活设计用户可自带 Key查看 types.rs 可以发现请求体中带有openai_api_key: OptionString字段execute.rs 会在缺省时回退到服务端默认密钥。这种BYOKBring Your Own Key设计降低了个人用户的使用门槛同时官方 SaaS 部署时只需配置一份全局密钥。新手建议本地开发使用低额度 Key并设置用量告警生产环境按业务线拆分 Key泄露时可单点吊销而不影响全局定期在 OpenAI 控制台轮换Revoke Regenerate。四、用户数据安全最小化字段 服务端隔离1. 数据库里存了什么查看 Prisma 数据模型 schema.prisma核心表包括User仅id、email、name——不存密码密码体系完全交给 FirebaseWorkflow / Task用户定义的工作流与 AI 生成的任务RecordedActionByUser用户操作时记录的 DOM 元素变化url、action等Stats / Plan使用量统计与订阅方案。值得注意的是RecordedActionByUser记录了用户访问过的 URL——这类数据敏感度较高因此必须保证数据库仅通过DATABASE_URL连接串访问且该变量仅存在于服务端.env所有读操作都经过withProtectApi校验用户只能看到自己的数据按userId关联查询。2. 连接与迁移的规范流程连接串由 Prisma 通过env(DATABASE_URL)读取见 schema 顶部 datasource 配置建表迁移文件位于 client/web/prisma/migrations/执行npm run db:deploy应用避免手工改表引入不一致。3. 生产部署的监听地址策略config.rs 中还有一个值得学习的细节生产环境绑定0.0.0.0供反向代理接入开发环境只绑定localhost——本地开发时 API 天然不对局域网开放减少了被内网扫描暴露的风险。五、新手安全清单上线前逐项自查 ✅把上面的机制浓缩成一份可执行清单密钥不入库cert/、.env.*均加入.gitignore仓库只保留 .env.sample 与cert_sample模板开发/生产密钥分离Firebase 私钥、OpenAI Key、Stripe Key 各配独立的两套前端零私钥确认浏览器与插件代码中只有NEXT_PUBLIC_*公开配置见 firebaseClient/index.tsAPI 全部过守卫新接口统一包裹 withProtectApi.ts401/400 兜底齐全Fail-fast 启动依赖expect(xxx must be set)保证缺配置即拒绝启动不带着残缺配置上线数据最小化数据库不存密码用户数据按userId隔离定期轮换每季度轮换 OpenAI Key 与 Firebase 私钥泄露可快速止血。总结AI-Employe 的安全设计可以概括为一句话按持有者给密钥分层用环境变量注入用统一守卫验证身份用 fail-fast 拒绝带病运行。对新手而言真正要记住的不是代码细节而是三件小事——私钥只放服务端、前端只拿公开凭证、所有 API 都过同一把锁。做好这三点你就掌握了 90% 的 Web 项目密钥安全管理实践。【免费下载链接】AI-EmployeCreate browser automation as if you were teaching a human using GPT-4 Vision.项目地址: https://gitcode.com/gh_mirrors/ai/AI-Employe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考