MCP Fusion/Security and governance/クレデンシャル

クレデンシャル

VinkiusについてAIに質問

Bring Your Own Credentials: コネクタが必要とするシークレットフィールドを宣言し、購入者ごとに Vinkius ダッシュボードで自分のキーを設定できるようにします。ランタイムはリクエストごとにそれらを注入します。

ベンダーの API キーをコードに埋め込んだコネクタは、1 つのデプロイメントしか提供できません。クレデンシャルフィールドを宣言したコネクタは公開でき、購入者ごとに自分のキーを設定できます。MCP Fusion はこれを Bring Your Own Credentials と呼び、コネクタをマーケットプレイスで公開可能にする仕組みです。

フィールドを宣言する

typescript
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既知のプレフィックスを持つキー
tokenPAT のような不透明なトークン
password決して表示してはならないシークレット
uriエンドポイントやサブドメイン、非機密

購入者による設定方法

購入者は Vinkius console でコネクタを開き、クレデンシャルフォームに入力します。これは Cloud ドキュメントの Credentials で説明されているのと同じエディタです。必須バッジ、暗号化ストレージ、接続テストの判定が備わっています。あなたが購入者の値を見ることはなく、購入者があなたの値を見ることもありません。

ランタイムによる注入方法

コネクタが Vinkius Edge で実行されると、ランタイムは購入者のシークレットをリクエストごとに globalThis.__vinkius_secrets に注入し、購入者ごとに分離します。サーバーは 1 つのアクセサを通じてこれらを読み取ります:

typescript
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: リリースをまたいでサーフェスの安全性を証明する