mcpField
N
NIM Key Manager

NIM Key Manager

本地服务
github.com安全34 周前更新

关于 NIM Key Manager

NIM Key Manager 是供团队管理自有 NVIDIA Build/NIM API 密钥的可自托管服务。它提供加密存储、辅助轮换、项目与权限管理,并可选启用 Claude MCP 连接器。

主要功能

  1. 01加密存储 API 密钥
  2. 02辅助轮换与过期检测
  3. 03按项目分组密钥
  4. 04基于角色的访问控制
  5. 05审计记录与使用统计
  6. 06Web 控制台与健康检查

适用场景

  1. 01管理团队自有 NVIDIA 密钥
  2. 02按工作负载分组和发放密钥
  3. 03审查密钥操作审计记录

MCP 相关

可选 MCP 服务位于部署实例的 `/mcp`,供 Claude 通过 OAuth 2.1 连接。连接器可列出、检查、发放及管理密钥和项目,并遵循同一套角色权限与审计规则。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

NIM Key Manager

NIM-KE~1

为你自己的 NVIDIA Build/NIM 账户提供可自托管、可用于生产环境的 API 密钥管理器 — 支持加密存储、辅助轮换、过期检测、用量统计、项目、RBAC、审计、Web 控制面板和 Claude MCP 连接器。几分钟即可部署自己的实例;所有配置均通过环境变量完成。

CI License: MIT Python 3.12 Coverage

与 NVIDIA 无关。 这是一个独立的开源项目,与 NVIDIA Corporation 无关,也未获得其认可或赞助。“NVIDIA”“NVIDIA Build”和“NIM”仅用于说明本软件适用的服务;产品和公司名称均归其各自所有者所有。

NVIDIA 服务条款。 NVIDIA Build 不提供用于以编程方式创建或轮换密钥的公共 API(你可以在 build.nvidia.com 生成密钥),且 不得与第三方共享或重新分发 API 密钥。因此,本项目旨在让你在自己的实例上管理自己的密钥:唯一的出站调用是官方的只读验证端点 GET https://integrate.api.nvidia.com/v1/models。它不会自动操作或抓取 NVIDIA 门户,也不是一个向他人提供密钥的服务。

部署你自己的实例(无需本地设置)

Deploy to Render

  1. 点击按钮(或选择 Use this template → Create repository,然后在 Render 中选择 New → Blueprint 并选择你的派生仓库)。Render 会读取 render.yaml 并自动配置所有内容:
    • 托管的 PostgreSQL 数据库,
    • 带健康检查的 Docker 化 Web 服务,
    • 密钥 JWT_SECRET、ENCRYPTION_MASTER_KEY 和 MCP_OAUTH_JWT_SIGNING_KEY(由 Render 的密钥管理器生成并存储),
    • 从数据库注入的 DATABASE_URL。
  2. 出现提示时,设置 FIRST_ADMIN_EMAIL 和 FIRST_ADMIN_PASSWORD(你的初始管理员将在首次启动时创建;此项为必填,因为无法通过 HTTP 请求创建首位管理员)。
  3. 打开服务 URL:在 / 登录,在 /docs 查看 API。
  4. 每次向 main 推送都会运行 CI(lint + 类型检查 + 测试 + 构建);所有检查通过后,Render 会自动重新部署(检查失败的提交不会部署)。容器启动时会运行迁移(alembic upgrade head)。

更倾向于使用其他托管平台?任何支持运行 Docker 容器和 PostgreSQL 的平台都可以 — 参见 docs/deployment.md。

在 Claude 中使用(MCP 连接器)

同一部署还会在 ‹BASE›/mcp 提供 Model Context Protocol 服务器,你可以将其添加到 Claude 作为自定义连接器。Claude 使用 OAuth 2.1 进行身份验证(默认使用 GitHub,也可选用 Google),并可列出/检查密钥、分发可直接使用的密钥、注册/轮换/撤销密钥以及管理项目——并具有与 REST API 相同的 RBAC 和审计跟踪。只有列在 MCP_ALLOWED_IDENTITIES 中的身份才能连接(默认拒绝)。连接器是可选的:在设置下方的 OAuth 凭据之前,/mcp 会保持关闭,其他所有功能均可正常运行。

  1. 创建 GitHub OAuth App,并将回调地址设为 ‹BASE›/auth/callback;复制 Client ID/Secret。
  2. 在 Render 中设置 MCP_GITHUB_CLIENT_ID、MCP_GITHUB_CLIENT_SECRET 和 MCP_ALLOWED_IDENTITIES(你的 GitHub 数字用户 ID 和/或电子邮件地址,而不是登录名:curl -s https://api.github.com/users/YOUR-LOGIN | jq .id;连接器创建的用户默认是查看者,除非你设置 MCP_DEFAULT_ROLE)。其他配置已在 render.yaml 中。
  3. 在 Claude 中:Settings → Connectors → Add custom connector → URL ‹BASE›/mcp → Connect。

完整指南(Google、工具参考、安全性、故障排除):docs/connector.md。

功能

  • 安全的密钥注册 — 使用 AES-256-GCM 加密静态数据(密钥通过 HKDF-SHA256 从平台密钥管理器中的密钥派生)。绝不以明文存储或记录。
  • 辅助轮换与审计 — 你在 NVIDIA 账户中创建新密钥并粘贴,然后系统会执行原子交换(新密钥启用,旧密钥撤销,并通过 rotated_from_id 建立沿袭关联)。
  • 过期检测 — 每小时运行一次后台任务,并提供维护端点;可配置 expiring_soon 标记。
  • 定期验证 — 每 6 小时(可配置)自动对 NVIDIA 执行检查,并标记无效/已撤销的密钥。
  • 密钥分发 — GET /api/v1/keys/dispense 返回最近最少使用的有效密钥(LRU),可按全局或项目范围返回,并记录使用情况。
  • 项目 — 按使用方/工作负载对密钥分组。
  • 统计信息 — 按状态统计库存、密钥分发情况和使用时间序列。
  • 安全性 — JWT(访问令牌 + 刷新令牌)、admin/manager/viewer 角色、速率限制,以及对每项敏感操作的不可变审计记录。
  • Claude 连接器(MCP) — 位于 /mcp 的 OAuth 安全保护 MCP 服务器(见上文)。
  • 运维 — 结构化 JSON 日志、/metrics 上的 Prometheus 指标(需管理员令牌或 METRICS_TOKEN)、/health 健康检查、/docs OpenAPI 文档。

架构

app/
├── domain/           # Enums and domain exceptions (no dependencies)
├── application/      # Use cases (services) and ports (interfaces)
│   └── services/     # auth, users, keys, projects, stats, audit
├── infrastructure/   # Adapters: SQLAlchemy (repositories) and NVIDIA gateway
├── api/              # FastAPI: routers, schemas, deps, rate limiting
├── mcp/              # Claude connector: MCP server, OAuth and identity mapping
├── dashboard/        # Lightweight SPA served at /
├── tasks/            # Scheduled jobs (APScheduler)
└── core/             # Config, crypto, security, logging

务实的整洁架构:依赖关系向内指向;应用层不了解 FastAPI,并通过 KeyValidator 端口访问 NVIDIA。详情和设计决策见 docs/architecture.md。

技术栈:Python 3.12 · FastAPI · FastMCP(Claude 连接器)· SQLAlchemy 2(异步)· 托管 PostgreSQL · Alembic · Docker · GitHub Actions · Render(Blueprint)· structlog · Prometheus · slowapi · APScheduler。

API 快速入门

BASE=https://your-service.onrender.com

# Log in (the admin was created on first boot)
TOKEN=$(curl -s $BASE/api/v1/auth/login -H 'Content-Type: application/json' \
  -d '{"email":"[email protected]","password":"your-password"}' | jq -r .access_token)

# Register a key created at build.nvidia.com (validating it against NVIDIA)
curl -s $BASE/api/v1/keys -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"name":"prod-1","api_key":"nvapi-...","validate_remote":true}'

# Get an available key (LRU) to use in your application
curl -s "$BASE/api/v1/keys/dispense" -H "Authorization: Bearer $TOKEN"

更多示例(轮换、项目、统计信息、审计)见 docs/api-examples.md。可在 /docs 查看交互式 OpenAPI 文档。

角色

操作查看者管理者管理员
查看密钥、项目和统计信息✅✅✅
注册 / 验证 / 轮换 / 撤销 / 分发密钥❌✅✅
管理项目❌✅✅
删除密钥、管理用户、读取审计日志❌❌✅

开发与测试

部署并不需要这些,但项目完全支持:

pip install -e ".[dev]"
pytest --cov=app          # required coverage gate: 85% (currently ~94%)
ruff check . && mypy app
docker compose up         # local stack with PostgreSQL

安全

威胁模型、加密细节和设计决策见 docs/security.md。要点:使用从密钥管理器派生的密钥(HKDF)进行 AES-256-GCM 加密,使用 SHA-256 指纹在不暴露密钥的情况下去重,使用短时效签名 JWT,使用 argon2 对密码进行哈希处理,按 IP 限流,审计每项敏感操作;除显式的发放端点外,日志和响应中不包含明文密钥。报告漏洞,请参阅 SECURITY.md。

贡献

欢迎贡献——请参阅 CONTRIBUTING.md 和行为准则。README.es.md 中提供了简短的西班牙语概览。

许可证

MIT——请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。