mcpField
S
sandbox-hardening

sandbox-hardening

github.com/itallstartedwithaidea安全4480 次安装28 周前更新
代码仓库

关于 sandbox-hardening

用于隔离 Agent 执行环境的安全技能,涵盖进程、容器或虚拟机沙箱,并通过权限边界、资源限制和网络控制降低风险。

主要功能

  1. 01配置进程级隔离
  2. 02加固 Docker 容器
  3. 03采用虚拟机级隔离
  4. 04设置资源限制
  5. 05限制网络与文件系统访问

适用场景

  1. 01在共享环境运行 AI 生成的代码
  2. 02隔离不可信代码执行
  3. 03配置最小权限 Agent 环境

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/itallstartedwithaidea/agent-skills --skill sandbox-hardening

安装后在 Claude Code 中输入/sandbox-hardening确认已加载。

详细介绍

沙箱加固

属于 Agent Skills™,由 googleadsagent.ai™ 提供

描述

沙箱加固通过容器沙箱、权限边界、资源限制和网络隔离,隔离 Agent 的执行环境。Agent 会配置并验证沙箱,防止 AI 生成的代码访问未经授权的资源、消耗不受限制的计算资源或影响主机系统。

拥有不受限制的 shell 访问权限的 AI Agent 会带来安全风险。如果没有沙箱隔离,提示词注入或虚构的命令可能会删除文件、窃取数据、安装恶意软件或消耗不受限制的资源。沙箱加固遵循最小权限原则:Agent 只能获得所需的权限,并在隔离环境中运行,同时受到严格的资源限制,网络访问也会受到监控。

此技能涵盖三个隔离级别:进程级沙箱(seccomp、AppArmor)、容器级隔离(采用受限功能的 Docker)和虚拟机级隔离(如 Firecracker 微型虚拟机)。适用级别取决于信任边界:内部开发工具使用进程级隔离,多租户平台使用容器级隔离,执行不可信代码则需要虚拟机级隔离。

适用场景

  • 在生产环境或共享环境中运行 AI 生成的代码
  • 配置遵循最小权限原则的 Agent 执行环境
  • 部署用户共享基础设施的多租户 AI 平台
  • 执行来自用户输入或 AI 输出的不可信代码
  • 实施隔离执行方面的合规要求
  • 为 Agent 构建沙箱化开发环境

工作原理

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]

沙箱会在 Agent 执行任何代码之前配置。隔离技术由信任级别决定,所有级别都会实施资源限制、网络限制和文件系统范围限定。

实现

# 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 功能,仅添加严格必需的功能
  • 以非 root 用户身份运行容器,并启用 no-new-privileges 安全选项
  • 设置内存、CPU、PID 和文件描述符限制,防止资源耗尽
  • 使用只读根文件系统,仅将可写 tmpfs 用作临时空间
  • 将网络访问限制为明确列出的必需端点
  • 监控并记录沙箱中的所有系统调用,以便事后进行事件取证分析

平台兼容性

平台支持情况备注
Cursor完全支持Docker + 进程沙箱
VS Code完全支持支持开发容器
Windsurf完全支持沙箱配置
Claude Code完全支持基于容器的隔离
Cline完全支持安全边界配置
aider部分支持仅支持进程级隔离

相关技能

  • Agent 安全扫描 - 漏洞检测,用于识别沙箱必须遏制的威胁
  • 密钥保护 - 凭据隔离,防止沙箱中的 Agent 访问其范围之外的密钥
  • 配置管理 - 基础设施即代码模式,用于以声明方式管理不同环境中的沙箱配置

关键词

sandbox container-security isolation least-privilege resource-limits seccomp docker-hardening agent-isolation


© 2026 googleadsagent.ai™ | Agent Skills™ | MIT License

评论

支持 Markdown