Claude Codeのサンドボックス設定|ファイルシステム・ネットワークの安全な制限方法

  • 2026年3月17日
  • 最終更新: 2026年5月5日
claude-code-sandbox-security
この記事の結論

Claude Codeのサンドボックスは権限プロンプト・allowedTools・OSサンドボックス・コンテナ隔離・managed-settingsの5層防御で構成され、ファイルアクセスとネットワーク通信を安全に制限できます。企業導入では各レイヤーを役割に応じて組み合わせることで、開発生産性を維持しながら情報漏洩リスクをゼロに近づけられます。

ブログ目次

記事の内容を、そのまま実務に落とし込みたい方向け

HubSpot導入、AI活用、CRM整備、業務効率化までをまとめて支援しています。記事で気になったテーマを、そのまま相談ベースで整理できます。


Claude Codeのサンドボックスは権限プロンプト・allowedTools・OSサンドボックス・コンテナ隔離・managed-settingsの5層防御で構成され、ファイルアクセスとネットワーク通信を安全に制限できます。企業導入では各レイヤーを役割に応じて組み合わせることで、開発生産性を維持しながら情報漏洩リスクをゼロに近づけられます。

「Claude Codeを全社に展開したいが、セキュリティ担当から『どこまでファイルを読めるのか』『ネットワークに勝手にアクセスしないか』と質問攻めにあっている」「開発者に自由に使わせつつ、本番設定ファイルや機密データには絶対に触らせたくない」——企業導入を検討しているテックリードやセキュリティ担当者が必ず直面する問いです。

Claude Codeは、ファイルの読み書き・Bashコマンド実行・Git操作など広範な操作を行える強力なツールですが、その強さはそのままリスクでもあります。だからこそ、権限プロンプト・allowedTools/disallowedTools・OSサンドボックス・コンテナ隔離・managed-settingsという複数のレイヤーを組み合わせた多層防御の設計が重要です。「一つの防御が突破されても次のレイヤーで食い止める」という発想で、段階的に制限を積み上げていきます。

本記事では、Claude Codeのサンドボックスアーキテクチャの全体像、macOS Seatbeltの仕組みと自動適用条件、Dockerコンテナによるネットワーク・ファイルシステム隔離、allowedTools設定によるツールレベルの制御、そして企業導入時のサンドボックス設計パターンを解説します。


この記事でわかること

Claude Codeをチームや企業で安全に運用するには、サンドボックスによる多層防御の設計が重要です。この記事では、OS・コンテナ・アプリケーションの各レイヤーでの制限設定を、導入規模別に具体的に解説します。

  • Claude Codeのサンドボックスアーキテクチャの全体像 — ClaudeCodeのサンドボックスは、AIエージェントの操作範囲を技術的に制限する安全機構です。
  • macOS Seatbeltサンドボックスの仕組みと自動適用の条件 — macOSでClaudeCodeを実行すると、Bashコマンドの実行時にSeatbeltサンドボックスが自動的に適用されます。
  • Dockerコンテナを使ったネットワーク・ファイルシステム隔離の設定方法 — OSレベルのサンドボックスは基本的な保護を提供しますが、より厳密な隔離が必要な場合にはDockerコンテナが有効です。
  • allowedToolsとdisallowedToolsによるツールレベルの制御 — ClaudeCodeの設定ファイル()で、使用可能なツールを明示的に制御できます。
  • 企業導入時のサンドボックス設計パターン — Before:ClaudeCodeを全開発者が制限なしで使用しており、誰かが誤って本番用のファイルを読み取る可能性がありました。

対象読者: Claude Codeの企業導入を検討しているセキュリティ担当者・インフラエンジニア、チーム開発でのセキュリティポリシーを設計するテックリード


サンドボックスとは

Claude Codeのサンドボックスは、AIエージェントの操作範囲を技術的に制限する安全機構です。Claude Codeはローカル環境でファイルの読み書き、Bashコマンドの実行、Git操作など広範な操作を行えます。その強力さは生産性の源泉ですが、同時にリスクでもあります。

サンドボックスは「AIができること」に技術的な上限を設け、万が一の誤操作や意図しない動作が本番環境やプライベートデータに影響しないようにする役割を担います。

出典: Anthropic公式ドキュメント: Security

多層防御の考え方

Claude Codeのセキュリティは、単一の仕組みではなく、複数のレイヤーで構成されています。

レイヤー 仕組み 制御対象
権限プロンプト ツール使用時の承認/拒否 ユーザーの意図確認
allowedTools/disallowedTools ツール単位の許可・拒否リスト 実行可能なツールの種類
OSサンドボックス macOS Seatbelt / Linux名前空間 ファイルシステム・ネットワーク
コンテナ隔離 Docker / Dev Container 実行環境全体
managed-settings 管理者によるポリシー強制 組織全体の設定

これらのレイヤーを組み合わせることで、「一つの防御が突破されても、次のレイヤーで食い止める」多層防御を実現します。


macOS Seatbeltサンドボックス

仕組み

macOSでClaude Codeを実行すると、Bashコマンドの実行時にSeatbeltサンドボックスが自動的に適用されます。Seatbeltは、macOSに組み込まれたサンドボックス機構で、プロセスごとにファイルシステムやネットワークへのアクセスを制限できます。

Claude Codeは、Bash実行時に以下のような制限をSeatbeltプロファイルで適用します。

  • 作業ディレクトリ外への書き込み制限: プロジェクトディレクトリ外のファイルへの書き込みを制限
  • システムファイルの保護: /etc/usr/System等のシステムディレクトリへのアクセスを制限
  • ネットワーク制限: 不必要なネットワーク接続の制限

自動適用の条件

Seatbeltサンドボックスは、macOS環境でClaude Codeを通常起動した場合に自動的に有効になります。特別な設定は必要ありません。

ただし、以下のケースではサンドボックスが適用されない場合があります。

  • --dangerously-skip-permissionsフラグを使用した場合
  • 一部のシステムコマンドがサンドボックス制限と互換性がない場合

Linuxの名前空間分離

Linux環境では、macOSのSeatbeltの代わりにLinuxカーネルの名前空間(namespace)機能を使ったサンドボックスが適用されます。ファイルシステムのマウント名前空間やネットワーク名前空間を分離することで、類似のアクセス制限を実現します。

OS サンドボックス方式 設定の必要性
macOS Seatbelt(sandbox-exec) 自動適用
Linux カーネル名前空間 自動適用
Docker コンテナ隔離 手動設定

Dockerコンテナによる隔離

なぜDockerを使うのか

OSレベルのサンドボックスは基本的な保護を提供しますが、より厳密な隔離が必要な場合にはDockerコンテナが有効です。特に以下のシナリオで推奨されます。

  • 機密データのあるプロジェクト: 個人情報や認証情報を含むコードベースを扱う場合
  • 本番環境に近い構成でのテスト: ステージング環境と同等の制約を適用したい場合
  • チーム開発での環境統一: 全員が同じ制約で作業することを保証したい場合

基本的なDocker構成

Claude CodeをDockerコンテナ内で実行するためのDockerfileの例です。

FROM node:20-slim

# Claude Codeのインストール

**RUN npm install -g @anthropic-ai/claude-code**
RUN npm install -g @anthropic-ai/claude-code

# 作業ディレクトリの設定
WORKDIR /workspace

# 非rootユーザーで実行
RUN useradd -m developer
USER developer

# Claude Codeの起動
ENTRYPOINT ["claude"]

docker-compose.ymlでの制限設定

docker-compose.ymlでネットワークやファイルシステムの制限を詳細に設定できます。

version: '3.8'
services:
  claude-code:
    build: .
    volumes:
      # プロジェクトディレクトリのみマウント(読み書き可能)
      - ./src:/workspace/src
      - ./tests:/workspace/tests
      # 設定ファイルは読み取り専用
      - ./package.json:/workspace/package.json:ro
      - ./tsconfig.json:/workspace/tsconfig.json:ro
    networks:
      - restricted
    # メモリ・CPU制限
    deploy:
      resources:
        limits:
          memory: 4G
          cpus: '2.0'
    # セキュリティオプション
    security_opt:
      - no-new-privileges:true
    read_only: true
    tmpfs:
      - /tmp

networks:
  restricted:
    driver: bridge
    internal: true  # 外部ネットワークへのアクセスを遮断

ポイントは以下の通りです。

  • volumesの制限: 必要なディレクトリのみをマウントし、機密ファイル(.envcredentials/等)はマウントしない
  • ネットワークのinternal設定: internal: trueで外部ネットワークへの接続を完全に遮断
  • read_only: コンテナのファイルシステムを読み取り専用にし、/tmpのみ書き込み可能にする
  • no-new-privileges: コンテナ内でのプロセスの権限昇格を防止

API通信の許可

Claude CodeはAnthropicのAPIと通信する必要があるため、完全にネットワークを遮断するとClaude Code自体が動作しなくなります。APIへの通信のみを許可する場合は、ネットワークポリシーで特定のドメインへの通信を許可します。

networks:
  api-only:
    driver: bridge
    # 外部通信を制限しつつ、特定のエンドポイントのみ許可

実運用ではプロキシサーバーを介して通信先を制御する方法や、iptablesルールでAnthropicのAPIエンドポイントのみを許可リストに入れる方法が採られます。


allowedTools / disallowedToolsによるツール制限

概要

Claude Codeの設定ファイル(.claude/settings.json)で、使用可能なツールを明示的に制御できます。サンドボックスがOS・コンテナレベルの制限であるのに対し、allowedTools/disallowedToolsはClaude Codeのアプリケーションレベルの制限です。

設定方法

{
  "permissions": {
    "allowedTools": [
      "Read",
      "Edit",
      "Write",
      "Glob",
      "Grep",
      "Bash(npm test)",
      "Bash(npm run lint)"
    ],
    "disallowedTools": [
      "Bash(rm -rf *)",
      "Bash(curl *)",
      "Bash(wget *)"
    ]
  }
}

ツール制限のパターン

パターン allowedTools例 用途
読み取り専用 Read, Glob, Grep コードレビュー・分析のみ
編集限定 Read, Edit, Write, Glob, Grep コード編集はOK、Bash実行は禁止
テスト実行可 上記 + Bash(npm test), Bash(npm run lint) テスト・lint実行はOK
フルアクセス 制限なし 信頼されたプロジェクト

ワイルドカードの活用

Bash実行は、コマンドパターンで許可範囲を細かく制御できます。

{
  "permissions": {
    "allowedTools": [
      "Bash(npm *)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git log *)"
    ]
  }
}

この設定では、npm系のコマンドとGitの読み取り系コマンドのみが許可され、rmcurldocker等の危険なコマンドは実行できません。


managed-settingsによる組織レベルの制御

企業導入での必要性

チーム・企業でClaude Codeを導入する場合、個々の開発者が設定を変更できてしまうとセキュリティポリシーが形骸化します。managed-settingsを使うと、管理者が設定を一元管理し、個人の設定ファイルで上書きできないようにポリシーを強制適用できます。なお、Claude Codeを活用した経営データの可視化コンテンツマーケティングの支援についても、具体的な取り組みをご紹介しています。

詳しくは「Claude Codeの企業導入セキュリティガイド」で解説しています。

managed-settings.jsonの配置

# macOS
/Library/Application Support/claude-code/managed-settings.json

# Linux
/etc/claude-code/managed-settings.json

設定例

{
  "permissions": {
    "disallowedTools": [
      "Bash(curl *)",
      "Bash(wget *)",
      "Bash(ssh *)",
      "Bash(scp *)"
    ]
  },
  "env": {
    "CLAUDE_CODE_DISABLE_NONINTERACTIVE": "1"
  }
}

managed-settingsで定義された制限は、ユーザーの.claude/settings.json--dangerously-skip-permissionsフラグでは上書きできません。これにより、組織のセキュリティポリシーを技術的に強制できます。


実務での活用パターン

パターン1: スタートアップの少人数チーム

Before: Claude Codeを全開発者が制限なしで使用しており、誰かが誤って本番用の.envファイルを読み取る可能性がありました。サンドボックスの概念は知っていても、具体的な設定手順がわからず放置していました。

After: プロジェクトの.claude/settings.jsonにallowedToolsを設定し、.envcredentials/ディレクトリへのアクセスを制限します。macOSのSeatbeltサンドボックスが自動適用されることを確認し、追加のDocker設定は行わないシンプルな構成にします。

{
  "permissions": {
    "allowedTools": [
      "Read",
      "Edit",
      "Write",
      "Glob",
      "Grep",
      "Bash(npm *)",
      "Bash(git *)",
      "Bash(node *)"
    ]
  }
}

少人数チームでは、過度に厳格な設定は生産性を損なう可能性があるため、「明らかに危険な操作だけをブロックする」アプローチが適切です。

パターン2: 金融・医療系の厳格なセキュリティ要件

Before: AIツールの導入自体がセキュリティ部門に承認されず、開発者はClaude Codeを使えない状態でした。「AIが顧客データにアクセスするリスク」が懸念されていました。

After: Dockerコンテナで完全に隔離された環境を構築し、ネットワークはAnthropicのAPIエンドポイントのみ許可、ファイルシステムはソースコードディレクトリのみマウントする構成を提案します。managed-settingsでツール制限を強制し、個人が設定を変更できないことをセキュリティ部門に説明します。

多層防御の各レイヤーがどのリスクを軽減するかを一覧表で示し、セキュリティ監査の材料として提出できる形にします。

リスク 軽減手段 設定場所
機密ファイルへのアクセス Dockerのvolumeマウント制限 docker-compose.yml
外部への情報送信 ネットワークのinternal設定 docker-compose.yml
禁止コマンドの実行 disallowedTools managed-settings.json
設定の無断変更 managed-settingsの強制適用 OSレベルの配置
権限昇格 no-new-privileges docker-compose.yml

パターン3: CI/CDパイプラインでの自動実行

Before: CI/CDでClaude Codeを自動実行する際、ランナー環境のファイルシステム全体にアクセスできてしまい、他のジョブのアーティファクトや環境変数を読み取れる状態でした。

After: CI/CDのジョブをDockerコンテナ内で実行し、Claude Codeに渡すワークスペースを最小限に限定します。GitHub Actionsの場合、以下のような構成が推奨されます。

jobs:
  claude-review:
    runs-on: ubuntu-latest
    container:
      image: ghcr.io/your-org/claude-code-sandbox:latest
      options: --read-only --tmpfs /tmp --network=none
    steps:
      - uses: actions/checkout@v4
      - name: Run Claude Code
        run: claude -p "コードレビューを実行してください"
        env:
          ANTHROPIC_API_KEY: $

--network=noneでネットワークを完全遮断する場合、API通信もできなくなるため、事前にプロンプトとコンテキストを渡してオフラインで実行する方法を検討するか、API通信のみを許可するネットワーク設定を個別に構成します。詳しくは「Claude Code × CI/CD自動化」で解説しています。


関連コマンドとの組み合わせ

Hooks × サンドボックス: セキュリティゲートの自動化

Hooksのマッチャーで特定のコマンドパターンを検出し、サンドボックス外のリソースにアクセスしようとした場合にブロックする設定が可能です。詳しくは「Claude Code Hooksで開発を自動化する方法」で解説しています。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "command": "echo $CLAUDE_TOOL_INPUT | jq -r '.command' | grep -qE '(sudo|chmod 777|rm -rf /)' && exit 1 || exit 0"
      }
    ]
  }
}

CLAUDE.md × サンドボックス: ルールの明文化

CLAUDE.mdにサンドボックスのルールを明記しておくことで、Claude Codeがそのルールを理解した上で動作します。技術的な制限とAIへの指示の両面から安全性を確保するアプローチです。詳しくは「Claude Codeの.claude/ディレクトリ」で解説しています。

# セキュリティルール
- /workspace/ 以外のディレクトリにファイルを作成・編集しないでください
- curl, wget等の外部通信コマンドは使用しないでください
- .env ファイルの内容を表示・読み取りしないでください

サンドボックス設定の検証

サンドボックス設定自体の妥当性を検証することも重要です。Claude Codeに「この設定ファイルの制限に抜け漏れがないか確認して」と指示することで、設定ファイルをレビュー対象に含め、制限の抜け漏れがないかをAIにチェックさせられます。


あわせて読みたい


まとめ

属人化を防ぎ、チーム全体で再現可能な仕組みとして標準化することが成功の鍵です。

自社の業務フローや要件に応じて、段階的にカスタマイズしていくことをおすすめします。

  • Claude Codeのサンドボックス設定は、macOS Seatbelt(自動適用)、Dockerコンテナ(手動構成)、allowedTools(アプリケーション制限)、managed-settings(組織ポリシー強制)の4つのレイヤーで構成されています
  • 少人数チームではallowedToolsの設定だけで十分な安全性を確保でき、厳格なセキュリティ要件がある企業ではDockerコンテナとmanaged-settingsを組み合わせた多層防御が推奨されます
  • 重要なのは、セキュリティと生産性のバランスです
  • 過度な制限はAI活用のメリットを損なうため、プロジェクトのリスクレベルに応じて適切なレイヤーを選択してください

よくある質問(FAQ)

Q1. サンドボックスを有効にするとClaude Codeの性能は低下しますか?

macOSのSeatbeltサンドボックスによるパフォーマンスへの影響はごくわずかです。ファイルアクセス時にカーネルレベルでポリシーチェックが入りますが、体感できるほどの遅延は発生しません。Dockerコンテナの場合は、コンテナの起動時間(数秒程度)が追加されますが、起動後のパフォーマンスはホスト環境とほぼ同等です。ネットワーク制限によりnpmパッケージのダウンロード等が遅くなる場合がありますが、事前にキャッシュを含めたイメージを作成しておくことで回避できます。

Q2. サンドボックスの制限でClaude Codeがエラーになった場合はどう対処しますか?

サンドボックスの制限に引っかかると、Claude Codeは該当の操作が失敗した旨を報告します。対処方法は2つあります。一つは、allowedToolsに必要なコマンドパターンを追加する方法です。もう一つは、Claude Codeに対して「この操作はサンドボックスの制限で実行できないため、別のアプローチを提案してください」と指示する方法です。制限に対してClaude Codeが代替案を提案してくれる場合も多いため、まずは代替案を確認するのがおすすめです。

Q3. 開発環境と本番環境でサンドボックスの設定を分けるべきですか?

はい、分けるべきです。開発環境ではデバッグやテストのために比較的広い権限が必要ですが、CI/CD環境や本番に近い環境では厳格な制限を適用します。.claude/settings.json(プロジェクト共通)と.claude/settings.local.json(個人環境)を使い分けるか、Docker環境ごとに異なるmanaged-settingsを配置する構成が実用的です。チーム全体のベースラインは.claude/settings.jsonで統一し、個人の開発環境では.claude/settings.local.jsonで微調整を行うパターンが推奨されます。


株式会社StartLinkは、事業推進に関わる「販売促進」「DXによる業務効率化(ERP/CRM/SFA/MAの導入)」などのご相談を受け付けております。 サービスのプランについてのご相談/お見積もり依頼や、ノウハウのお問い合わせについては、無料のお問い合わせページより、お気軽にご連絡くださいませ。

関連キーワード:

サービス資料を無料DL

著者情報

7-1

今枝 拓海 / Takumi Imaeda

株式会社StartLink 代表取締役。累計150社以上のHubSpotプロジェクト支援実績を持ち、Claude CodeやHubSpotを軸にしたAI活用支援・経営基盤AXのコンサルティング事業を展開。
HubSpotのトップパートナー企業や大手人材グループにて、エンタープライズCRM戦略策定・AI戦略ディレクションを経験した後、StartLinkを創業。現在はCRM×AIエージェントによる経営管理支援を専門とする。