0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIに仕事を奪われる不安から始めるハーネス作成入門 第19回 機密情報をLLMに渡さないハーネス設計

0
Last updated at Posted at 2026-08-03

連載: AIに仕事を奪われる不安から始めるハーネス作成入門
第19回前回(第18回): MCPサーバーの単体テスト・結合テスト観点を作る

はじめに:AIに機密情報を渡してしまう不安

AIエージェントを業務で使うとき、最も気になるリスクのひとつが機密情報の漏洩です。プロンプトに顧客情報や社内パスワードを含めてしまうと、それが外部のAPIサーバーに送信される可能性があります。

SE経験者であれば、この問題に対する考え方を既に持っています。情報分類、アクセス制御、データマスキング——これらのセキュリティ知識は、AIハーネス設計にそのまま活かせます。

本記事では、LLMに機密情報を渡すリスクを体系的に整理し、ハーネスでどう防御するかを示します。

機密情報がLLMに渡る経路

AIエージェントのワークフローの中で、機密情報がLLMに渡る経路は主に4つあります。

経路 具体例 リスクレベル
プロンプト直接入力 ユーザーがパスワードを貼り付け
RAGコンテキスト 検索結果に個人情報が含まれる
MCPツール応答 外部ツールが機密データを返す
ログ記録 プロンプト全文がログに残る

この表からわかるように、リスクは「プロンプト」だけでなく、RAGやMCPツール、ログなど複数の経路に存在します。

情報分類マトリクス:SE経験を活かす

SEが業務システムで行う情報分類の考え方を、AIハーネスに適用します。

情報レベル 説明 AIハーネスでの扱い 具体例
機密 漏洩時の影響大 LLMに渡してはいけない パスワード、秘密鍵、個人情報
社内限定 社外に出すべきでない マスク後に渡すか、ローカルLLMを使用 社内規程、顧客情報、売上データ
公開可 公開しても問題ない そのまま渡せる 公開ドキュメント、OSSコード

この分類は、従来システムの「情報セキュリティポリシー」と同じ考え方です。

機密情報漏洩リスク一覧(成果物)

以下が、AIハーネスにおける機密情報漏洩リスクの一覧です。

# リスク 経路 影響度 発生確率 対策
1 プロンプトにパスワード含む 直接入力 致命的 入力バリデーション
2 個人情報がRAG経由で混入 RAG 重大 ナレッジ登録時のフィルタ
3 APIキーがプロンプトに混入 直接入力 致命的 環境変数で管理
4 社内データが外部APIに送信 API通信 重大 ローカルLLMまたはマスキング
5 ログに機密情報が残る ログ記録 ログ出力前のマスク処理
6 MCPツールが機密データを返却 MCP ツール応答のフィルタリング
7 モデル応答に機密情報が含まれる 出力 出力バリデーション

ハーネスでの防御層設計

リスク一覧を踏まえ、ハーネスに組み込む防御層を設計します。SEの「多層防御(Defense in Depth)」の考え方をそのまま適用します。

防御層 対象 実装方法 SE業務での対応
入力フィルタ プロンプト 正規表現で機密パターンを検出 入力バリデーション
マスキング プロンプト/コンテキスト 機密値をプレースホルダーに置換 データマスキング
通信制御 API呼び出し ローカルLLMと外部APIの使い分け ネットワーク制御
出力検証 モデル応答 応答から機密情報を検出・除去 出力フィルタ
ログ保護 ログファイル ログ出力前にマスク処理 ログのアクセス制御

入力フィルタの設計

最初の防御層として、プロンプトに機密情報が含まれていないかをチェックする入力フィルタを設計します。

検出すべきパターンの例:

パターン 検出方法 対応
メールアドレス 正規表現 マスクまたは警告
電話番号 正規表現 マスクまたは警告
クレジットカード番号 Luhnアルゴリズム ブロック(即座に停止)
APIキー プレフィックスマッチング ブロック
パスワードらしき文字列 エントロピー分析 警告

マスキングの基本設計

マスキングとは、機密情報をプレースホルダーに置き換えてからLLMに渡し、応答後に復元するアプローチです。

マスキングの流れ:
1. 入力: "田中太郎様のAPIキーはsk-abc123です"
2. マスク: "{{NAME_1}}様のAPIキーは{{API_KEY_1}}です"
3. LLMに送信: マスク済みテキスト
4. LLM応答: "{{NAME_1}}のAPIキーは..."
5. 復元: "田中太郎のAPIキーは..."

マスキングの判断基準

情報種別 マスキング方法 復元可否
個人名 プレースホルダー置換 可能
メールアドレス プレースホルダー置換 可能
パスワード 完全削除 不可(復元不要)
APIキー 完全削除 不可(復元不要)
住所 一般化(都道府県まで) 部分復元

ローカルLLMと外部APIの使い分け

機密情報のレベルに応じて、LLMの利用先を使い分ける判断基準を示します。

情報レベル 推奨LLM 理由
機密 ローカルLLMのみ データが外部に出ない
社内限定 ローカルLLM推奨 リスクを最小化
公開可 外部APIも可 コスト・品質で判断

ただし、ローカルLLMには品質やコストのトレードオフがあります。正解は一つではなく、プロジェクトの要件に応じて判断してください。

ハーネス実装上のチェックポイント

実装時に確認すべきチェックポイントを整理します。

チェック項目 確認内容 対応時期
プロンプトフィルタ 機密パターン検出が動作するか 実装時
マスキング処理 復元マッピングが正しいか 実装時
ログ保護 ログに機密情報が残らないか テスト時
通信経路 機密データが外部APIに送信されないか テスト時
エラー時 エラーメッセージに機密情報が含まれないか テスト時

SE経験からのマッピング

この分野は、SE経験者が最も強みを発揮できる領域のひとつです。

SEのセキュリティ経験 AIハーネスでの活用
入力バリデーション プロンプトフィルタの設計
データマスキング LLM送信前の機密情報置換
アクセス制御 情報レベルに応じたLLMの使い分け
監査ログ 機密情報アクセスの記録
インシデント対応 機密情報漏洩時の対応フロー

よくある懸念と判断基準

「マスキングするとLLMの品質が下がるのでは?」

場合によっては品質が低下する可能性があります。ただし、「田中太郎」を「{{NAME_1}}」に置き換えても、多くのタスク(コードレビュー、設計相談など)では品質への影響は限定的です。セキュリティと品質のトレードオフをタスクごとに判断してください。

「100%の検出は無理では?」

その通りです。多層防御の考え方と同じく、単一の対策で100%を目指すのではなく、複数の層でリスクを低減するアプローチが現実的です。

まとめ

  • 機密情報がLLMに渡る経路はプロンプトだけでなく、RAG・MCP・ログにも存在
  • 情報分類・マスキング・多層防御は、SEのセキュリティ知識が直接活かせる
  • リスク一覧表を基に、ハーネスの各層に防御策を組み込む
  • 100%の安全はないが、多層防御でリスクを管理可能なレベルにする

次回予告:プロンプト投入前のマスキング・復元フローを設計する

第20回では、今回整理したマスキングの基本設計を具体的な実装フローに落とし込みます。

具体的には以下の内容を扱います。

  • マスキング・復元フローの詳細設計
  • Pythonでのマスキングユーティリティ実装
  • マスキングルールの設定ファイル設計
  • テストケースの作成

「リスクは整理できたけど、実際にコードでどう実現するの?」という疑問に答える実装回です。ぜひお楽しみに。


連載: AIに仕事を奪われる不安から始めるハーネス作成入門
次回(第20回): プロンプト投入前のマスキング・復元フローを設計する

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?