セキュリティ完全ガイド
中級者向けパーミッション、サンドボックス、秘密情報の守り方
なぜセキュリティが大事?(日常の例で)
Claude Code は便利な「万能ナイフ」のようなもの。
・ ファイルを読み書きできる = 間違ったファイルを消す可能性
・ コマンドを実行できる = 危険なコマンドを打つ可能性
・ ネットに接続できる = 情報が外に漏れる可能性
正しく設定すれば安全に使えます。ここではその方法を説明します。
3つの権限レベル(マンションのセキュリティで例えると)
Allow(許可) = 誰でも入れるロビー ファイルを読む、検索する等の安全な操作 Ask(確認) = 受付で名前を書いて入るフロア Git操作、プログラムの実行等(毎回あなたに確認) Deny(拒否) = 立入禁止エリア 危険なコマンド、秘密ファイルへのアクセス等 ※ 設定していない操作 = 自動的にAsk(確認)になる(安全側)
設定のやり方
// .claude/settings.json に書く(Claude の設定ファイル)
{
// permissions = 「何を許可し、何を禁止するか」のルール
"permissions": {
// allow = 確認なしでOKな操作(ロビーのように自由に入れる)
"allow": [
"Read", // ファイルを読む
"Glob", // ファイルを検索する
"Grep", // テキストを検索する
"Bash(git:*)", // Git操作(バージョン管理)全般を許可
"Bash(npm test:*)" // テストの実行を許可
],
// deny = 絶対にダメな操作(立入禁止エリア)
"deny": [
"Bash(curl:*)", // 外部との通信をブロック
"Read(.env*)", // 秘密情報ファイルの読み取りを禁止
"Bash(rm -rf:*)" // ファイルの一括削除を禁止
]
}
}用語解説
*(アスタリスク)= 「何でもOK」という意味。Bash(git:*) は「gitで始まるすべてのコマンド」・
.env = 環境変数ファイル。パスワードやAPIキーが書かれていることが多い・
rm -rf = ファイルやフォルダを強制的に全部消す危険なコマンド・
curl = インターネットからデータを取得するコマンドサンドボックス(隔離された安全な環境)
サンドボックス = 子供の砂場
ファイルの隔離: プロジェクトフォルダの外にファイルを書けなくする
ネットワークの隔離: 許可したWebサイトにだけ通信を許可する
秘密情報(パスワード等)を守る方法
| やってはいけないこと | やるべきこと |
|---|---|
パスワードをコードに直接書くpassword = "abc123" | 環境変数に保存するpassword = os.environ["DB_PASSWORD"] |
| .env ファイルを Git にアップロード | .gitignore に .env を追加して除外する |
| Claude に「パスワードは abc123 だよ」と直接伝える | 「.env ファイルの DB_PASSWORD を使って」と参照で伝える |
用語解説
・ .gitignore = 「Git にアップロードしないファイル」を指定するリスト
・ API キー = 外部サービスを利用するための「鍵」。漏れると他人にサービスを使われる
Claude Code に組み込まれた防御機能
Claude Code は以下の保護を自動的に行っています:
| 防御機能 | 何をしてくれる? |
|---|---|
| 疑わしいコマンドの検出 | 許可済みでも怪しいパターンなら再確認を求める |
| Web取得コンテンツの隔離 | Webから取得した内容は別の場所で分析し、メインの会話に混ぜない |
| 初回の信頼確認 | 初めてのプロジェクトでは「このプロジェクトを信頼しますか?」と確認 |
| コマンド注入の防止 | 悪意のある入力でシステムが乗っ取られるのを防ぐ |
Claude Code Security(2026年新機能)
自動セキュリティスキャン
何ができる?
• コードベース全体をスキャンして脆弱性を検出
• 修正パッチを自動提案(人間がレビューして適用)
• GitHub Actions と連携してPR ごとに自動レビュー
X投稿: Claude 公式
Auto Mode を安全に使う
2026年3月に追加された Auto Mode は、「毎回承認する面倒さ」と「全承認の危険さ」の間を取る新しい権限モードです。開発者は実際のところ権限プロンプトの約 93% を承認しており、Auto Mode はその承認疲れを解消しつつ、本当に危険な操作だけをブロックします。
6つの権限モードの全体像
権限モード(Claude にどこまで操作を任せるかの設定)は全部で6つあります。3つは Shift+Tab で切り替え可能、残り3つは CLI(コマンドラインインターフェース=ターミナルでの操作)や設定ファイルで設定します。
| モード | 動作 | 切り替え方法 | 安全度 |
|---|---|---|---|
| Default | すべての操作で「いいですか?」と確認してくる(最も慎重) | Shift+Tab | 高 |
| acceptEdits | ファイルの書き換えはOK、ターミナルのコマンド実行は確認が必要 | Shift+Tab | 中 |
| Plan | 計画を立てるだけで何も変更しない(相談モード) | Shift+Tab | 最高 |
| Auto(新機能) | AI が「この操作は安全か危険か」を自動判断し、安全なものだけ自動実行 | claude --enable-auto-mode | 中〜高 |
| dontAsk | 事前に「これはOK」と登録したツールだけ自動実行、それ以外はブロック | CLI / 設定ファイル | 中 |
| bypassPermissions | すべての安全チェックを無効化(上級者・隔離環境専用) | CLI(コンテナ/VM(仮想マシン)限定) | 低 |
@umino_chibi 氏の解説: 4つの権限モードの詳細比較
@umino_chibi 氏の記事では、Claude Code の権限モードを4つに分類して詳しく比較しています。それぞれの違いを理解することで、状況に応じた最適なモード選択ができます。
| 比較項目 | Default | Auto-Accept (Shift+Tab) | Auto Mode (新機能) | --dangerously- skip-permissions |
|---|---|---|---|---|
| 自動承認の範囲 (確認なしで実行できる操作) | なし(毎回確認) | ファイル編集のみ | AIが安全か危険か判断して決める | すべて確認なしで実行 |
| プロンプトインジェクション防御 (悪意ある命令の混入を防ぐ仕組み) | 人間が確認 | なし | 2層の防御あり | なし |
| トークン消費 (使用量=料金への影響) | 通常 | 通常 | やや増加(安全判定に追加コスト) | 通常 |
| 推奨用途 | 重要な作業 | 単純な編集作業 | 隔離環境での長時間タスク | CI/CD(自動ビルド・デプロイ)、コンテナ内 |
| 有効化方法 | 初期状態 | Shift+Tab | claude --enable-auto-mode → Shift+Tab | --dangerously-skip-permissions |
Auto Mode のセキュリティアーキテクチャ(2層防御)
たとえると: 空港のセキュリティチェックのようなもの。手荷物検査(入口)とボディチェック(出口)の2段階で危険物を見つけます。Auto Mode も同じで、分類器モデル(安全か危険かを判断する専用AI)が各操作を実行前にリアルタイムで評価します。他のモードにはない2層の防御構造が組み込まれています:
Claude がファイルやテキストを読む前に、悪意のある命令が紛れ込んでいないかスキャンします。たとえば、ダウンロードしたコードに「パスワードを外部に送信しろ」という隠し命令が仕込まれていた場合、この層で事前にブロックされます。
Claude が何かを実行しようとするたびに、別の専用AI(トランスクリプト分類器)が「この操作は本当に安全?」と2段階でチェックします:
・ 高速チェック: まず瞬時に「安全/危険」をざっくり判定
・ 詳細チェック: 判断が難しい場合、「なぜ危険なのか」を理由付きで詳しく分析
安全と判断された操作のみ自動実行され、危険な操作はより安全な方法に誘導されます。
公式パフォーマンス指標
| 指標 | 数値 | 意味 |
|---|---|---|
| 誤検知率 (安全なのに「危険!」と止めてしまう割合) | 0.4% | ほぼ誤報なし。安全な操作を邪魔することはほとんどない |
| 見逃し率 (危険なのに見逃してしまう割合) | 17% | 約6回に1回は危険な操作を見逃す可能性あり。ただし大部分は「ユーザーが同意済みと誤解釈するケース」であり、完全な攻撃の見逃しではない。過信は禁物 |
Auto Mode の注意点
安全に使うためのベストプラクティス:
・ 有効化前に必ず Git コミットを行う:
git add -A && git commit -m "checkpoint before auto mode"・ 本番環境から隔離された環境で使用する
・ allow/deny リストと Hooks を併用して「多層的な防御」を構築する
・ 対応モデル: Claude Sonnet 4.6 および Opus 4.6
Auto Mode の有効化
# CLI から有効化(初回のみ必要)
claude --enable-auto-mode
# セッション中に Shift+Tab を押して Auto Mode を選択
# (Default → acceptEdits → Auto の順で切り替わります)
# VS Code / Desktop: 設定 → Claude Code → Auto Mode をトグル
# 組織として Auto Mode を無効化する場合:
# managed-settings.json に以下を追加
# { "disableAutoMode": "disable" }Windows ユーザーへの注意
Windows を使っている方へ
・
\\ で始まるパスへのアクセスを許可しないでください・ これらを許可すると、権限チェックをすり抜ける通信が発生する可能性があります
セキュリティ設定のベストプラクティス 10選(2026年最新版)
Claude Code はファイル操作やコマンド実行ができる強力なツールです。そのため、セキュリティ設定を正しく行うことが不可欠です。以下の10項目は、個人利用からチーム導入まで段階的に適用できるベストプラクティスです。
1. サンドボックスを有効化する(最重要)
これは何? サンドボックス(子供の砂場のように、中で何をしても外に影響しない安全な環境)を有効にする設定です。
なぜ必要? Claude が実行するコマンドがパソコン全体に影響しないよう、操作範囲をプロジェクトフォルダ内に限定します。家の中で火を使うときに換気扇を回すようなもので、最も基本的な安全対策です。
{
"sandbox": {
"enabled": true
}
}2. サンドボックスの抜け道をブロックする
これは何? サンドボックスの外でコマンドを実行できてしまう「裏口」を塞ぐ設定です。
なぜ必要? せっかく砂場を作っても、柵に穴が空いていたら意味がないですよね。この設定で裏口を確実に閉じます。
{
"sandbox": {
"allowUnsandboxedCommands": false
}
}3. 危険なコマンドを拒否リストに登録する
これは何? 「これだけは絶対に実行させない」というコマンドのブラックリストです。
なぜ必要? 包丁で料理はするけど、危険な使い方(ファイル全削除、外部への無断通信など)は禁止するようなもの。rm -rf(ファイル全削除)、curl/wget(外部通信)、git push(変更の外部公開)、chmod 777(ファイルのアクセス制限を全解除)など、破壊的なコマンドをブロックします。deny(拒否)ルールは最優先で適用されます。
{
"permissions": {
"deny": [
"Bash(rm -rf *)",
"Bash(curl *)",
"Bash(wget *)",
"Bash(git push *)",
"Bash(chmod 777 *)"
]
}
}4. 機密ファイルへのアクセスをブロックする
これは何? パスワードや秘密鍵が書かれたファイルを Claude が読めないようにする設定です。
なぜ必要? 金庫の暗証番号が書かれたメモを、アルバイトに見せないのと同じです。.env(パスワードなどの秘密情報ファイル)、SSH鍵(サーバーに接続するための秘密の鍵ファイル)、PEM証明書(暗号通信に使う証明書)などへのアクセスを拒否します。
{
"sandbox": {
"filesystem": {
"denyRead": ["~/.aws/credentials", "~/.ssh", ".env*"]
}
}
}5. ネットワークアクセスを制限する
これは何? Claude が通信できるWebサイトを「許可リスト」で限定する設定です。
なぜ必要? 子供のスマホに「このサイトだけアクセスOK」と制限をかけるのと同じ。万が一、悪意のある命令(プロンプトインジェクション攻撃)が紛れ込んでも、許可されていないサイトにデータを送信することができなくなります。
{
"sandbox": {
"network": {
"allowedDomains": ["github.com", "*.npmjs.org"]
}
}
}6. Bypass Permissions モードを無効化する
これは何? 「全セキュリティを無効化する裏技コマンド」を使えなくする設定です。
なぜ必要? 家のセキュリティシステムに「全部オフにするマスターキー」があったら危険ですよね。--dangerously-skip-permissions フラグ(名前からして「危険」と書いてある)が有効だと、すべての安全チェックが完全にスキップされます。チーム環境ではこれを組織レベルで無効化し、誰も使えないようにしましょう。
{
"permissions": {
"disableBypassPermissionsMode": "disable"
}
}7. PreToolUse Hooks でカスタム安全チェックを追加する
これは何? Claude が何かを実行する「直前」に、あなたが作った安全チェックプログラムを自動実行する仕組みです。
なぜ必要? 会社独自のルール(例:「本番環境には絶対に触るな」)を自動で強制するため。たとえると、工場の機械に「安全センサー」を追加設置するようなもの。フック(自動実行されるチェックプログラム)が exit code 2(「ダメ!」の信号)を返すと操作がブロックされます。
// .claude/settings.json(Claude の設定ファイル)
{
"hooks": {
// PreToolUse = Claude がツールを使う「前」に実行される
"PreToolUse": [
{
// Bash コマンドを実行しようとしたときだけチェック
"matcher": "Bash",
"hooks": [
{
"type": "command",
// 安全チェック用のスクリプトを実行
"command": ".claude/hooks/validate-command.sh"
}
]
}
]
}
}バリデーションスクリプトの例(.claude/hooks/validate-command.sh):
#!/bin/bash # Claude が実行しようとしているコマンドを受け取る COMMAND=$(jq -r '.tool_input.command' < /dev/stdin) # ファイル全削除コマンド(rm -rf)が含まれていたらブロック if echo "$COMMAND" | grep -q 'rm -rf'; then echo "Blocked: rm -rf commands are not allowed" >&2 exit 2 # exit 2 = 「ダメ!」の信号。この操作をブロックする fi # 本番環境(prod)への操作が含まれていたらブロック if echo "$COMMAND" | grep -q 'prod'; then echo "Blocked: production access is not allowed" >&2 exit 2 # 同じく「ダメ!」の信号 fi # 上のどちらにも該当しなければ、操作を許可する exit 0 # exit 0 = 「OK!」の信号
8. 権限を定期的に監査する
これは何? 「今、Claude に何を許可しているか」を定期的に確認する習慣です。
なぜ必要? スマホのアプリに「位置情報を許可しますか?」と聞かれるたびに「はい」を押し続けると、いつの間にか全アプリが位置情報にアクセスできる状態になりますよね。Claude でも同じことが起きます。これを「権限クリープ(許可がじわじわ増えること)」と呼びます。/permissions で定期的に確認しましょう。
# Claude Code セッション中に実行: > /permissions # 現在の権限ルール一覧を表示 > /status # 設定ファイルの場所と内容を確認 # 不要な「Always allow」ルールを発見したら、 # .claude/settings.json から手動で削除する
9. 開発コンテナを使用する
これは何? Claude Code を「仮想的な別のパソコン」の中で実行する方法です。
なぜ必要? たとえると、実験室で防護服を着て作業するようなもの。万が一事故が起きても、実験室の外には被害が及びません。コンテナ(隔離された仮想環境)内では、あなたの本物のパソコンのファイルには一切触れないため、最も安全な方法です。Anthropic が公式の devcontainer(開発用コンテナ)テンプレートを提供しています。
# Anthropic 公式の devcontainer リファレンス実装を取得: git clone https://github.com/anthropics/claude-code.git # devcontainer/ ディレクトリに設定テンプレートがあります # VS Code の Dev Containers 拡張機能で開くと # 自動的に隔離環境が構築されます
10. チーム向け Managed Settings を強制する
これは何? 会社全体で統一したセキュリティルールを強制する仕組みです。
なぜ必要? 会社のIT部門がパソコンに「このソフトはインストール禁止」と強制するのと同じ。個人がルールを変更できないようにすることで、チーム全体の安全性を保証します。Server-managed(クラウド経由で管理)または Endpoint-managed(MDM(会社のデバイス管理ツール)で配信)の2つの方法があります。
設定ファイルの配置場所:
- macOS:
/Library/Application Support/ClaudeCode/managed-settings.json - Linux:
/etc/claude-code/managed-settings.json - Windows:
C:\Program Files\ClaudeCode\managed-settings.json
// 組織ポリシーの完全な設定例:
{
"permissions": {
"disableBypassPermissionsMode": "disable",
"allowManagedPermissionRulesOnly": true,
"allowManagedHooksOnly": true,
"allowManagedMcpServersOnly": true
},
"sandbox": {
"enabled": true,
"allowUnsandboxedCommands": false,
"network": {
"allowManagedDomainsOnly": true,
"allowedDomains": ["github.com", "*.npmjs.org"]
}
}
}各設定項目の意味(ひとことで言うと):
disableBypassPermissionsMode― 「全セキュリティ無効化」コマンドの使用を禁止allowManagedPermissionRulesOnly― 個人が勝手に許可ルールを追加できなくする(管理者のルールだけ有効)allowManagedHooksOnly― 管理者が承認したフック(自動実行プログラム)のみ動作を許可allowManagedMcpServersOnly― 管理者が許可した外部ツール接続のみ使えるallowManagedDomainsOnly― 管理者が許可したWebサイトにしか通信できない
3層防御アーキテクチャ
第1層 - サンドボックス(設定1〜2, 5): Claude の操作範囲を「砂場の中」に限定。ファイルとネットワークの両方を隔離します。
第2層 - パーミッション(設定3〜4, 6): 「これはOK、これはダメ、これは確認」というルールで操作を制御。拒否ルールが最優先。
第3層 - Hooks(設定7): あなたが書いたチェックプログラムで、AIの判断に依存しない100%確実な制御。
導入の順序: まず設定1〜4を基本として導入し、その後チーム開発の必要に応じて5〜10を段階的に追加するのが推奨されています。