sandbox-hardening について
エージェントの実行環境を隔離するセキュリティスキルです。プロセス、コンテナ、VMの各サンドボックスを扱い、権限境界、リソース制限、ネットワーク制御を適用します。
主な機能
- 01プロセスレベルの隔離設定
- 02Dockerコンテナの強化
- 03VMレベルの隔離
- 04リソース制限の設定
- 05ネットワークとファイルシステムの制限
活用シーン
- 01共有環境でのAI生成コードの実行
- 02信頼できないコードの実行隔離
- 03最小権限のエージェント環境の構成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ itallstartedwithaidea/ agent-skills --skill sandbox-hardeningインストール後、Claude Code で/sandbox-hardeningを入力して読み込まれたか確認します。
詳細
サンドボックスの強化
googleadsagent.ai™によるAgent Skills™の一部です
説明
サンドボックスの強化では、コンテナによるサンドボックス化、権限の境界、リソース制限、ネットワークの分離を使用して、エージェントの実行環境を隔離します。エージェントは、AI が生成したコードによる未承認リソースへのアクセス、無制限のコンピューティングリソースの消費、ホストシステムへの影響を防ぐサンドボックスを設定し、検証します。
シェルに無制限にアクセスできる AI エージェントは、セキュリティ上のリスクになります。サンドボックス化されていないと、プロンプトインジェクションや誤って生成されたコマンドにより、ファイルの削除、データの持ち出し、マルウェアのインストール、無制限のリソース消費が発生する可能性があります。サンドボックスの強化では、最小権限の原則を適用します。エージェントには必要な権限のみを与え、厳格なリソース制限と監視対象のネットワークアクセスを備えた隔離環境で実行します。
このスキルでは、3 つの隔離レベルを扱います。プロセスレベルのサンドボックス化(seccomp、AppArmor)、コンテナレベルの隔離(制限付き機能を使用する Docker)、VM レベルの隔離(Firecracker などのマイクロ VM)です。適切なレベルは信頼境界によって異なります。内部開発ツールにはプロセスレベル、マルチテナントプラットフォームにはコンテナレベル、信頼できないコードの実行には VM レベルの隔離を使用します。
使用する場面
- AI が生成したコードを本番環境または共有環境で実行する場合
- 最小権限のアクセスでエージェントの実行環境を設定する場合
- ユーザーがインフラストラクチャを共有するマルチテナント AI プラットフォームをデプロイする場合
- ユーザー入力または AI の出力から得られた信頼できないコードを実行する場合
- 隔離実行に関するコンプライアンス要件を実装する場合
- エージェント向けのサンドボックス化された開発環境を構築する場合
仕組み
graph TD
A[Agent Task] --> B{Trust Level Assessment}
B -->|Internal Dev| C[Process Sandbox]
B -->|Multi-Tenant| D[Container Sandbox]
B -->|Untrusted Code| E[VM Sandbox]
C --> F[seccomp + AppArmor Profile]
D --> G[Docker: No Root + Read-Only FS]
E --> H[Firecracker microVM]
F --> I[Resource Limits: CPU, Memory, Disk]
G --> I
H --> I
I --> J[Network Policy: Allowlist Only]
J --> K[Filesystem: Scoped Mount]
K --> L[Monitoring: Syscall Audit]
L --> M[Execution within Sandbox]
エージェントがコードを実行する前に、サンドボックスを設定します。信頼レベルに応じて隔離技術を選択し、すべてのレベルでリソース制限、ネットワーク制限、ファイルシステムの範囲設定を適用します。
実装
# Container sandbox: minimal, non-root, read-only
FROM node:20-slim AS sandbox
RUN groupadd -r agent && useradd -r -g agent -d /workspace agent
WORKDIR /workspace
COPY --chown=agent:agent . .
USER agent
# docker-compose sandbox configuration
services:
agent-sandbox:
build: .
read_only: true
tmpfs:
- /tmp:size=100M,noexec
security_opt:
- no-new-privileges:true
- seccomp:seccomp-profile.json
cap_drop:
- ALL
cap_add:
- NET_BIND_SERVICE
deploy:
resources:
limits:
cpus: "2.0"
memory: 512M
pids: 100
reservations:
cpus: "0.5"
memory: 128M
networks:
- sandbox-net
dns:
- 1.1.1.1
networks:
sandbox-net:
driver: bridge
internal: false
import resource
import os
class ProcessSandbox:
"""Process-level sandboxing for single-tenant development."""
@staticmethod
def apply_limits(
max_memory_mb: int = 256,
max_cpu_seconds: int = 30,
max_file_size_mb: int = 10,
max_open_files: int = 64,
max_processes: int = 10,
):
mb = 1024 * 1024
resource.setrlimit(resource.RLIMIT_AS, (max_memory_mb * mb, max_memory_mb * mb))
resource.setrlimit(resource.RLIMIT_CPU, (max_cpu_seconds, max_cpu_seconds))
resource.setrlimit(resource.RLIMIT_FSIZE, (max_file_size_mb * mb, max_file_size_mb * mb))
resource.setrlimit(resource.RLIMIT_NOFILE, (max_open_files, max_open_files))
resource.setrlimit(resource.RLIMIT_NPROC, (max_processes, max_processes))
@staticmethod
def restrict_filesystem(allowed_dirs: list[str]):
"""Use chroot or bind mounts to restrict filesystem access."""
for d in allowed_dirs:
assert os.path.isabs(d), f"Allowed dirs must be absolute: {d}"
assert os.path.exists(d), f"Allowed dir does not exist: {d}"
@staticmethod
def validate_command(command: str, blocklist: list[str]) -> bool:
"""Check command against blocklist before execution."""
return not any(blocked in command for blocked in blocklist)
COMMAND_BLOCKLIST = [
"rm -rf /", "mkfs", "dd if=", "> /dev/sd",
"curl | sh", "wget | bash", "chmod 777",
"iptables", "mount", "umount",
]
ベストプラクティス
- Linux のすべての機能を無効にし、厳密に必要なものだけを再度有効にします
no-new-privilegesセキュリティオプションを指定し、root 以外のユーザーとしてコンテナを実行します- リソースの枯渇を防ぐため、メモリ、CPU、PID、ファイルディスクリプターに上限を設定します
- ルートファイルシステムを読み取り専用にし、一時領域には書き込み可能な tmpfs のみを使用します
- ネットワークアクセスを、必要なエンドポイントの明示的な許可リストに制限します
- インシデント発生後のフォレンジック分析に備え、サンドボックス内のすべてのシステムコールを監視してログに記録します
プラットフォームの互換性
| プラットフォーム | サポート | 備考 |
|---|---|---|
| Cursor | 完全 | Docker とプロセスのサンドボックス化 |
| VS Code | 完全 | 開発コンテナーをサポート |
| Windsurf | 完全 | サンドボックスの設定 |
| Claude Code | 完全 | コンテナベースの隔離 |
| Cline | 完全 | セキュリティ境界の設定 |
| aider | 一部 | プロセスレベルのみ |
関連スキル
- エージェントのセキュリティスキャン - サンドボックスで封じ込めるべき脅威を特定する脆弱性検出
- シークレットの保護 - サンドボックス化されたエージェントが適用範囲外のシークレットにアクセスするのを防ぐ認証情報の隔離
- 構成管理 - 環境間でサンドボックス構成を宣言的に管理するための、Infrastructure as Code のパターン
キーワード
sandbox container-security isolation least-privilege resource-limits seccomp docker-hardening agent-isolation
© 2026 googleadsagent.ai™ | Agent Skills™ | MIT License