MCPのcredentialsとlogs: redaction前に分ける4つの信頼境界
環境変数で渡したcredentialはprocess、child process、外部API、logsへ広がり得ます。redactionを最後の補助に限定し、scope、継承、保存、閲覧権限を別々に制御する導入条件です。
Read in EnglishMCP serverへ環境変数で渡したcredentialは、設定ファイルから消しただけでは保護されません。processが値を読める時点で、そのprocessが起動するchild process、外部API要求、例外、stdout・stderr、log collectorも新しい信頼境界になります。redactionは偶発的な表示を減らす補助であり、credentialへのaccess controlや漏えい後の失効を代替しません。
credentialが通過する4つの境界
| 境界 | 必要な制限 | 失敗時の影響 |
|---|---|---|
| secret store → MCP launcher | serverごとの最小credentialだけを注入 | 無関係なserverまで同じsecretを取得 |
| launcher → process / child process | environment継承のallowlist | package、hook、child commandへ不要なcredentialが伝播 |
| MCP server → external API | 対象resourceと最小scope | 別APIや過剰な操作権限へ到達 |
| process → stdout・stderr・logs | 値を出さない設計、限定閲覧、短い保持 | logが再利用可能なcredential保管場所へ変化 |
たとえば検索用MCPだけが必要とするSEARCH_API_TOKENを、client全体のlogin environmentへ入れると、同じclientが起動する別serverも読み取れる可能性があります。対象serverだけに注入しても、診断用のenvironment dump、HTTP headerを含むerror、child processへの全environment継承があれば境界は再び広がります。
現行仕様が示すtoken theft
MCP 2026-07-28 Authorization Security Considerationsは、clientに保存されたtokenだけでなく、serverにcacheまたはlogされたtokenを得た攻撃者も、resource serverから正規要求に見えるaccessを実行できると説明しています。clientとserverにはsecure token storageが必須で、短命access tokenとpublic clientのrefresh token rotationも被害範囲を抑える要件です。
この要件はOAuth tokenに直接適用されます。API key、database credential、cloud credentialについても、processから読める値は同じ運用境界として扱うのがMCP Guardの推奨です。credentialの種類が違っても、logへ出た後にaccessできる人と保持期間が増える点は変わりません。
redactionの限界と受入条件
GitHub Actionsの公式資料は、automatic redactionが変換済み・構造化されたsecretを必ず隠すわけではないこと、侵害されたrunnerではredactionがsecurity boundaryにならないことを明記しています。完全一致のmaskは、分割、encoding、派生token、別形式のAuthorization valueを見逃す場合があります。
接続前には、次の条件を実際の起動pathとlog基盤で確認します。これはMCP Guardの実務推奨であり、MCP仕様が定めるlog書式ではありません。
- server専用credential、最小scope、対象resource、owner、失効方法
- child processへ渡すenvironment名のallowlistと、無関係な環境変数の不在
- 正常系・認証失敗・timeout・外部API errorで、credentialやAuthorization headerを出力しない確認
- stdout、stderr、application log、collector、error trackingごとの閲覧者と保持期間
- 漏えい時のlog削除、credential revoke・rotation、影響期間の特定手順
redaction testには、本番credentialではなく専用canaryを使います。mask成功だけを受入れ根拠にせず、元の値を出さないこととlog閲覧権限の限定を先に確認します。広いlogin environmentの継承、全environment dump、長期tokenを含むlogが残る構成は、境界を修正してcredentialをrotationするまで接続を見送ります。
確認範囲と出典
2026年9月22日に、MCP 2026-07-28 Authorization Security Considerations、Security Best Practices、GitHub Actionsのsecure-useおよびcompromised-runner資料を確認した設計分析です。特定MCP serverのsecret漏えい、実際のlog内容、またはCVEを示すものではありません。表とOAuth以外のcredential受入条件は、公開要件に基づくMCP Guardの実務推奨です。
