経営者・非エンジニアの方へ:この記事は技術者向けです。AIツールのセキュリティリスクの全体像はこちらの記事をご覧ください。
AIコーディングツール「Claude Code」は、ファイル編集・コマンド実行・API呼び出しを自律的にこなす強力なツールです。しかし、その力はあなたのPCの権限そのもの。正しく制御しなければ、意図しないファイル削除、メール誤送信、機密情報の漏洩につながります。
本記事では、「禁止して終わり」ではなく、業務で安全に活用するための実践的なテクニックを7つ紹介します。
1. 外部への送信は「必ず確認」ルールで防ぐ
Claude Codeはメール送信、Slack通知、GitHub PRコメントなど、外部へメッセージを送る操作が可能です。最も危険なのは「このエラーをチームに共有して」のような曖昧な指示で、AIが勝手にメールやチャットを送ってしまうケースです。
対策1:CLAUDE.mdに「確認ルール」を書く
プロジェクトのルートに置く CLAUDE.md は、Claude Codeが毎回読み込む指示書です。ここに「送信前に必ず確認する」ルールを書いておけば、AIはそれを読み込んで従おうとします(ただし強制力はないため、Hooksとの併用を推奨します)。
# CLAUDE.md に追加する送信ルール
## 外部送信の絶対ルール
- メール送信・Slack通知・GitHub PR操作など外部に影響するアクションは、
実行前に必ず「送信先」「内容の要約」「実行コマンド」を表示して確認を取ること
- 確認なしに外部送信を実行することは禁止
- テスト送信が可能な場合は、まずテスト送信を提案すること
対策2:Hooks(フック)で送信コマンドを事前チェック
Hooks機能を使えば、特定のコマンド実行前にスクリプトで検証し、ブロックできます。PreToolUseイベントでBashコマンドを監視し、送信系コマンドが含まれる場合に警告を出す仕組みです。
// .claude/settings.json
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "bash .claude/hooks/check-external.sh"
}
]
}
]
}
}
フックスクリプトの例(exit code 2で実行をブロック):
#!/bin/bash
# .claude/hooks/check-external.sh
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command // empty')
# 送信系コマンドを検出
if echo "$CMD" | grep -qiE '(sendmail|smtp|curl.*slack|gh pr comment|gh issue)'; then
echo "外部送信コマンドを検出。手動で実行してください。" >&2
exit 2 # ブロック
fi
exit 0
対策3:テスト送信→本番送信の2ステップ運用
メール送信を自動化する場合は、まずテスト用アドレスに送信し、内容を確認してから本番送信というワークフローをCLAUDE.mdに定義しておくと安全です。
# CLAUDE.md に追加
## メール送信の手順
1. まず自分のアドレス(test@example.com)にテスト送信する
2. テスト結果を表示して確認を求める
3. 承認後に本番アドレスへ送信する
4. 送信完了後、送信先・件名・本文の要約を報告する
2. コマンドの暴走は「元に戻せる設計」で防ぐ
rm -rf や git push --force を禁止するだけでは不十分です。実務では「やり直せる」仕組みのほうが重要です。
チェックポイント機能を活用する
Claude Codeはファイルを編集する前に自動でスナップショットを取ります。万が一おかしな編集をされた場合、Escキーを2回押すだけで直前の状態に戻せます。これはGitとは別の独立した仕組みです。
危険なコマンドは禁止+安全な代替を許可
// .claude/settings.json
{
"permissions": {
"deny": [
"Bash(rm -rf *)",
"Bash(git push --force*)",
"Bash(git reset --hard*)",
"Bash(DROP TABLE*)"
],
"allow": [
"Bash(git status)",
"Bash(git diff*)",
"Bash(git add *)",
"Bash(npm run test*)",
"Bash(npm run build*)"
]
}
}
ポイント:deny(禁止)はallow(許可)より常に優先されます。allowに git * と書いても、denyに git push --force* があればforce pushはブロックされます。
CLAUDE.mdに「破壊前にコミット」ルールを入れる
# CLAUDE.md に追加
## 安全な作業ルール
- ファイルを大量に変更する前に、現在の状態をgit commitすること
- データベースを変更する前に、バックアップコマンドを先に実行すること
- 「元に戻せない操作」を行う前に、必ずユーザーに確認すること
3. 機密ファイルは「読ませない」のが最強の防御
Claude Codeはデフォルトで起動ディレクトリ内のすべてのファイルを読み取れます。.env(APIキー)、credentials.json(サービスアカウント秘密鍵)も例外ではありません。
「ちょっとこのエラー直して」と頼んだだけで、AIが文脈を理解するために.envを読む。その内容はAnthropicのサーバーに送信されます。
読み取り禁止ルールを設定する
// .claude/settings.json
{
"permissions": {
"deny": [
"Read(.env)",
"Read(.env.*)",
"Read(credentials/**)",
"Read(**/*secret*)",
"Read(~/.ssh/**)",
"Read(~/.aws/**)"
]
}
}
より安全な方法:環境変数で渡す
秘密鍵やAPIキーをファイルに保存するのではなく、環境変数として注入する方法がより安全です。Claude Codeはファイルのように一覧を「探しに行く」ことがないため、必要なときだけプログラム経由で参照されます。
# 起動時に環境変数を渡す(ファイルに保存しない)
export DB_PASSWORD="xxxxx"
claude
4. ネットワークは「許可リスト方式」で制御する
Claude Codeはローカルで動作するため、Bashコマンド(curl・wget等)を経由して同一LAN上のリソースにアクセスされる可能性があります。社内NAS、Kintone、管理画面——Bashコマンドで到達可能なものは、Claude Codeからも到達しえます。なお、サンドボックス機能を有効にすれば、OSレベルでネットワーク接続先を制限できます。
プライベートIPへの通信を禁止する
// .claude/settings.json
{
"permissions": {
"deny": [
"Bash(curl http://192.168.*)",
"Bash(curl http://10.*)",
"Bash(curl http://172.16.*)",
"Bash(ssh *)"
]
}
}
注意:上記のdenyルールは curl コマンドのみをブロックします。wget や python -c 経由のアクセスは別途denyルールの追加が必要です。より確実な対策として、サンドボックス機能の allowedDomains 設定でアクセス可能なドメインをホワイトリスト制限することを推奨します。macOSではSeatbelt、LinuxではBubblewrapという仕組みが使われます。
実務的な対策:開発用ネットワークを分離する
AI開発ツールを使うPCは、社内の基幹システム(会計・人事・顧客DB)とは別のネットワークセグメントに配置するのが理想です。VLANやゲストWi-Fiの活用も有効な手段です。
5. 「全許可モード」は管理者設定で封じる
Claude Codeには --dangerously-skip-permissions というフラグがあります。名前のとおり、すべての権限確認をスキップし、AIがファイル編集もコマンド実行もネットワーク通信も確認なしに実行します。
開発者が「確認が面倒だから」とこのフラグを使い始めると、暴走を止める最後の防波堤がなくなります。
管理者設定(Managed Settings)で無効化する
// 管理者が配布する設定ファイル(ユーザーは上書き不可)
{
"disableBypassPermissionsMode": "disable",
"allowManagedPermissionRulesOnly": true,
"allowManagedHooksOnly": true
}
この設定はManaged Settings(管理者設定)として配布することで、個々の従業員が無効化することはできません。組織のIT管理者が一元的にセキュリティポリシーを強制できます。
6. 従業員にClaude Codeを使わせるときの設定テンプレート
従業員がClaude Codeを使い始めるとき、最も危険なのは「デフォルト設定のまま使う」ことです。以下のテンプレートをチームで共有してください。
すぐ使えるスターター設定
// .claude/settings.json(プロジェクトに配置してgit管理する)
{
"permissions": {
"deny": [
"Read(.env)",
"Read(.env.*)",
"Read(credentials/**)",
"Read(~/.ssh/**)",
"Bash(rm -rf *)",
"Bash(git push --force*)",
"Bash(git reset --hard*)",
"Bash(curl http://192.168.*)",
"Bash(curl http://10.*)",
"Bash(sendmail *)",
"Bash(ssh *)"
],
"allow": [
"Read",
"Bash(git status)",
"Bash(git diff*)",
"Bash(git log*)",
"Bash(npm run test*)",
"Bash(npm run build*)"
]
}
}
導入時チェックリスト
- プロジェクトの
.claude/settings.jsonがgitに入っているか CLAUDE.mdに外部送信の確認ルールが書かれているか.envファイルの読み取りがdenyされているか--dangerously-skip-permissionsの使用が禁止されているか- PCのネットワーク環境が適切に分離されているか
- Claude Codeに送信されたコードの取り扱いポリシーを理解しているか
7. 「シャドーAI」が最大のリスク——勝手な導入を防ぐ
最大のリスクは技術的な問題ではなく、従業員が会社に無断でClaude Codeを導入することです。
Claude Codeは個人のAnthropicアカウントがあれば誰でもインストールできます。もし従業員が顧客データを含むプロジェクトで無断利用すると、ソースコード・設定ファイル・顧客情報がAnthropicのサーバーに送信される可能性があります。
組織として取るべき3つのアクション
1. AI利用ポリシーを策定する
- 使用を許可するプロジェクトの範囲を明確にする
- 顧客データ・個人情報を含むリポジトリでの使用を禁止する
- 「使ってはいけないもの」ではなく「こう使えば安全」を示す
2. Managed Settings(管理者設定)を全社展開する
管理者設定を使えば、従業員のClaude Codeに組織のセキュリティポリシーを強制適用できます。個人が設定を変更しても、管理者設定が常に優先されます。
3. ネットワーク監視でAIツールの利用状況を把握する
Anthropic APIへの通信(api.anthropic.com)をファイアウォールやプロキシのログで監視すれば、無断利用を検知できます。「禁止」ではなく「把握」が目的です。
まとめ:「禁止」ではなく「安全に使う」設計を
AIコーディングツールは「使わない」という選択肢はもうありません。競合他社が使い始めれば、開発速度の差は開く一方です。
重要なのは「禁止」ではなく「安全に使う仕組み」を作ることです。
| リスク | 実践テクニック | 設定時間 |
|---|---|---|
| メール誤送信 | CLAUDE.mdに確認ルール+テスト送信→本番の2ステップ | 5分 |
| コマンド暴走 | deny+チェックポイント+「破壊前にコミット」ルール | 5分 |
| 機密ファイル | .envのdenyルール+環境変数注入 | 3分 |
| LAN内アクセス | Bashコマンドdeny+サンドボックス+ネットワーク分離 | 10分 |
| 全許可モード | 管理者設定で無効化 | 3分 |
| 無断導入 | AI利用ポリシー+ネットワーク監視 | 1日 |
最初の一歩は、プロジェクトの .claude/settings.json にdenyルールを追加することです。この記事のスターター設定テンプレートをコピーすれば、5分で完了します。
AIツールの「便利さ」と「危険さ」は表裏一体。安全に使いこなす企業だけが、AIの恩恵を最大限に受けられます。
Claude Codeのセキュリティ設計でお困りなら
ネクスト・アクションでは、2,000サイト以上のセキュリティ復旧・診断実績をもとに、AIツール導入時のセキュリティ設計もサポートしています。

