Claude Code 设置与权限
Claude Code 设置与权限
沙箱环境
3 分钟阅读
选择沙箱环境
比较 Claude Code 沙箱选项:内置沙箱化 Bash 工具、沙箱运行时、开发容器、Docker 和虚拟机。为您的威胁模型选择合适的隔离方案。
隔离 Claude Code 会限制会话可以读取、写入和访问网络的内容。当您让 Claude 在较少权限提示的情况下工作、以无人值守方式运行它,或将其指向您不完全信任的代码时,这一点最为重要。
Claude Code 可以在多种隔离环境中运行,从轻量级的按命令沙箱到完全独立的虚拟机。本页面比较了它们隔离的内容和所需条件,帮助您为威胁模型选择合适的方案,并展示如何在整个组织中强制实施该选择。
有关更广泛的安全模型,请参阅 Security。有关 Agent SDK 部署,请参阅 Secure deployment。
比较沙箱方法
下表中的前两种方法在主机操作系统上运行,不使用容器。其余方法将 Claude Code 放在容器或虚拟机内。
| 方法 | 隔离的内容 | 需要 Docker | 设置推理强度 |
|---|---|---|---|
| Sandboxed Bash tool | Bash 命令及其子进程 | 否 | macOS 上最少;Linux 和 WSL2 上较少 |
| Sandbox runtime | 整个 Claude Code 进程,包括文件工具、MCP 服务器和 hooks | 否 | 较少 |
| Dev container | 完整开发环境 | 是 | 中等 |
| Custom container | 完整开发环境 | 是 | 中等到高 |
| Virtual machine | 完整操作系统 | 否 | 高 |
| Claude Code on the web | 完整操作系统,由 Anthropic 托管 | 否 | 无;需要 Claude 订阅和 GitHub |
Sandboxed Bash tool 内置于 Claude Code 中,仅限制 Bash 命令。内置文件工具、MCP 服务器和 hooks 仍直接在您的主机上运行。表中的所有其他方法都将整个 Claude Code 进程放在隔离边界内,因此文件工具、MCP 服务器和 hooks 也受到限制。
选择一种方法
将您的目标与下面的一行匹配,然后阅读随后的详细部分。
| 您想要 | 开始使用 |
|---|---|
| 在您自己的机器上日常工作期间减少权限提示 | sandboxed Bash tool,使用 /sandbox 启用 |
让 Claude 使用 --dangerously-skip-permissions 或自动模式无人值守工作 | 预配置的 dev container、任何容器或虚拟机,或 sandbox runtime |
| 隔离 MCP 服务器和 hooks 以及 Bash,不使用 Docker | sandbox runtime |
| 在不受信任的存储库上工作 | 专用虚拟机,或 Claude Code on the web(如果您有 Claude 订阅和连接的 GitHub 账户) |
| 在团队中标准化沙箱环境 | 预配置的 dev container,复制到您的存储库中 |
| 从没有本地设置的设备使用 Claude Code | Claude Code on the web,需要 Claude 订阅和连接的 GitHub 账户 |
| 为组织中的每个开发人员要求隔离 | 在整个组织中强制实施隔离 |
| 在本机 Windows 主机上工作 | 容器或虚拟机,或在 WSL2 内运行 Bash 沙箱 |
隔离与权限模式的关系
Permission modes 决定工具调用是否运行以及是否首先提示您。隔离限制命令运行后可以访问的内容。两者协同工作:当权限模式允许操作在不询问您的情况下运行时,隔离边界限制这些操作可以到达的内容。
当您传递 --dangerously-skip-permissions 时,Claude 在不首先询问您的情况下行动;您仅会被提示显式 ask rules、连接器工具 您的组织设置为 ask、标记为 requiresUserInteraction 的 MCP 工具,以及针对 / 或您的主目录的删除。没有提示来捕捉错误,您选择的隔离边界是保护您的系统的东西。始终在容器、虚拟机或 sandbox runtime 内运行 --dangerously-skip-permissions 会话,以便文件工具、MCP 服务器和 hooks 也在边界内。
Auto mode 用审查操作的分类器替换提示,并阻止超出请求范围、针对无法识别的基础设施或似乎由 Claude 读取的恶意内容驱动的操作。分类器是按操作控制,而不是隔离边界,因此隔离边界仍然为无人值守运行添加纵深防御,并且不像 --dangerously-skip-permissions 那样是必需的。
sandboxed Bash tool 本身仅限制 Bash,因此对于任一模式的完全无人值守运行都不足够。您可以分层方法:在容器或虚拟机内运行沙箱化 Bash 工具可在外部环境边界之上为您提供操作系统级命令限制。有关 Bash 沙箱本身如何与权限规则和模式交互的信息,请参阅 How sandboxing relates to permissions and permission modes。
Sandboxed Bash tool
此选项不支持本机 Windows。在 Windows 主机上,使用 WSL2 或下面的容器或虚拟机方法之一。
Sandboxed Bash tool 内置于 Claude Code 中。它使用操作系统原语来限制 Claude 运行的每个 Bash 命令的文件系统和网络访问:Seatbelt(内置 macOS 沙箱)和 Linux 和 WSL2 上的 bubblewrap。默认情况下,它允许写入工作目录,并在命令首次需要新网络域时提示。
使用 /sandbox 命令启用它。Sandboxing 指南涵盖批准模式、默认边界以及如何扩大或缩小它。
按命令沙箱不涵盖会话中运行的所有内容:
- 其他 built-in tools(如 Read、Edit 和 WebFetch)在 Claude Code 进程内运行,不会生成任意代码。Permission rules 用于路径或域来控制它们。
- MCP 服务器和 hooks 是在主机上无约束运行的单独进程。
要将内置工具、MCP 服务器和 hooks 都放在一个操作系统边界后面,请在 sandbox runtime、dev container 或 custom container 内运行整个 Claude Code 进程。
Sandbox runtime
@anthropic-ai/sandbox-runtime 包将整个进程包装在内置 Bash 沙箱使用的相同 Seatbelt 或 bubblewrap 隔离中。通过它运行 Claude Code 会限制会话中的每个工具、hook 和 MCP 服务器,而不仅仅是 Bash。运行时是测试版研究预览,其配置格式可能会随着包的发展而改变。
运行时默认拒绝所有写入和网络访问,因此在通过它启动 Claude Code 之前配置它。在 ~/.srt-settings.json 中,或您使用 --settings 传递的文件中,至少允许写入您的项目目录和 Claude Code 的配置路径 ~/.claude 和 ~/.claude.json。允许您的会话需要的网络域,包括 api.anthropic.com 或您配置的提供商的端点。有关完整的配置架构,请参阅包 README。
配置文件就位后,使用 npx 启动 Claude Code 并传递 claude 作为要包装的命令:
Claude Code 在沙箱内启动,具有您配置的文件系统和网络边界。相同的命令适用于沙箱化独立 MCP 服务器或其他辅助进程。
Dev containers
Dev container 在 VS Code 或兼容编辑器管理的 Docker 容器内运行 Claude Code,您的项目挂载在其中。您可以在存储库中使用 .devcontainer/ 目录定义自己的。
Claude Code 存储库发布了一个 example dev container,其中包含默认拒绝 iptables 防火墙作为起点。将其复制到您的存储库中,并调整防火墙允许列表、基础镜像和固定的 Claude Code 版本以适应您的环境。因为防火墙阻止未批准的出站,像这样的配置支持使用 --dangerously-skip-permissions 运行 Claude Code 以进行无人值守工作。
Custom container
您可以在任何 Docker 或 OCI 容器镜像中运行 Claude Code,具有您自己的网络策略、挂载卷和 seccomp 配置文件。这是具有现有容器基础设施或 CI 运行器的组织最常见的路径。
几个托管沙箱和远程执行服务可以为您托管容器。与您操作的任何容器相同的检查清单适用:查看挂载的可写内容、容器内可访问的凭据和 Token,以及网络出站策略允许的内容。
您可以在容器内分层内置 Bash 沙箱以进行按命令限制。无特权容器需要 Sandboxing troubleshooting 中描述的嵌套沙箱设置。
Virtual machine
专用虚拟机提供最强的分离,具有自己的内核,在云或 microVM 部署中,还有自己的虚拟化硬件。选项包括云实例、本地虚拟机管理程序和 microVM(如 Firecracker)。
当您评估不受信任的代码、安全策略要求智能体与主机之间实现内核级隔离,或任何主机级方案都无法满足合规要求时,请使用此方法。Docker Desktop 的 sandboxes 功能提供带有独立 Docker 守护进程和工作区同步能力的 microVM,可在已安装 Docker Desktop 的主机上运行 Claude Code。
Claude Code on the web
Claude Code on the web 在隔离的、由 Anthropic 管理的虚拟机中运行每个会话。网络代理强制执行默认允许列表,单独的代理在沙箱外保存您的 GitHub Token,同时在其内部为存储库访问发出作用域凭据。
当您想要完整的虚拟机隔离而无需自己配置基础设施,或当您从没有本地开发环境的设备委派任务时,使用此方法。它需要 Claude 订阅和连接的 GitHub 账户,会话从 GitHub 克隆您的存储库。有关计划可用性和 GitHub 身份验证选项,请参阅 Claude Code on the web。
在整个组织中强制实施隔离
个别开发人员可以选择上述任何方法。组织可以强制实施什么,以及使用哪些工具,取决于方法:
- Built-in Bash sandbox:Claude Code 强制实施的唯一方法。通过 managed settings 传递
sandbox设置密钥,可以是由您的 MDM 管理的文件,也可以通过 Claude.ai 上的 server-managed settings。有关要部署的密钥以及如何防止开发人员扩大策略,请参阅 Enforce sandboxing with managed settings。 - Dev containers:将 example dev container 提交到您的存储库以在团队中标准化环境。这是一个约定而不是强制边界,因为 Claude Code 不需要容器。如果开发人员不应该能够在其外部运行 Claude Code,请使用您组织的设备管理或软件允许列表工具强制实施。
- Custom containers and VMs:通过批准的镜像分发 Claude Code,并使用您组织的设备管理或软件允许列表工具防止在其外部安装。
另请参阅
这些页面涵盖上述方法的配置和策略详细信息。
- Sandboxing:配置内置沙箱化 Bash 工具
- Dev container:预配置的 Docker 开发容器
- Security:完整的 Claude Code 安全模型
- Secure deployment:Agent SDK 应用程序的隔离指导
- Settings:所有沙箱配置密钥,包括托管设置传递
桂公网安备45010502001169号