コンテンツにスキップ

Securely deploying AI agents

facts /Claude Code /agent-sdk-secure-deployment

stable1 か月前 · 2026-08-17

概要

Claude Code および Agent SDK のデプロイ時に、分離、認証情報管理、ネットワーク制御を用いてセキュリティを確保するためのガイド。プロンプトインジェクションやモデルエラーによる意図しないアクションを防御する。

仕様

脅威モデル

  • エージェントはプロンプトインジェクション(処理するコンテンツに埋め込まれた命令)やモデルエラーにより意図しないアクションを取りうる
  • Claude モデルはこれに対する耐性を持つが、多層防御が推奨される

組み込みセキュリティ機能

機能説明
パーミッションシステムツール・bashコマンドごとに allow / block / prompt を設定可能。glob パターン対応
コマンドパースbash コマンドを AST にパースしてパーミッションルールと照合。パースできないコマンドや eval は常に承認が必要
Web 検索サマリー検索結果はコンテキストに直接渡さず要約される
Sandbox モードbash コマンドをサンドボックス内で実行し、ファイルシステム・ネットワークアクセスを制限

セキュリティ原則

  • セキュリティ境界: 信頼レベルの異なるコンポーネントを分離する。認証情報をエージェント環境の外に置く
  • 最小権限: エージェントをタスクに必要な機能のみに制限する
  • 多層防御: コンテナ分離、ネットワーク制限、ファイルシステム制御、プロキシでのリクエスト検証を組み合わせる

最小権限で制限できるリソース

リソース制限方法
ファイルシステム必要なディレクトリのみマウント、可能なら読み取り専用
ネットワークプロキシ経由で特定エンドポイントのみ許可
認証情報直接公開せずプロキシ経由で注入
システムケーパビリティコンテナ内で Linux capabilities を削除

分離技術

技術分離強度パフォーマンスオーバーヘッド複雑さ
Sandbox runtimeGood(安全なデフォルト)非常に低い低
Containers (Docker)セットアップ依存低中
gVisorExcellent(正しいセットアップ時)中〜高中
VMs (Firecracker, QEMU)Excellent(正しいセットアップ時)高中〜高

すべての構成で Claude Code(または Agent SDK アプリケーション)は分離境界の内部で動作する。

Sandbox runtime

  • sandbox-runtime を使用
  • ファイルシステム: OS プリミティブ(Linux: bubblewrap、macOS: sandbox-exec)で読み書きアクセスを制限
  • ネットワーク: ネットワーク名前空間の削除(Linux)または Seatbelt プロファイル(macOS)でトラフィックを組み込みプロキシ経由にルーティング
  • 設定: JSON ベースのドメイン・ファイルシステムパスの許可リスト
  • 制限事項: ホストカーネルを共有するため、カーネル脆弱性でエスケープの可能性あり。プロキシは TLS を終端しないため、ドメインフロンティング等で許可リスト外のホストへ到達する可能性あり

コンテナ (Docker)

セキュリティ強化コンテナ設定のオプション:

オプション目的
--cap-drop ALLNET_ADMIN、SYS_ADMIN 等の Linux capabilities を削除
--security-opt no-new-privilegessetuid バイナリによる権限昇格を防止
--security-opt seccomp=...利用可能な syscall を制限
--read-onlyコンテナのルートファイルシステムを不変にする
--network noneすべてのネットワークインターフェースを削除
--memory 2gメモリ使用量を制限
--pids-limit 100プロセス数を制限(フォークボム対策)
--user 1000:1000非 root ユーザーで実行
  • --network none の場合、Unix ソケット経由でホスト上のプロキシのみと通信可能
  • ~/.ssh、~/.aws、~/.config 等の機密ホストディレクトリのマウントを避ける

追加の強化オプション:

オプション目的
--userns-remapコンテナの root をホストの非特権ユーザーにマッピング
--ipc privateプロセス間通信を分離

gVisor

  • システムコールをユーザースペースでインターセプトし、ホストカーネルへの攻撃面を削減
  • Docker 用 runsc ランタイムとして利用: docker run --runtime=runsc agent-image
  • パフォーマンスオーバーヘッド:
    • CPU バウンド: 約 0%
    • 単純な syscall: 約 2 倍遅い
    • ファイル I/O 多用: open/close パターンで最大 10〜200 倍遅い

VM (Firecracker)

  • ハードウェアレベルの分離(CPU 仮想化拡張機能)
  • Firecracker: 125ms 未満で VM 起動、メモリオーバーヘッド 5 MiB 未満
  • vsock(仮想ソケット)経由でホスト上のプロキシと通信

クラウドデプロイメント

  1. プライベートサブネットでエージェントコンテナを実行(インターネットゲートウェイなし)
  2. クラウドファイアウォールルール(AWS Security Groups、GCP VPC firewall)でプロキシ以外への egress をブロック
  3. プロキシ(例: Envoy credential_injector フィルタ)でリクエスト検証、ドメイン許可リスト、認証情報注入、転送
  4. エージェントのサービスアカウントに最小限の IAM 権限を割り当て
  5. プロキシで全トラフィックを監査ログ

認証情報管理

プロキシパターン(推奨)

  • エージェントのセキュリティ境界の外部でプロキシを実行し、送信リクエストに認証情報を注入
  • エージェントは認証情報を直接参照しない
  • プロキシで許可エンドポイントの制限、リクエストの監査ログが可能

Claude Code でのプロキシ設定

方法環境変数スコープ
ANTHROPIC_BASE_URLhttp://localhost:8080サンプリング API リクエストのみ
HTTP_PROXY / HTTPS_PROXYhttp://localhost:8080システム全体の HTTP トラフィック
  • ANTHROPIC_BASE_URL: プロキシがプレーンテキスト HTTP を受信し、認証情報を注入して転送
  • HTTPS_PROXY: CONNECT トンネルを作成。TLS インターセプションなしではリクエスト内容の変更不可

利用可能なプロキシ実装

他サービスへの認証

  • カスタムツール: MCP サーバーまたはカスタムツール経由でリクエストをセキュリティ境界外のサービスにルーティング
  • トラフィック転送: TLS 終端プロキシで HTTPS トラフィックを復号・変更・再暗号化。プロキシの CA 証明書をエージェントの信頼ストアにインストールが必要
    • HTTP_PROXY / HTTPS_PROXY を尊重しないプログラムもある(Node.js fetch() はデフォルトで無視。Node 24+ では NODE_USE_ENV_PROXY=1 で有効化可能)
    • proxychains やiptables でのリダイレクトでカバー可能

ファイルシステム設定

  • 読み取り専用マウント: docker run -v /path/to/code:/workspace:ro
  • 除外すべき機密ファイル: .env、~/.git-credentials、~/.aws/credentials、~/.config/gcloud/application_default_credentials.json、~/.azure/、~/.docker/config.json、~/.kube/config、.npmrc、.pypirc、*-service-account.json、*.pem、*.key
  • 一時的なワークスペース: tmpfs マウント(コンテナ停止時にクリア)
  • 変更のレビュー: オーバーレイファイルシステムで変更を別レイヤーに保存し、確認後に適用・破棄

制約・注意点

  • Sandbox runtime はホストカーネルを共有するため、カーネル脆弱性でエスケープの可能性がある
  • Sandbox runtime のプロキシは TLS を終端しないため、ドメインフロンティング等で許可リスト外のホストへ到達する可能性がある
  • 読み取り専用アクセスであっても、コードディレクトリに含まれる認証情報(.env、~/.aws/credentials 等)が漏洩するリスクがある
  • HTTP_PROXY / HTTPS_PROXY はすべてのプログラムが尊重するわけではない

関連

  • facts/claude-code/agent-sdk-permissions.md