はじめに
「Claude Codeに任せたら、触ってほしくないファイルまで変更されないか心配」
「どこまで自律的に動いていいか、制限をかけたい」
「本番サーバーで使っても大丈夫なの?」
Claude Codeは非常に強力なツールですが、その分「意図しない変更が広範囲に及ぶリスク」もあります。この記事では、Claude Codeのパーミッション設定と安全に使うためのセキュリティ対策を解説します。
前回の第8回:MCP連携まで読んできた方は、活用の幅が広がった分、安全対策も強化しておきましょう。
目次
- Claude Codeのパーミッションモードを理解する
- 許可・禁止する操作を設定する
- 本番環境での利用における注意点
- APIキーとシークレットの安全な管理
- CLAUDE.mdによるアクセス制限
- セキュリティチェックリスト
- まとめ
1. Claude Codeのパーミッションモードを理解する
3つのパーミッションモード
Claude Codeには作業の自律性に応じた3つのモードがあります。
| モード | 概要 | 向いているケース |
|---|---|---|
| デフォルト(確認あり) | ファイル編集・コマンド実行前に毎回確認を求める | 初めて使う場合・重要なプロジェクト |
| 自動承認モード | 指定した操作は確認なしで実行 | 慣れてきた開発者・ローカル環境のみ |
| 読み取り専用モード | ファイルの読み込みのみ許可・変更不可 | コードレビュー・分析のみの場合 |
デフォルトモード(推奨)
デフォルトでは、以下の操作の前に確認ダイアログが表示されます。
- ファイルの新規作成・編集・削除
- コマンドの実行
- Gitの操作(コミット・プッシュなど)
初めてClaude Codeを使う方、本番に近い環境で使う方は必ずデフォルトモードで使用してください。
2. 許可・禁止する操作を設定する
設定ファイルで操作を制限する
.claude/settings.json に許可・禁止する操作を記述できます。
{
"permissions": {
"allow": [
"Bash(git:*)",
"Bash(npm:*)",
"Bash(wp:*)"
],
"deny": [
"Bash(rm:-rf:*)",
"Bash(sudo:*)",
"Bash(curl:*)",
"WebFetch(*)"
]
}
}
よく使う許可・禁止パターン
WordPress開発で推奨する禁止設定:
{
"permissions": {
"deny": [
"Bash(rm:-rf:*)",
"Bash(sudo:*)",
"Bash(chmod:777:*)",
"Bash(curl:*)",
"Bash(wget:*)"
]
}
}
rm -rfの禁止:ファイルの一括削除を防ぐsudoの禁止:管理者権限の実行を防ぐchmod 777の禁止:危険なパーミッション変更を防ぐcurl / wgetの禁止:意図しない外部ファイルのダウンロードを防ぐ
3. 本番環境での利用における注意点
原則:本番環境では直接使わない
Claude Codeはローカル開発環境での使用を前提に設計されています。本番サーバーのファイルに対してClaude Codeを直接使用することは強く推奨しません。
理由:
- 変更が即座に本番に反映されるリスク
- ロールバックが難しい
- 本番データベースへの意図しない操作のリスク
安全な本番デプロイのフロー
ローカル環境での開発(Claude Code使用)
↓
ステージング環境でテスト
↓
レビュー・承認
↓
本番環境へのデプロイ(Git経由)
Claude Codeを使うのは「ローカル環境での開発」フェーズのみに限定してください。
.envファイルと認証情報の保護
Claude Codeがプロジェクトを読み込む際に .env ファイルも参照できます。APIキー・データベースパスワードなどの認証情報が含まれる場合は適切に対処が必要です。
# .claude/settings.json で .envの参照を禁止する
{
"ignorePatterns": [
".env",
".env.*",
"wp-config.php",
"*.pem",
"*.key"
]
}
4. APIキーとシークレットの安全な管理
絶対にやってはいけないこと
- CLAUDE.mdにAPIキーや認証情報を書く
- 指示文の中にAPIキーを直接貼り付ける
- 認証情報を含む設定ファイルをGitにコミットする
安全な管理方法
環境変数を使う:
export OPENAI_API_KEY="your-key-here"
export DB_PASSWORD="your-password-here"
Claude Codeへの指示の中では環境変数名のみを使います。
> OpenAI APIキーは環境変数OPENAI_API_KEYに設定してあります。
この環境変数を使ってAPIリクエストを実装してください。
5. CLAUDE.mdによるアクセス制限
CLAUDE.mdに禁止事項を明示的に記述することで、Claude Codeがそのルールを守った上で作業します。
# 禁止事項(重要)
## 絶対に触れないファイル
- wp-config.php
- .env
- .env.*
- *.pem / *.key
- /uploads/ ディレクトリ内のファイル
## 禁止する操作
- プラグインファイルの直接編集(wp-content/plugins/以下の既存ファイル)
- データベースへの直接操作($wpdbのdeleteは使用禁止)
- sudo権限を必要とするコマンドの実行
- rm -rf コマンドの使用
## 本番環境での制限
- このプロジェクトはローカル開発環境専用です
- 本番環境のファイルへの直接操作は禁止
6. セキュリティチェックリスト
Claude Codeを安全に使うためのチェックリストです。
導入時のチェック
- [ ] ローカル開発環境専用であることを確認した
- [ ]
.claude/settings.jsonに禁止操作を設定した - [ ] CLAUDE.mdに禁止ファイル・操作を明記した
- [ ]
.env・wp-config.phpをignorePatternsに追加した
作業前のチェック
- [ ] Gitで最新の状態をコミットしてバックアップした
- [ ] 本番環境ではなくローカル環境で作業していることを確認した
- [ ] 指示文に認証情報が含まれていないことを確認した
作業中のチェック
- [ ] Claude Codeが提示する計画を必ず確認してから承認している
- [ ] 意図しないファイルが変更対象に含まれていないか確認している
定期的なチェック
- [ ] Claude Codeのバージョンを最新に保っている
- [ ] CLAUDE.mdの禁止事項が現在のプロジェクトに合っているか見直している
7. まとめ
パーミッションモードの基本:
- デフォルトモード(確認あり)が最も安全
- 慣れてきたら操作別に許可・禁止を設定できる
- 読み取り専用モードはコードレビューに最適
本番環境での原則:
- 本番環境では直接使用しない
- ローカル→ステージング→本番のフローを守る
.envやwp-config.phpはignorePatternsで保護する
CLAUDE.mdによるルール強制:
- 禁止ファイル・禁止操作を明示的に記載
- チームで使う場合はGitで共有して統一ルールにする
次回の第10回:応用編・スケジュール実行・マルチエージェントでは、Claude Codeの最も高度な使い方を解説します。このシリーズの総まとめとして、実務で使える応用テクニックを紹介します。
よくある質問(FAQ)
Q. Claude Codeが誤って重要なファイルを削除してしまった場合は?
A. Gitで管理しているプロジェクトなら git checkout や git restore で復元できます。Gitを使っていない場合は復元が困難です。Claude Codeを使うプロジェクトは必ずGitで管理することを強く推奨します。
Q. セキュリティ設定はどこに書けばいいですか?
A. 全プロジェクト共通の設定は ~/.claude/settings.json、特定プロジェクトの設定は プロジェクトルート/.claude/settings.json に書きます。禁止事項の記述はCLAUDE.mdにも追加することをお勧めします。
この記事はClaude Code入門シリーズ(全10回)の第9回です。← 第8回:MCP連携 | 第10回:応用編 →
ご質問はお問い合わせページからお気軽にどうぞ。