🔒

Claude Codeの権限とセキュリティ:安全なAI開発環境の構築

に公開

🔒 権限とセキュリティの管理

こんにちは、イワケンです。
Claude Codeの権限とセキュリティについてまとめました。
引用元: 公式ドキュメント(日本語版)

Claude Codeは、パワーと安全性のバランスを取るために階層化された権限システムを使用しています:

ツールタイプ 承認が必要 「はい、次回から確認しない」の動作
読み取り専用 ファイル読み取り、LS、Grep いいえ 該当なし
Bashコマンド シェル実行 はい プロジェクトディレクトリとコマンドごとに永続的に許可
ファイル変更 ファイルの編集/書き込み はい セッション終了まで

🛠️ Claudeが利用できるツール

Claude Codeは、コードベースを理解および変更するのに役立つ強力なツールセットにアクセスできます:

ツール 説明 必要な権限
Agent 複雑な複数ステップのタスクを処理するためのサブエージェントを実行 いいえ
Bash 環境内でシェルコマンドを実行 はい
Glob パターンマッチングに基づいてファイルを検索 いいえ
Grep ファイル内容のパターン検索 いいえ
LS ファイルとディレクトリを一覧表示 いいえ
Read ファイルの内容を読み取る いいえ
Edit 特定のファイルに対象を絞った編集を行う はい
Write ファイルを作成または上書き はい
NotebookEdit Jupyterノートブックのセルを変更 はい
NotebookRead Jupyterノートブックの内容を読み取り表示 いいえ
WebFetch 指定されたURLからコンテンツを取得 はい

権限ルールは/allowed-toolsコマンドで設定できます。


🛡️ プロンプトインジェクションからの保護

プロンプトインジェクションは、攻撃者が悪意のあるテキストを挿入することでAIアシスタントの指示を上書きまたは操作しようとする手法です。Claude Codeには、これらの攻撃に対するいくつかの保護機能が含まれています:

セキュリティ機能

  • 権限システム:機密性の高い操作には明示的な承認が必要
  • コンテキスト認識分析:リクエスト全体を分析して潜在的に有害な指示を検出
  • 入力サニタイズ:ユーザー入力を処理してコマンドインジェクションを防止
  • コマンドブロックリストcurlwgetなどのウェブから任意のコンテンツを取得する危険なコマンドをブロック

信頼できないコンテンツを扱う際のベストプラクティス

  1. 承認前に提案されたコマンドを確認する
  2. 信頼できないコンテンツを直接Claudeにパイプしない
  3. 重要なファイルへの変更提案を検証する
  4. 不審な動作は/bugで報告する

⚠️ 警告: これらの保護機能はリスクを大幅に軽減しますが、どのシステムもすべての攻撃に完全に耐性があるわけではありません。AIツールを使用する際は、常に適切なセキュリティプラクティスを維持してください。


🌐 ネットワークアクセスの設定

Claude Codeは以下へのアクセスが必要です:

  • api.anthropic.com
  • statsig.anthropic.com
  • sentry.io

コンテナ化された環境でClaude Codeを使用する場合は、これらのURLを許可リストに追加してください。


🐳 開発コンテナのリファレンス実装

Claude Codeは、一貫性のある安全な環境を必要とするチーム向けに開発コンテナ構成を提供しています。この事前設定されたdevcontainerセットアップは、VS CodeのRemote - Containers拡張機能や同様のツールとシームレスに連携します。

コンテナの強化されたセキュリティ対策(分離とファイアウォールルール)により、無人操作のために権限プロンプトをバイパスするclaude --dangerously-skip-permissionsを実行できます。

⚠️ 警告: devcontainerは実質的な保護を提供しますが、どのシステムもすべての攻撃に完全に耐性があるわけではありません。常に適切なセキュリティプラクティスを維持し、Claudeの活動を監視してください。

主な機能

  • 本番環境対応Node.js:Node.js 20に基づき、必須の開発依存関係を含む
  • 設計によるセキュリティ:必要なサービスのみにネットワークアクセスを制限するカスタムファイアウォール
  • 開発者向けツール:git、生産性向上機能を備えたZSH、fzfなどを含む
  • VS Codeとのシームレスな統合:事前設定された拡張機能と最適化された設定
  • セッション永続性:コンテナの再起動間でコマンド履歴と構成を保持
  • どこでも動作:macOS、Windows、Linuxの開発環境と互換性あり

4ステップで始める

  1. VS CodeとRemote - Containers拡張機能をインストール
  2. Claude Codeリファレンス実装リポジトリをクローン
  3. VS Codeでリポジトリを開く
  4. プロンプトが表示されたら、「コンテナで再度開く」をクリック(またはコマンドパレット:Cmd+Shift+P →「Remote-Containers: コンテナで再度開く」)

構成の内訳

devcontainerセットアップは、主に3つのコンポーネントで構成されています:

  • devcontainer.json:コンテナ設定、拡張機能、ボリュームマウントを制御
  • Dockerfile:コンテナイメージとインストールされたツールを定義
  • init-firewall.sh:ネットワークセキュリティルールを確立

セキュリティ機能

コンテナはファイアウォール構成で多層セキュリティアプローチを実装しています:

  • 精密なアクセス制御:ホワイトリストに登録されたドメイン(npmレジストリ、GitHub、Anthropic APIなど)のみに送信接続を制限
  • デフォルト拒否ポリシー:他のすべての外部ネットワークアクセスをブロック
  • 起動時検証:コンテナ初期化時にファイアウォールルールを検証
  • 分離:メインシステムから分離された安全な開発環境を作成

カスタマイズオプション

devcontainer構成はニーズに合わせて適応できるように設計されています:

  • ワークフローに基づいてVS Code拡張機能を追加または削除
  • 異なるハードウェア環境のリソース割り当てを変更
  • ネットワークアクセス権限を調整
  • シェル構成と開発ツールをカスタマイズ

🔗 参考リンク

Discussion