NIM Key Manager について
NIM Key Managerは、チームが自分たちのNVIDIA Build/NIM APIキーを管理するためのセルフホスト可能なサービスです。暗号化保存、補助付きローテーション、プロジェクトとロールの管理に加え、オプションのClaude MCPコネクターを備えています。
主な機能
- 01APIキーの暗号化保存
- 02ローテーション支援と期限検出
- 03プロジェクト別のキー管理
- 04ロールベースのアクセス制御
- 05監査ログと使用統計
- 06Webダッシュボードとヘルスチェック
活用シーン
- 01組織が保有するNVIDIAキーの管理
- 02ワークロード別のキー分類と払い出し
- 03キー操作の監査記録の確認
MCP 対応
デプロイしたインスタンスの`/mcp`で、OAuth 2.1経由のClaude向けMCPサーバーを任意で有効化できます。RBACと監査の仕組みを共有し、キーやプロジェクトの一覧、確認、払い出し、管理を行えます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
NIM Key Manager
ご自身の NVIDIA Build/NIM アカウントの API キーを管理する、セルフホスト可能で本番運用に対応したマネージャー — 暗号化ストレージ、ローテーション支援、有効期限の検出、使用状況の統計、プロジェクト、RBAC、監査、ウェブダッシュボード、Claude MCP コネクターを備えています。数分でご自身のインスタンスをデプロイできます。設定はすべて環境変数を通じて行います。
NVIDIA とは無関係です。 これは独立したオープンソースプロジェクトであり、NVIDIA Corporation との提携、同社による推奨、支援はありません。「NVIDIA」、「NVIDIA Build」、「NIM」は、このソフトウェアが連携するサービスを示す目的でのみ使用しています。製品名および会社名は、それぞれの所有者に帰属します。
NVIDIA の利用規約について。 NVIDIA Build には、プログラムからキーを作成またはローテーションするための公開 API がありません(キーは build.nvidia.com で生成します)。また、API キーを第三者と共有または再配布してはなりません。そのため、このプロジェクトはご自身のインスタンスで、ご自身のキーを管理するように設計されています。外部への呼び出しは、公式の読み取り専用検証エンドポイント
GET https://integrate.api.nvidia.com/v1/modelsのみです。NVIDIA ポータルの操作を自動化したり、スクレイピングしたりすることはなく、キーを他人に渡すためのサービスでもありません。
ご自身でデプロイする(ローカル環境のセットアップ不要)
- ボタンをクリックします(または、Use this template → Create repository を選択し、Render で New → Blueprint を選んでフォークを指定します)。Render が
render.yamlを読み取り、以下をすべて自動的にプロビジョニングします。- マネージド PostgreSQL データベース
- ヘルスチェック機能を備えた Docker 化されたウェブサービス
- シークレット
JWT_SECRET、ENCRYPTION_MASTER_KEY、MCP_OAUTH_JWT_SIGNING_KEY(Render のシークレットマネージャーが生成して保存) - データベースから注入される
DATABASE_URL
- 表示されたら、
FIRST_ADMIN_EMAILとFIRST_ADMIN_PASSWORDを設定します(初回起動時に作成される初期管理者です。HTTP リクエストから最初の管理者を作成することはできないため、設定が必須です)。 - サービス URL を開きます。
/でログインし、/docsで API を確認できます。 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 に含まれる ID のみ接続できます(フェイルクローズ)。コネクターは任意です。以下の OAuth 認証情報を設定するまでは /mcp は無効のままになり、その他の機能は通常どおり動作します。
- コールバックに
‹BASE›/auth/callbackを設定して、GitHub OAuth App を作成し、Client ID/Secret をコピーします。 - 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にあります。 - 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フラグを設定できます。 - 定期検証 — NVIDIA に対して 6 時間ごとに自動チェックを実行し(設定可能)、無効または失効したキーにフラグを付けます。
- キーの払い出し —
GET /api/v1/keys/dispenseは、使用状況を記録しながら、グローバルまたはプロジェクトごとに、最も長く使われていない有効なキー(LRU)を返します。 - プロジェクト — キーを利用者/ワークロードごとにグループ化します。
- 統計 — ステータス別のキー一覧、払い出し、使用状況の時系列データを確認できます。
- セキュリティ — JWT(アクセス+リフレッシュ)、ロール
admin/manager/viewer、レート制限、すべての機密操作に対する変更不能な監査記録。 - Claude コネクター(MCP) —
/mcpに OAuth で保護された MCP サーバーを提供します(上記を参照)。 - 運用 — 構造化 JSON ログ、Prometheus メトリクス(
/metrics。管理者トークンまたはMETRICS_TOKENで保護)、ヘルスチェック(/health)、OpenAPI(/docs)。
アーキテクチャ
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 を参照してください。対話型 OpenAPI は /docs にあります。
ロール
| 操作 | viewer | manager | admin |
|---|---|---|---|
| キー、プロジェクト、統計の閲覧 | ✅ | ✅ | ✅ |
| キーの登録/検証/ローテーション/失効/払い出し | ❌ | ✅ | ✅ |
| プロジェクトの管理 | ❌ | ✅ | ✅ |
| キーの削除、ユーザーの管理、監査ログの閲覧 | ❌ | ❌ | ✅ |
開発とテスト
デプロイに必須ではありませんが、完全にサポートされています。
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をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。