Security Complete Guide
中級者向けPermissions, sandboxing, and secret management
なぜセキュリティが大事?(日常の例で)
Claude Code は便利な「万能ナイフ」のようなもの。
・ ファイルを読み書きできる = 間違ったファイルを消す可能性
・ コマンドを実行できる = 危険なコマンドを打つ可能性
・ ネットに接続できる = 情報が外に漏れる可能性
正しく設定すれば安全に使えます。ここではその方法を説明します。
3つの権限レベル(マンションのセキュリティで例えると)
Allow(許可) = 誰でも入れるロビー ファイルを読む、検索する等の安全な操作 Ask(確認) = 受付で名前を書いて入るフロア Git操作、プログラムの実行等(毎回あなたに確認) Deny(拒否) = 立入禁止エリア 危険なコマンド、秘密ファイルへのアクセス等 ※ 設定していない操作 = 自動的にAsk(確認)になる(安全側)
設定のやり方
// .claude/settings.json に書く
{
"permissions": {
"allow": [
"Read", // ファイルを読む
"Glob", // ファイルを検索する
"Grep", // テキストを検索する
"Bash(git:*)", // Git操作(バージョン管理)
"Bash(npm test:*)" // テストの実行
],
"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 Code には6つの権限モードがあり、3つは Shift+Tab で切り替え可能、残り3つは CLI やコンフィグで設定します。
| モード | 動作 | 切り替え方法 | 安全度 |
|---|---|---|---|
| Default | 初回ツール使用時に承認を要求(保守的) | Shift+Tab | 高 |
| acceptEdits | ファイル編集は自動承認、Bashコマンドは承認要求 | Shift+Tab | 中 |
| Plan | 分析のみ、変更は一切実行しない | Shift+Tab | 最高 |
| Auto(新機能) | 分類器モデルがリスク評価し、安全な操作のみ自動実行 | claude --enable-auto-mode | 中〜高 |
| dontAsk | allow ルールで事前承認されたツールのみ実行 | CLI / 設定ファイル | 中 |
| bypassPermissions | ほぼ全ての権限チェックをスキップ | CLI(コンテナ/VM限定) | 低 |
Auto Mode の仕組み
Auto Mode では、分類器モデルが各操作を実行前にリアルタイムで評価します。評価の3つの軸は:
- 破壊的操作: ファイルの一括削除、本番データベースへの変更など
- 機密データ露出: 秘密情報の読み取りや外部送信のリスク
- 悪意のあるコード実行: プロンプトインジェクション等による不正なコマンド実行
安全と判断された操作は自動実行され、危険と判断された操作は代替アプローチに誘導されます。繰り返し危険な操作を試みた場合は、ユーザーへの確認プロンプトが表示されます。
Auto Mode の注意点
Auto Mode の有効化
# CLI から有効化 claude --enable-auto-mode # VS Code / Desktop: 設定 → Claude Code → Auto Mode をトグル
Windows ユーザーへの注意
Windows を使っている方へ
・
\\ で始まるパスへのアクセスを許可しないでください・ これらを許可すると、権限チェックをすり抜ける通信が発生する可能性があります
セキュリティ設定のベストプラクティス 10選(2026年最新版)
Claude Code はファイル操作やコマンド実行ができる強力なツールです。そのため、セキュリティ設定を正しく行うことが不可欠です。以下の10項目は、個人利用からチーム導入まで段階的に適用できるベストプラクティスです。
1. サンドボックスを有効化する(最重要)
Bash コマンドを OS レベルで隔離し、ファイルシステムやネットワークへのアクセスを制限します。これが最も重要な設定であり、必ず最初に有効化してください。
{
"sandbox": {
"enabled": true
}
}2. サンドボックスの抜け道をブロックする
dangerouslyDisableSandbox パラメータによるサンドボックス外でのコマンド実行を防止します。デフォルトの抜け道を塞ぎましょう。
{
"sandbox": {
"allowUnsandboxedCommands": false
}
}3. 危険なコマンドを拒否リストに登録する
rm -rf、curl、wget、git push、chmod 777 など、破壊的または危険なコマンドをブロックリストに追加します。評価順序は deny → ask → allow なので、deny ルールが最優先されます。
{
"permissions": {
"deny": [
"Bash(rm -rf *)",
"Bash(curl *)",
"Bash(wget *)",
"Bash(git push *)",
"Bash(chmod 777 *)"
]
}
}4. 機密ファイルへのアクセスをブロックする
.env、認証情報ファイル、SSH鍵、PEM証明書などへのアクセスを拒否します。ファイル読み取りツールと Bash の両方でブロックすることが重要です。
{
"sandbox": {
"filesystem": {
"denyRead": ["~/.aws/credentials", "~/.ssh", ".env*"]
}
}
}5. ネットワークアクセスを制限する
ホワイトリスト方式でドメインフィルタリングを実装します。これにより、プロンプトインジェクション攻撃による不正なデータ送信を防止できます。
{
"sandbox": {
"network": {
"allowedDomains": ["github.com", "*.npmjs.org"]
}
}
}6. Bypass Permissions モードを無効化する
--dangerously-skip-permissions フラグを恒久的に無効化します。チーム環境では必須で、Managed Settings(組織レベル)に設定することでユーザーによる上書きを防ぎます。
7. PreToolUse Hooks でカスタム安全チェックを追加する
ツール実行前にカスタムバリデーションスクリプトを実行し、特定のパターンをブロックします。組織固有のセキュリティルール(本番環境へのアクセス防止など)をデフォルトの保護を超えて追加できます。フックがexit code 2を返すと操作がブロックされます。
8. 権限を定期的に監査する
/permissions コマンドでアクティブな権限一覧を確認し、/status で設定ファイルを検証します。「Always allow」ルールが意図せず蓄積する「権限クリープ」を定期的にチェックしましょう。
9. 開発コンテナを使用する
Claude Code を隔離されたコンテナ内で実行し、ファイアウォール制御とホストマシンからの分離を確保します。これは「最もセキュアな方法」であり、Anthropic が公式の devcontainer リファレンス実装を提供しています。
10. チーム向け Managed Settings を強制する
Server-managed(クラウドベース)または Endpoint-managed(MDM)でセキュリティポリシーを一元管理します。最も高い優先度で適用され、ユーザーやプロジェクトレベルの設定による上書きを防止します。
disableBypassPermissionsMode― パーミッションスキップを禁止allowManagedPermissionRulesOnly― 管理者が定義したルールのみ有効allowManagedDomainsOnly― 管理者が許可したドメインのみ通信可