Claude Codeのセキュリティ設定10選 — 本番環境で安全に使うための完全ガイド
Claude Code研究所 編集部
エンジニア向けAI活用スペシャリスト
Claude Codeを本番環境で使用する際、セキュリティは最重要課題です。AIがファイルシステムやコマンドラインに直接アクセスできる以上、適切な制御なしでは重大なセキュリティリスクを招きます。本記事では、エンタープライズ環境でClaude Codeを安全に運用するための10のセキュリティ設定を、実際のコード例とともに徹底解説します。
目次
1. サンドボックス環境の構築
Claude Codeの実行は、必ず隔離された環境で行いましょう。本番システムに直接アクセスさせることは避け、専用のサンドボックス環境を用意します。
# Claude Code用サンドボックス環境
FROM ubuntu:22.04
# 必要最小限のパッケージのみインストール
RUN apt-get update && apt-get install -y \
curl \
git \
&& rm -rf /var/lib/apt/lists/*
# 非rootユーザーの作成
RUN useradd -m -s /bin/bash claude-user
USER claude-user
WORKDIR /home/claude-user/workspace
# Claude Codeのインストール
RUN curl -fsSL https://claude.ai/install.sh | bash
# Docker コンテナでの実行例
docker run --rm -it \
--network none \
--read-only \
--tmpfs /tmp:size=100M \
--memory=2g \
--cpus=1 \
--security-opt=no-new-privileges \
claude-code-sandbox
サンドボックス構築のポイント
- 非rootユーザーでの実行を徹底
- ネットワーク分離(--network none)
- 読み取り専用ファイルシステム
- メモリ・CPU制限の設定
2. ファイルシステムの制限
アクセス可能なディレクトリを最小限に制限します。Claude Codeが操作できるファイルを明示的に指定することで、意図しないデータ漏洩や改ざんを防ぎます。
# .claude/settings.yaml
permissions:
allowed_paths:
- /workspace/src
- /workspace/docs
denied_paths:
- /etc
- /var
- ~/.ssh
- ~/.aws
read_only_paths:
- /workspace/config
3. ネットワークアクセスの制御
外部通信を必要最小限に制限し、許可リスト(ホワイトリスト)で管理します。APIエンドポイントへのアクセスも明示的に制御しましょう。
# ネットワーク許可リスト
network:
allowed_domains:
- api.anthropic.com
- github.com
- npm.registry.org
blocked_ports:
- 22 # SSH
- 3306 # MySQL
- 5432 # PostgreSQL
max_connections: 10
4. 機密情報の取り扱い
環境変数やシークレットの管理には、専用のシークレット管理ツール(HashiCorp Vault、AWS Secrets Manager等)を使用します。Claude Codeに直接シークレットを渡すことは避けましょう。
シークレットの暗号化
保存時・転送時ともに暗号化を徹底します。
アクセス制御
必要な時のみ、最小限のシークレットへのアクセスを許可します。
自動ローテーション
シークレットは定期的に自動更新します。
// シークレット取得の例(AWS Secrets Manager)
import { SecretsManager } from '@aws-sdk/client-secrets-manager';
const client = new SecretsManager({ region: 'ap-northeast-1' });
async function getSecret(secretName: string) {
const response = await client.getSecretValue({ SecretId: secretName });
return JSON.parse(response.SecretString || '{}');
}
// Claude Codeには参照のみ渡す
const dbConfig = await getSecret('prod/database');
// secretの値そのものはログに出力しない
5. 監査ログの設定
すべてのClaude Code実行を監査ログに記録し、異常検知を行います。「誰が」「いつ」「何をしたか」を追跡可能にすることが重要です。
// 監査ログの構造
interface AuditLog {
timestamp: string;
userId: string;
sessionId: string;
action: 'file_read' | 'file_write' | 'command_exec' | 'network_request';
target: string;
result: 'success' | 'denied' | 'error';
metadata: Record;
}
// ログ出力例
logger.audit({
timestamp: new Date().toISOString(),
userId: 'user-123',
sessionId: 'session-abc',
action: 'file_write',
target: '/workspace/src/index.ts',
result: 'success',
metadata: { bytesWritten: 1024 }
});
6. 実行権限の最小化
Claude Codeが実行できるコマンドを明示的に制限します。危険なコマンド(rm -rf、sudo等)はブロックしましょう。
# コマンド実行制限
commands:
allowed:
- git
- npm
- node
- cat
- ls
blocked:
- sudo
- rm -rf
- chmod
- chown
- curl # 必要な場合のみ許可
require_confirmation:
- git push
- npm publish
7. タイムアウトとリソース制限
無限ループや過剰なリソース消費を防ぐため、適切なタイムアウトとリソース制限を設定します。
| 項目 | 推奨値 | 説明 |
|---|---|---|
| 実行タイムアウト | 5分 | 1回のタスク実行の上限 |
| メモリ上限 | 2GB | コンテナあたりのメモリ |
| CPU制限 | 1コア | コンテナあたりのCPU |
| ディスク容量 | 1GB | 書き込み可能な容量 |
| 同時実行数 | 3 | ユーザーあたりの上限 |
8. 入力値のバリデーション
ユーザーからの入力やClaude Codeへの指示は、必ずバリデーションを行います。インジェクション攻撃を防ぐため、特殊文字のエスケープも重要です。
バリデーションチェックリスト
- ファイルパスのトラバーサル攻撃対策(../の検出)
- コマンドインジェクション対策(; | && の検出)
- ファイルサイズの上限チェック
- 許可された文字種のみを受け入れ
9. バックアップと復旧計画
Claude Codeが操作するファイルは、事前にバックアップを取得しておきます。万が一の際に迅速に復旧できる体制を整えましょう。
バックアップ戦略
Gitによるバージョン管理と、定期的なスナップショット取得を組み合わせることで、任意の時点に復旧可能な状態を維持します。
10. 定期的なセキュリティレビュー
セキュリティ設定は一度設定したら終わりではありません。定期的なレビューと改善が必要です。
まとめ
Claude Codeは強力なツールですが、適切なセキュリティ設定なしでは重大なリスクを招きます。本記事で紹介した10の設定を実装することで、エンタープライズ環境でも安全にClaude Codeを活用できます。
セキュリティ設定のポイント
- サンドボックス環境での実行を徹底
- 最小権限の原則を全レイヤーに適用
- すべての操作を監査ログに記録
- 定期的なセキュリティレビューを実施
- インシデント発生時の復旧計画を準備
Claude Codeを実務で活用したい方へ
スパルタClaude Code塾では、経営者・士業・エンジニア・マーケター・営業職向けに特化した実践的な研修を提供しています。