Log in to leave a comment
No posts yet
AI 代理直接在我的终端输入命令并修改文件的时代已经到来。Anthropic 的 Claude Code 具有创新性,但这种创新是一把双刃剑。从安全工程的角度来看,让 AI 在拥有系统完整权限的情况下运行,无异于埋下了一颗巨大的灾难种子。
仅仅一次简单的错误或幻觉,就可能导致 .ssh 私钥暴露在外,或存储在环境变量中的 AWS 凭证泄露。这并非理论上的假设,而是现实的威胁。解决方案显而易见:必须将 AI 代理关起来。这就是为什么我们需要 Incus,它能提供超越简单 Docker 隔离的系统级安全。
在何处运行 AI 代理决定了数据安全的成败。直接在本地终端运行,实际上等同于敞开家里的玄关大门。
| 比较项目 | 宿主机终端 | Docker 容器 | Incus 系统容器 |
|---|---|---|---|
| 隔离边界 | 无(权限继承) | 进程级隔离 | 内核级系统隔离 |
| 密钥泄露 | 极高 | 低 | 极低 |
| 状态持久性 | 永久 | 挥发性 | 永久 |
| 权限管理 | 用户权限暴露 | Root 滥用风险 | 强制非特权模式 |
根据 2024 年发布的安全报告,在自主型代理的权限滥用案例中,超过 60% 归因于不恰当的沙箱设置。虽然 Docker 很轻量,但当代理需要触碰系统服务或管理复杂的包依赖时,它会显露局限性。相比之下,Incus 在提供与虚拟机 (VM) 类似水平的独立操作系统环境的同时,开销却小得多。
资深安全工程师选择 Incus 而非 Docker 的理由非常明确。因为 Docker 是用于部署应用程序的工具,而不是用来关押不可信代理的监狱。
Incus 的核心是用户命名空间 (User Namespaces)。在容器内部,它看起来像是拥有 root(UID 0) 权限,但在实际的宿主机系统中,它被映射为一个没有任何权限的高数值用户(例如 UID 1,000,000)。即使 AI 逃逸出容器,在宿主机系统中它也只是一个身份不明的普通用户。
Docker 容器一旦删除,数据就会消失。但像 Claude Code 这样的代理需要记住之前工作的上下文和安装的工具。由于 Incus 是系统容器,即使开关容器,所有状态也会被保留。这相当于为代理提供了一个具有连续性的“大脑”。
由于 Incus 使用 Linux 内核功能,因此无法在 Mac 上直接运行。取而代之的是,我们利用轻量级 Linux 虚拟化层 Colima 作为跳板。
首先安装必要的工具,并为 AI 任务分配适当的资源。如果不提供充足的 CPU 和内存,代理的推理速度将显著下降。
`bash
brew install colima incus
colima start --cpu 4 --memory 8 --runtime incus --network-address
`
为了能在 Mac 终端控制 Colima VM 内部的 Incus 服务器,需要进行连接。
colima ssh 进入,并执行 sudo incus admin init --auto。incus remote add colima-vm <IP> 注册服务器。经常会出现互联网连接受阻的情况。这通常是因为在安装了 Docker 的环境中,iptables 策略被更改为 DROP。需要通过以下命令打开通道:
`bash
sudo firewall-cmd --zone=trusted --change-interface=incusbr0 --permanent
sudo firewall-cmd --reload
`
当 AI 代理变得恶意或被黑客攻击时,我们通过具体场景来看看 Incus 是如何保护系统的。
代理以调试为名执行 printenv,或者恶意库企图窃取内存中的 AWS 密钥。
脚本扫描 ~/.ssh/id_rsa 路径并尝试将其发送到外部。
没有安全前提的 AI 引入是一种技术债务,日后会带来更大的代价。即使生产力再诱人,也不能把家里的钥匙全部交给 AI。Incus 沙箱是 AI 时代开发者必须具备的最低限度安全带。
请立即停止在本地终端运行 Claude Code。迁移到隔离的 Incus 环境是保护您的代码、资产以及职业生涯最确定的方法。请尝试从今天开始使用 colima start --edit 命令构建属于您自己的安全开发实验室。