AI業務活用 2026.04.19

生成AI業務利用で情報漏えい防止|5つのルールとChatGPT・Claude設定方法

タグ:生成AI / 情報セキュリティ / 業務効率 / 企業ルール / プライバシー

なぜ業務でのAI利用にルールが必要か

2026年現在、ChatGPTやClaudeを業務で使うことが当たり前になりつつあります。一方で、「顧客データをそのままプロンプトに貼った」「社内の未発表情報をAIに相談した」という事例が増えています。

便利さのあまり入力してしまった情報は、AIサービスのサーバーに送られます。無料プランでは学習データとして使用される可能性があり、有料プランでも外部サーバーに情報が渡ることには変わりありません。

本記事では、明日から実装できる5つのルールと、ChatGPT・Claudeの安全設定方法を解説します。

ルール1:入力禁止情報のカテゴリを決める

最初にして最重要です。以下を参考にカテゴリを決めてください:

情報カテゴリリスク
個人情報氏名+住所、顧客メール、電話番号個人情報保護法違反
機密情報未発表製品名、M&A交渉、価格戦略情報漏えい・競合利用
認証情報APIキー、パスワード、トークンアカウント乗っ取り
財務情報未公開決算、取引金額、原価インサイダーリスク
個人の医療情報病名、処方薬、診断結果要配慮個人情報違反

入力OKの情報例

  • 架空の事例・ダミーデータ(実名を変えたもの)
  • 公開済みの資料・プレスリリース
  • 技術的な質問(コード・アルゴリズム)で個人情報を含まないもの
  • 社内ルール・手続きの確認(機密度の低いもの)

ルール2:匿名化・抽象化してから入力する

顧客の事例をAIに相談したい場合、個人情報を匿名化してから入力します:

# ❌ そのまま入力(危険)
「田中太郎様(03-xxxx-xxxx)から、2026年3月の請求書45万円について問い合わせがあり...」

# ✅ 匿名化して入力
「顧客Aから、先月の請求書(40万円台)について問い合わせがあり...
以下のような返答文を作成してください:」

数値もざっくり変えるのが安全です(「45万円」→「40万円台」)。

ルール3:ChatGPT・Claudeの学習設定をオフにする

ChatGPT の設定

設定 → データコントロール
→ 「モデルトレーニングのためにデータを使用する」をオフ

または Teams・Enterprise プランを利用する(デフォルトで学習に使用されない)。

Claude の設定

claude.ai → プロフィール設定 → プライバシー
→ 会話データの使用方法を確認

Claude for Work(ビジネスプラン)では組織の会話はトレーニングに使用されません。

API経由での利用(最も安全)

# APIキーを使って直接Anthropic APIを呼び出す場合
# 利用規約上、APIからの入力はデフォルトでトレーニングに使用されません
import anthropic
import os

client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])

response = client.messages.create(
    model="claude-haiku-4-5-20251001",
    max_tokens=1024,
    system="あなたは社内業務支援AIです。入力された情報を社外に開示しないでください。",
    messages=[{
        "role": "user",
        "content": "以下の文章を要約してください:[ここに内容]"
    }]
)

ルール4:AI利用ポリシーを文書化する

個人の判断に任せていると、チーム内でバラバラな使われ方をします。最低限以下を文書化してください:

# 生成AI利用ポリシー(テンプレート)

## 承認済みサービス
- ChatGPT Team(部署単位で契約)
- Claude for Work
- ※ 個人アカウントでの業務利用は禁止

## 入力禁止情報
- 顧客の個人情報(氏名・連絡先・購入履歴)
- 社員の給与・評価情報
- 未公開の製品・戦略情報
- APIキー・パスワード等の認証情報
- 財務未公開情報

## 入力可能な情報
- 公開済みの情報・一般的な技術情報
- 匿名化済みのサンプルデータ
- 社内規程・手続きの確認(機密度低のもの)

## 違反時の対応
1. 即座に該当の会話を削除
2. セキュリティ担当者に報告
3. 状況に応じて個人情報保護対応を実施

ルール5:出力を「たたき台」として扱う

AIの出力は検証なしに本番・顧客向けに使わないことが原則です:

用途注意点
文章の下書き事実確認・数値確認を必ずする
コード生成セキュリティレビュー・テストを通す
データ分析ハルシネーション(事実誤認)がないか確認
法律・税務の相談専門家の確認なしに依拠しない
顧客向け回答文担当者が最終確認・承認する

入力前チェックスクリプト(開発者向け)

APIを使った社内ツールを構築する際に、入力内容をスクリーニングする例:

# input_screener.py
import re

# 個人情報パターン(正規表現)
PATTERNS = {
    "メールアドレス": r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}',
    "電話番号": r'0\d{1,4}[-\s]?\d{1,4}[-\s]?\d{4}',
    "APIキー(Anthropic)": r'sk-ant-[a-zA-Z0-9_-]{40,}',
    "APIキー(OpenAI)": r'sk-[a-zA-Z0-9]{40,}',
    "クレジットカード番号": r'\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b',
}

def screen_input(text: str) -> list[str]:
    """入力テキストに含まれる可能性のある機密情報を検出する"""
    warnings = []
    for label, pattern in PATTERNS.items():
        if re.search(pattern, text):
            warnings.append(f"⚠️ {label} が含まれている可能性があります")
    return warnings

def safe_ai_input(text: str) -> str:
    """スクリーニング後に問題がなければAIに送信するラッパー"""
    warnings = screen_input(text)
    if warnings:
        print("入力内容に注意が必要な情報が含まれています:")
        for w in warnings:
            print(f"  {w}")
        confirm = input("送信しますか? (yes/no): ")
        if confirm.lower() != "yes":
            raise ValueError("ユーザーがキャンセルしました")
    return text


# 使用例
try:
    user_text = "田中太郎 tanaka@example.com に送るメールを作って"
    screened = safe_ai_input(user_text)
    # screened を AI API に送信する
except ValueError:
    print("送信をキャンセルしました")

あわせて読みたい

参考ソース