分類レベルの選択
Triggerfishshのすべてのチャンネル、MCPサーバー、統合、プラグインには分類レベルが 必要です。このページでは適切なレベルの選択をサポートします。
4つのレベル
| レベル | 意味 | データフローの先... |
|---|---|---|
| PUBLIC | 誰でも見て安全 | どこへでも |
| INTERNAL | 自分のみ — 機密ではないが公開ではない | INTERNAL、CONFIDENTIAL、RESTRICTED |
| CONFIDENTIAL | 漏洩させたくない機密データを含む | CONFIDENTIAL、RESTRICTED |
| RESTRICTED | 最も機密性が高い — 法律、医療、財務、PII | RESTRICTEDのみ |
データは上方向またはサイドウェイズにのみ流れ、下には流れません。これが ライトダウン禁止ルールであり、上書きできません。
確認すべき2つの質問
設定する統合について確認します:
1. このソースが返す可能性のある最も機密性の高いデータは何ですか?
これが最低の分類レベルを決定します。MCPサーバーが財務データを返す可能性がある場合、 ほとんどのツールが無害なメタデータを返す場合でも、少なくともCONFIDENTIALである必要があります。
2. セッションデータがこの宛先に流れることに不快感はありますか?
これが割り当てたい最大の分類レベルを決定します。高い分類はそれを使用すると セッションtaintがエスカレートし、その後のデータフローが制限されることを意味します。
データタイプ別の分類
| データタイプ | 推奨レベル | 理由 |
|---|---|---|
| 天気、公開ウェブページ、タイムゾーン | PUBLIC | 誰でも自由に利用可能 |
| 個人メモ、ブックマーク、タスクリスト | INTERNAL | プライベートだが公開されても被害は少ない |
| 内部wiki、チームドキュメント、プロジェクトボード | INTERNAL | 組織内部の情報 |
| メール、カレンダーイベント、連絡先 | CONFIDENTIAL | 名前、スケジュール、関係性を含む |
| CRMデータ、販売パイプライン、顧客記録 | CONFIDENTIAL | 事業上の機密、顧客データ |
| 財務記録、銀行口座、請求書 | CONFIDENTIAL | 金銭的な情報 |
| ソースコードリポジトリ(プライベート) | CONFIDENTIAL | 知的財産 |
| 医療または健康記録 | RESTRICTED | 法律上の保護(HIPAA等) |
| 政府ID番号、SSN、パスポート | RESTRICTED | 個人情報盗用リスク |
| 法的文書、NDA下の契約 | RESTRICTED | 法的露出 |
| 暗号化キー、認証情報、シークレット | RESTRICTED | システム侵害リスク |
MCPサーバー
triggerfish.yamlにMCPサーバーを追加する際、分類は2つのことを決定します:
- セッションtaint — このサーバーのツールを呼び出すとセッションがこのレベルに エスカレートします
- ライトダウン防止 — このレベルより高くtaintされたセッションはデータをこの サーバーに送信できません
yaml
mcp_servers:
# PUBLIC — オープンデータ、機密性なし
weather:
command: npx
args: ["-y", "@mcp/server-weather"]
classification: PUBLIC
# INTERNAL — 自分のファイルシステム、プライベートだがシークレットではない
filesystem:
command: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/you/docs"]
classification: INTERNAL
# CONFIDENTIAL — プライベートリポジトリ、顧客Issueにアクセス
github:
command: npx
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "keychain:github-pat"
classification: CONFIDENTIAL
# RESTRICTED — PII、医療記録、法的ドキュメントを含むデータベース
postgres:
command: npx
args: ["-y", "@mcp/server-postgres"]
env:
DATABASE_URL: "keychain:prod-db-url"
classification: RESTRICTEDデフォルト拒否 classificationを省略すると、サーバーはUNTRUSTEDとして
登録され、Gatewayはすべてのツール呼び出しを拒否します。明示的にレベルを選択する必要 があります。 :::
一般的なMCPサーバーの分類
| MCPサーバー | 推奨レベル | 理由 |
|---|---|---|
| ファイルシステム(公開ドキュメント) | PUBLIC | 公開されているファイルのみを公開 |
| ファイルシステム(ホームディレクトリ) | INTERNAL | 個人ファイル、シークレットなし |
| ファイルシステム(仕事プロジェクト) | CONFIDENTIAL | 独自のコードまたはデータを含む可能性あり |
| GitHub(公開リポジトリのみ) | INTERNAL | コードは公開だが使用パターンはプライベート |
| GitHub(プライベートリポジトリ) | CONFIDENTIAL | 独自のソースコード |
| Slack | CONFIDENTIAL | 職場の会話、機密性がある可能性あり |
| データベース(分析/レポート) | CONFIDENTIAL | 集計されたビジネスデータ |
| データベース(PIIを含む本番) | RESTRICTED | 個人を特定できる情報を含む |
| 天気/時間/計算機 | PUBLIC | 機密データなし |
| ウェブ検索 | PUBLIC | 公開されている情報を返す |
| メール | CONFIDENTIAL | 名前、会話、添付ファイル |
| Google Drive | CONFIDENTIAL | ドキュメントに機密ビジネスデータが含まれる可能性あり |
チャンネル
チャンネルの分類は上限を決定します — そのチャンネルに配信できるデータの最大機密度です。
yaml
channels:
cli:
classification: INTERNAL # ローカルターミナル — 内部データに安全
telegram:
classification: INTERNAL # プライベートボット — オーナーにとってCLIと同じ
webchat:
classification: PUBLIC # 匿名の訪問者 — パブリックデータのみ
email:
classification: CONFIDENTIAL # メールはプライベートだが転送される可能性ありオーナーと非オーナー オーナーにとっては、すべてのチャンネルが同じ信頼
レベルを持ちます — どのアプリを使用しても自分は自分です。チャンネルの分類は 非オーナーユーザー(webchatの訪問者、Slackチャンネルのメンバーなど)に最も 重要であり、そこでどのデータが流れるかをゲートします。 :::
チャンネル分類の選択
| 質問 | はいの場合... | いいえの場合... |
|---|---|---|
| このチャンネルのメッセージを見知らぬ人が見られますか? | PUBLIC | 続きを読む |
| このチャンネルはあなた個人専用ですか? | INTERNAL以上 | 続きを読む |
| メッセージが第三者に転送・スクリーンショット・ログ記録される可能性がありますか? | CONFIDENTIAL以下 | RESTRICTEDの可能性 |
| チャンネルはエンドツーエンド暗号化され、完全にコントロール下にありますか? | RESTRICTEDの可能性 | CONFIDENTIAL以下 |
間違えた場合はどうなりますか?
低すぎる(例:CONFIDENTIALサーバーをPUBLICとしてマーク):
- このサーバーからのデータはセッションtaintをエスカレートさせません
- セッションが分類データをパブリックチャンネルに流す可能性があります — データ漏洩リスク
- これが危険な方向です
高すぎる(例:PUBLICサーバーをCONFIDENTIALとしてマーク):
- このサーバーを使用すると不必要にセッションtaintがエスカレートします
- その後、より低い分類のチャンネルへの送信がブロックされます
- 不便ですが安全です — 高めに設定するよう心がけてください
疑わしい場合は高めに分類してください。サーバーが実際に返すデータを
確認した後でいつでも下げられます。低すぎる分類はセキュリティリスクです。高すぎる 分類は単なる不便です。 :::
Taintカスケード
実際の影響を理解することで賢明な選択ができます。セッションで何が起こるかを示します:
1. セッションはPUBLICで開始
2. 天気を確認(PUBLICサーバー) → taintはPUBLICのまま
3. メモを確認(INTERNAL filesystem) → taintはINTERNALにエスカレート
4. GitHub Issueを照会(CONFIDENTIAL) → taintはCONFIDENTIALにエスカレート
5. webchatに投稿しようとする(PUBLICチャンネル) → ブロック(ライトダウン違反)
6. セッションをリセット → taintはPUBLICに戻る
7. webchatに投稿 → 許可CONFIDENTIALツールに続いてPUBLICチャンネルをよく使う場合は、頻繁にリセットが 必要になります。ツールが本当にCONFIDENTIALである必要があるか、またはチャンネルを 再分類できるかを検討してください。
ファイルシステムパス
混在する機密度のディレクトリにエージェントがアクセスできる場合に便利な、個別の ファイルシステムパスの分類も可能です:
yaml
filesystem:
default: INTERNAL
paths:
"/home/you/public": PUBLIC
"/home/you/work/clients": CONFIDENTIAL
"/home/you/legal": RESTRICTEDレビューチェックリスト
新しい統合を本番環境に移行する前に:
- [ ] このソースが返す可能性のある最悪のデータは何ですか?そのレベルで分類してください。
- [ ] 分類はデータタイプの表が示すレベル以上ですか?
- [ ] これがチャンネルの場合、考えられるすべての受信者に対して分類は適切ですか?
- [ ] 典型的なワークフローに対してtaintカスケードが機能することをテストしましたか?
- [ ] 疑わしい場合、低めではなく高めに分類しましたか?
関連ページ
- ライトダウン禁止ルール — 固定のデータフロールール
- 設定 — 完全なYAMLリファレンス
- MCP Gateway — MCPサーバーのセキュリティモデル
