安全

默认情况下,本地 AIO Sandbox 面向可信本地开发使用。当需要暴露给网络或其他服务时,应增加鉴权并限制访问范围。

JWT 鉴权

设置 JWT_PUBLIC_KEY 可以启用 Bearer token 校验。业务侧使用私钥签发 token,沙盒使用公钥验证 token。

生成密钥对:

openssl genrsa -out private_key.pem 2048
openssl rsa -in private_key.pem -pubout -out public_key.pem

启动沙盒并注入公钥:

docker run --security-opt seccomp=unconfined --rm -it \
  -p 8080:8080 \
  -e JWT_PUBLIC_KEY="$(base64 -w 0 public_key.pem)" \
  ghcr.io/agent-infra/sandbox:latest

调用 API 时携带 Bearer token:

curl "http://localhost:8080/v1/sandbox" \
  -H "Authorization: Bearer $SANDBOX_TOKEN"

短时票据

对于浏览器访问或临时交接流程,如果部署形态支持,优先使用短时票据。票据应尽快过期,并限制在最小必要访问范围内。

网络边界

  • 不需要远程访问时,只绑定到 localhost。
  • 共享环境中建议在沙盒前放置带 TLS 的反向代理。
  • 通过 IP、网络或服务身份限制入站访问。
  • 不要把未鉴权的沙盒 API 暴露到公网。

密钥处理

  • 通过运行时环境变量或密钥管理系统传入密钥。
  • 不要把密钥写入自定义镜像。
  • 不要把长期密钥写入 Skills、Hooks、Notebook 或生成文件。
  • 任务级访问优先使用短时凭据。