LiteLLM Agent Control Plane 凭证保险库揭秘:模型密钥如何加密存储并按请求注入
【免费下载链接】litellm-agent-control-plane1 place to call all your agents - OpenCode, Hermes, Claude Managed Agents, Cursor Agents API, DeepAgents.项目地址https://gitcode.com/gh_mirrors/li/litellm-agent-control-plane点击查看免费下载LiteLLM Agent Control Plane一个地方调用所有 AgentOpenCode、Hermes、Claude Managed Agents、Cursor、DeepAgents内置了一个凭证保险库Vault你的模型 API 密钥存入保险库时先被 XChaCha20-Poly1305 算法加密数据库里只存密文每次创建 Agent 会话时网关才临时解密并注入到运行环境——密钥全程不落明文文件、不暴露给调用方。本文带你彻底看懂这套「加密存储 按请求注入」的完整链路。为什么需要凭证保险库想象一下你搭建了统一的 Agent 网关背后要接 Anthropic、OpenAI、Elastic 等多家模型服务。API 密钥放在哪里写在 YAML 配置文件里 → 容易随代码仓库一起泄露每个 Agent 配置里各写一份 → 改一次密钥要改 N 处明文存数据库 → 数据库一拖库密钥全曝光LiteLLM Agent Control Plane 的凭证保险库解决了这三个痛点痛点保险库的做法密钥易泄露入库前强制加密数据库里只有密文密钥散落在各处统一命名存储Agent 只引用密钥名明文存库不安全按请求解密用完即弃不落盘更关键的是「密钥分离」设计用来访问网关的 master key 和调用上游模型用的 provider key 是两套完全独立的密钥。团队成员用自己的虚拟 key 访问网关永远看不到任何模型凭证详见 docs/learn/auth.mdx。加密存储密钥入库前的三道锁加密逻辑集中在 src/proxy/credential_crypto.rs 这个文件里流程非常清晰第 1 步找到加密密钥Signing Key按优先级取两个来源之一src/proxy/credential_crypto.rs#L12-L26环境变量LITELLM_SALT_KEY推荐独立于网关认证密钥配置里的general_settings.master_key示例见 config.yaml.example两者都没配会直接报错LITELLM_SALT_KEY or general_settings.master_key is required。第 2 步加密算法用的是XChaCha20-Poly1305crypto_secretbox库一个既保密又防篡改的认证加密算法加密密钥由 signing key 先经SHA-256摘要派生每次加密都随机生成一个 24 字节 nonce拼在密文前保证同一密钥值两次加密结果完全不同最后整体做Base64 URL-safe编码得到一串像dF3xK9...的密文第 3 步落库密文写入 PostgreSQL 的LiteLLM_CredentialsTable表建表见 src/db/managed_agents/migrations/0002_litellm_credentials_table.sql读写逻辑见 src/db/vault_keys.rs。你直接查数据库看到的只是这样的密文credential_name | scope | credential_values anthropic_key | personal | dF3xK9mQ2...一长串密文personal 还是 global两种作用域作用域可见范围保存权限典型场景personal仅属主用户任意网关 key我个人的模型密钥global所有用户必须 master key团队共享的公共密钥解析时personal 优先于 globalsrc/db/vault_keys.rs#L143-L152如果你的个人密钥和全局密钥同名会用你个人的那份实现「个人覆盖全局」。对应 API 端点定义在 src/http/vault.rsGET /v1/vault/{user}/keys— 列出密钥只显示密钥名不返回值PUT /v1/vault/{user}/keys— 保存需指定personal或global作用域DELETE /v1/vault/{user}/keys/{key}— 删除个人密钥UI 端在Vault页面操作src/ui/src/app/vault/page.tsx有个细节体现了防泄露设计保存之后值永远不会再被显示出来只能编辑或删除。按请求注入密钥何时才被解密这是保险库最优雅的部分——解密只发生在一瞬间。当你在 UI 里创建 Agent 时可以在配置中勾选需要哪些 vault 密钥src/ui/src/app/agents/new/page.tsx。这些密钥名会存进 Agent 记录的vault_keys字段建表见 0001_lite_harness_tables.sqlAgent 里存的只是名字不是值。真正注入发生在会话启动的那一刻src/http/sessions/runtime.rs#L175-L186会话创建时src/http/sessions/runtime_vault.rs 里的resolve_agent_vault_keys开始工作按「个人密钥 → 回退 local 用户 → 回退全局密钥」的顺序逐个查出密文用 signing key 解密成明文明文直接写进本次会话的运行环境变量environment随会话传给运行时创建会话 → 查密文 → 解密 → 写入环境变量 → 交给运行时以 Elastic 运行时为例会话环境里会出现ELASTIC_API_KEY、ELASTIC_AGENT_ID这样的变量下图是实时 SDK 测试中注入环境变量后的完整会话事件流注入完成后明文只存在于内存中的会话环境里不会写回数据库、不会出现在 API 响应里、也不会被任何人再次查询到。对 LLM 代理转发请求也有一套类似机制src/http/credential_overrides.rs 在处理请求时按 provider 从凭证库加载密钥直接覆写到路由配置上调用方全程无感。安全实践建议看完实现原理几条落地建议密钥分离认证网关用LITELLM_MASTER_KEY加密凭证用独立的LITELLM_SALT_KEY两者用途不同、泄露影响面不同轮换无忧密钥值换一次所有引用该名称的 Agent 自动生效不用逐个改配置最小暴露能给团队的密钥就给personal作用域global留给真正需要共享的公共密钥保存 global 密钥必须持有 master key定期清理Vault 页面随时可以删除不再使用的密钥密文随即从数据库消失常见问题Q直接连数据库能看到我的模型密钥吗不能。数据库里存的是 XChaCha20-Poly1305 密文没有 signing key 无法还原。即使密文被人拿走只要LITELLM_SALT_KEY没泄露就解不开。Q保存的密钥还能查看吗不能。出于安全考虑值只在保存时提交一次之后任何 API包括 UI 的 Vault 页面都只返回密钥名和作用域。QAgent 配置里存的是密钥值还是密钥名只存密钥名vault_keys数组。这意味着 Agent 定义可以安全共享、导出而密钥本身留在保险库里。参考文件加密算法实现src/proxy/credential_crypto.rs保险库存储层src/db/vault_keys.rsVault REST APIsrc/http/vault.rs会话启动时的密钥注入src/http/sessions/runtime_vault.rs请求级凭证覆写src/http/credential_overrides.rs官方认证文档docs/learn/auth.mdx从「入库即加密」到「按请求才解密」LiteLLM Agent Control Plane 的凭证保险库用一套简洁的机制把模型密钥的生命周期管得明明白白——这也正是网关类产品处理敏感凭证应有的样子。赞分享【免费下载链接】litellm-agent-control-plane1 place to call all your agents - OpenCode, Hermes, Claude Managed Agents, Cursor Agents API, DeepAgents.项目地址https://gitcode.com/gh_mirrors/li/litellm-agent-control-plane点击查看免费下载相关推荐Data Formulator 凭证保险箱Credential Vault深度解析加密存储、安全模型与部署实践Data Formulator 凭证保险箱Credential Vault深度解析加密存储、安全模型与部署实践 适用版本Data Formulator数据可视化人工智能AI 应用数据分析前端后端AI AgentFirecrawl密钥管理安全凭证存储Firecrawl密钥管理安全凭证存储 引言为什么密钥管理至关重要 在AI驱动的Web数据提取时代API密钥API Key如同数字世界的通行证。Fir网页爬虫后端AI 应用TruffleHog工具中S3密钥检测机制的技术解析TruffleHog工具中S3密钥检测机制的技术解析 在安全扫描工具TruffleHog的使用过程中开发者们可能会遇到一个看似异常的现象当扫描包含S3密钥对应用安全安全与开源治理漏洞扫描创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

三行命令安装pi 以及配置API KEYS

三行命令安装pi 以及配置API KEYS

一,环境要求 在安装 Pi Agent 之前,请确保你的系统满足以下要求:依赖项最低版本说明Node.js建议 18 LTS或更高Pi Agent 基于 Node.js 运行,需要支持现代 JavaScript 特性的运行环境npm随 Node.js 自带用于安装 Pi Agent 和扩展包1…

2026/10/14 16:39:49 阅读更多 →
Python操作Cassandra实战:驱动选型、连接池与批量写入优化

Python操作Cassandra实战:驱动选型、连接池与批量写入优化

1. 项目概述:为什么用Python操作Cassandra不是“凑合”,而是工程现实的必然选择Cassandra数据库使用(五)——使用Python进行数据操作,这个标题看似平实,实则踩中了分布式系统落地中最关键的一环&#xff1a…

2026/10/14 16:39:49 阅读更多 →
Python操作Cassandra实战:连接、预编译与LWT事务精要

Python操作Cassandra实战:连接、预编译与LWT事务精要

1. 项目概述:为什么Python是操作Cassandra最务实的选择Cassandra数据库使用(五)——使用Python进行数据操作,这个标题看似平实,但背后藏着一个非常现实的工程选择逻辑。在某高校分布式系统课程实验中,学生团…

2026/10/14 16:39:49 阅读更多 →

最新新闻

无人自助拼豆系统开发实战 核心功能实现逻辑与部署上线完整指南

无人自助拼豆系统开发实战 核心功能实现逻辑与部署上线完整指南

无人自助拼豆系统概述 无人自助拼豆系统是一种基于物联网和移动互联网技术的智能设备管理系统,旨在为用户提供便捷的拼豆服务。该系统通常包括用户端、管理后台及硬件设备之间的交互逻辑,能够实现从用户下单到设备操作的全流程自动化。在实际开发中&…

2026/10/14 18:01:22 阅读更多 →
Python操作Neo4j实战:从图数据库基础到Cypher查询优化

Python操作Neo4j实战:从图数据库基础到Cypher查询优化

在Python里折腾过关系型数据库之后,一旦遇到多度关系查询、层级不确定的数据,SQL那一套JOIN写起来真是又臭又长。后来我在实际项目里接触了图数据库,开始用Python操作Neo4j,才算打开了新世界的大门:原来“朋友的朋友的…

2026/10/14 18:01:22 阅读更多 →
MLX90614红外测温实战:从I2C读取到发射率校准的完整指南

MLX90614红外测温实战:从I2C读取到发射率校准的完整指南

简介:基于51单片机和MXL90614红外传感器的非接触式温度测温工程,适合单片机初学者及电子爱好者动手实践。资源围绕传感器信号读取、温度值换算与液晶显示三个核心环节展开,能够帮助学习者快速搭建一个可用的红外测温小系统。压缩包体积仅8KB&…

2026/10/14 18:01:22 阅读更多 →
负空间、视觉双关与尺度对比:qiaomu-mondo-poster-design 的3大构图原理深度剖析

负空间、视觉双关与尺度对比:qiaomu-mondo-poster-design 的3大构图原理深度剖析

AI 技能AI 应用媒体生成 【免费下载链接】qiaomu-mondo-poster-design 一句话生成大师级海报、书籍封面、专辑封面和各类设计作品。无需懂PS、配色或艺术史,AI自动选择最佳风格(基于20位传奇海报设计师)。支持电影海报、读书笔记、公众号封面…

2026/10/14 18:01:22 阅读更多 →
Windows下Elasticsearch安装避坑记录:环境变量、启动报错与IK分词配置

Windows下Elasticsearch安装避坑记录:环境变量、启动报错与IK分词配置

先说个结论:Elasticsearch 在 Linux 上装,熟练之后真的就是解压、改配置、启动三步走;但在 Windows 上装,如果你运气不够好,能从环境变量一路踩到分词插件,每个环节都有惊喜。我这边用的是某台 8GB 内存的 …

2026/10/14 18:01:22 阅读更多 →
数据库与缓存实战指南:从MySQL索引到Redis穿透与雪崩

数据库与缓存实战指南:从MySQL索引到Redis穿透与雪崩

得,直接开始正题。聊到互联网后端,我估计前面两篇已经把HTTP协议、Web框架、接口设计这些基础盘得差不多了,这篇咱们必须得换个频道,聊聊在“学习记录”这个系列里最劝退、也最躲不开的硬骨头——数据库与缓存。你去看各大招聘网站…

2026/10/14 18:00:22 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →