MCP Fusion/Security and governance/クレデンシャル
クレデンシャル
Bring Your Own Credentials: コネクタが必要とするシークレットフィールドを宣言し、購入者ごとに Vinkius ダッシュボードで自分のキーを設定できるようにします。ランタイムはリクエストごとにそれらを注入します。
ベンダーの API キーをコードに埋め込んだコネクタは、1 つのデプロイメントしか提供できません。クレデンシャルフィールドを宣言したコネクタは公開でき、購入者ごとに自分のキーを設定できます。MCP Fusion はこれを Bring Your Own Credentials と呼び、コネクタをマーケットプレイスで公開可能にする仕組みです。
フィールドを宣言する
import { defineCredentials } from '@mcpfusion/core';
export const credentials = defineCredentials({
openai_key: {
type: 'api_key',
label: 'OpenAI API key',
required: true,
sensitive: true,
validation: /^sk-/,
},
zendesk_subdomain: {
type: 'uri',
label: 'Zendesk subdomain',
required: true,
sensitive: false,
},
});| フィールド型 | 用途 |
|---|---|
api_key | 既知のプレフィックスを持つキー |
token | PAT のような不透明なトークン |
password | 決して表示してはならないシークレット |
uri | エンドポイントやサブドメイン、非機密 |
購入者による設定方法
購入者は Vinkius console でコネクタを開き、クレデンシャルフォームに入力します。これは Cloud ドキュメントの Credentials で説明されているのと同じエディタです。必須バッジ、暗号化ストレージ、接続テストの判定が備わっています。あなたが購入者の値を見ることはなく、購入者があなたの値を見ることもありません。
ランタイムによる注入方法
コネクタが Vinkius Edge で実行されると、ランタイムは購入者のシークレットをリクエストごとに globalThis.__vinkius_secrets に注入し、購入者ごとに分離します。サーバーは 1 つのアクセサを通じてこれらを読み取ります:
import { requireCredential } from '@mcpfusion/core';
.handle(async (input, ctx) => {
const openai = requireCredential('openai_key');
return callOpenAI(openai, input.prompt);
});必須のクレデンシャルが欠けている場合は、呼び出しの深いところで生の undefined が出る代わりに、ガイド付きの型付き CredentialMissingError が表面化します。
ローカル開発
ローカルでは、同じキーを環境変数に置きます。フレームワークはまず環境変数を読むため、コードを変更せずに同じサーバーがノート PC でも Edge でも動作します。Fusion はローカルでもデフォルトで PII をブロックするため、開発時にも Egress ファイアウォールが機能します。
ランタイムが注入するシークレットはリクエストごと、購入者ごとです。機密性の高いものはバンドル内に保存されません。まさにこれにより、コネクタの 1 つのビルドがすべての購入者に、それぞれのキーでサービスを提供できます。
この仕組みが重要な理由
- 1 つのビルド、多数の購入者。 一度公開すれば、各購入者が自分のベンダーキーを持ち込みます。
- あなたはシークレットを保持しません。 暗号化ストレージとリクエストごとの注入はプラットフォーム上で行われます。
- ローテーションはコンソール操作。 購入者がダッシュボードでキーを更新しても、コードは一切変わりません。
次のステップ
- Deploy: コネクタを Vinkius Cloud へ無料で出荷
- Tools: ハンドラ内でクレデンシャルを読み取る
- Governance: リリースをまたいでサーフェスの安全性を証明する
