原則
プラグインのツールは、ユーザーデータやサードパーティ API にアクセスし、書き込み操作を実行できます。すべての MCP サーバーと UI コンポーネントを本番環境で稼働するソフトウェアとして扱い、次の原則に従ってください。
- 最小権限: 必要なスコープ、ストレージへのアクセス権、ネットワーク権限のみを要求してください。
- ユーザーの明示的な同意: アカウントの連携や書き込み権限の付与を行う際は、 ユーザーがその内容を理解できるようにしてください。破壊的な操作には、 ホストの確認プロンプトを使用してください。
- 多層防御: プロンプトインジェクションや悪意のある入力がサーバーに届くことを前提にしてください。すべての入力をチェックし、監査ログを記録してください。
データの取り扱い
- 構造化コンテンツ: 現在のプロンプトに必要なデータのみを含めてください。コンポーネントの props にシークレットやトークンを埋め込まないでください。
- ストレージ: ユーザーデータの保持期間を決め、保持ポリシーを公開してください。削除リクエストに対応してください。
- ログ記録: ログに書き込む前に、個人を特定できる情報(PII)をマスキングしてください。デバッグ用の相関 ID は保存しますが、必要な場合を除き、プロンプトの原文は保存しないでください。
プロンプトインジェクションと書き込み操作
開発者モードでは、書き込みツールを含む MCP のすべての機能にアクセスできます。次の対策でリスクを軽減してください。
- ツールの説明を定期的に見直し、誤用を防ぐ(「レコードの削除には使用しないでください」など)
- モデルが提供した入力も含め、すべての入力をサーバー側で検証する
- 元に戻せない操作には、人による確認を必須とする
プロンプトインジェクションのテストに効果的なプロンプトを QA チームと共有し、早期に弱点を調べられるようにしてください。
ネットワークアクセス
ウィジェットは、厳格なコンテンツセキュリティポリシーが適用された、隔離された iframe 内で実行されます。
window.alert、
window.prompt、window.confirm、navigator.clipboard などの特権ブラウザ API にはアクセスできません。CSP は、
通常の fetch リクエストを制御します。ネストされたフレームはデフォルトでは利用できません。
利用するには、リソースの CSP メタデータ(
_meta.ui.csp.frameDomains など)で特定のオリジンを有効にしてください。プラグインは、MCP サーバーの
登録可能ドメイン内のページを埋め込むことができます。これには既存のエディターや管理インターフェースも含まれます。ドメインの所有権、
必要な根拠の説明、レビュー要件については、iframe ポリシーを
参照してください。
ウィジェットの CSP は、iframe で読み込める宛先を制限します。
埋め込みページには独自の CSP が適用されます。ウィジェットの connectDomains と resourceDomains の
許可リストは、そのページ内から行われるネットワークリクエストを制限しません。iframe の
オリジンは具体的に指定し、埋め込む機能や画面もセキュリティレビューの対象に含めてください。
サーバー側のコードには、ホスティング環境が適用するもの以外にネットワーク制限はありません。外部への呼び出しには、通常のベストプラクティス(TLS 検証、再試行、タイムアウト)を適用してください。
認証と認可
- 外部アカウントと連携する際は、OAuth 2.1 の認可コードフローを使用してください。
認可サーバーが Client ID Metadata Documents(CIMD)に対応し、
プラグインの作成者が CIMD を選択した場合は、CIMD を優先してください。パブリッククライアントのトークン交換には
noneを使用し、 認可サーバーがクライアント認証を要求する場合はprivate_key_jwtを使用してください。 プラグインの作成者が DCR を選択した場合や、 CIMD を利用できない場合は、DCR に対応してください。 - ツール呼び出しのたびにスコープを検証し、その制限を適用してください。期限切れまたは形式が不正なトークンには、
401レスポンスを返してください。 - 組み込みの ID 機能を使用する場合は、有効期間の長いシークレットを保存せず、提供される認証コンテキストを使用してください。
運用開始に向けた準備
- リリース前にセキュリティレビューを実施してください。特に、規制対象のデータを扱う場合は重要です。
- 異常なトラフィックパターンを監視し、エラーや認証失敗が繰り返された場合に備えてアラートを設定してください。
- サードパーティの依存関係、ライブラリ、ビルドツールに継続的にパッチを適用し、サプライチェーンのリスクを軽減してください。
セキュリティとプライバシーは、ユーザーの信頼の基盤です。後回しにせず、計画、実装、デプロイのワークフローに最初から組み込んでください。