沙箱
沙箱(Sandbox)为智能体生成的指令提供隔离且受限的执行空间。通过严格的权限管控,确保命令在安全隔离的环境内运行,有效阻断对未经授权资源(文件、网络等)的访问或者高风险命令(权限修改等)的执行。对于被拦截的命令,智能体会在对话流中发出风险提示,经由用户二次确认后,命令才会在沙箱外被执行。
使用沙箱具备如下优势:
- 构建数据泄露防线:基于沙箱技术实施系统级与用户级敏感目录的隔离,从源头阻断密钥泄露风险,全面保障核心资产安全。
- 防止高危命令直接执行:通过沙箱运行,提前识别并拦截潜在高危命令(例如删除D盘所有文件、修改用户权限等),并在对话流中发出提示,由用户决策。
- 助力企业合规准入:严格满足金融、医疗、政务等行业对开发环境文件隔离的严苛合规要求,降低安全顾虑,加速企业客户的采购决策流程。
约束与限制
| 限制类别 | 具体说明 |
|---|---|
| 操作系统 |
|
| 管控对象 |
|
文件访问控制
启用沙箱后,码道Agent Space对文件目录的访问权限配置如下。您也可以通过配置sandbox.json文件,自定义当前项目沙箱环境中进程的文件与网络访问范围,具体操作请参见4。
| 操作系统 | 权限类型 | 目录类型 | 目录列表 |
|---|---|---|---|
| Windows | 只读 | - | 除Windows系统关键目录及用户敏感目录外,其余所有目录均开放读权限。 |
| 读写 | 项目目录及其子目录 | - | |
| 不可读不可写 | Windows系统关键目录 |
| |
| 用户敏感目录 |
| ||
| macOS | 只读 | - | 除系统敏感目录外,其余所有目录均开放读权限。 |
| 读写 | 工作空间和额外设置的读写目录 |
| |
| 不可读不可写 | 文档/桌面/下载(隐私) |
| |
| 密码/钱包/钥匙链相关 | ~/Library/Keychains | ||
| 系统级敏感配置 |
| ||
| Linux | 只读 | - | 除系统敏感目录外,其余所有目录均开放读权限。 |
| 读写 | 工作空间和额外设置的读写目录 |
| |
| 不可读不可写 | Linux系统关键目录 |
|
启用沙箱
- 参考开启码道Agent Space操作,进入码道Agent Space。
- 单击码道Agent Space页面右上方的设置图标
,进入码道Agent Space设置页面。 - 启用沙箱运行模式。
- 在设置页面的左侧导航栏中,选择“对话流”。
- 在“智能体 > 终端命令运行模式”右侧的下拉框中,选择“沙箱运行”。 图1 选择沙箱运行
- 自定义沙箱配置。
通过配置“sandbox.json”文件,您可以自定义当前项目沙箱环境中进程的文件与网络访问范围。
- 单击“沙箱自定义配置”后的“打开配置”,IDE会在您的本地用户目录下(%USERPROFILE%/.codeartsdoer)生成一个sandbox.json文件,并自动在编辑器中打开。 该文件的初始结构如下所示:
{ "filesystem": { "readWrite": [], "readOnly": [] }, "network": { "default": "Allow", "allow": [], "deny": [] }, "resources": { "cpu": 50, "memory": 8 } }表3 sandbox.json文件参数说明 参数
是否必选
参数类型
描述
filesystem
否
filesystem Object
用于精确控制沙箱对本地文件系统的访问权限。
如果未设置(filesystem字段为空或不存在),则采用沙箱内置的文件系统安全策略。
network
否
network Object
用于控制沙箱内进程的网络访问策略,支持配置允许或阻止对特定网络资源的访问。
如果未设置,默认允许网络访问。
resources
否
resources Object
用于定义沙箱运行时的计算资源上限,确保业务稳定并防止资源滥用。
如果未设置,系统将共享宿主机资源。
表4 filesystem参数说明 参数
参数类型
默认值
支持路径格式
优先级规则
描述
readWrite
Array
[ ]
- 绝对路径:如/home/user/project、C:\Projects
- 相对路径:如./src、./config
- 环境变量:$HOME(Linux/Mac)、%USERPROFILE%(Windows)
- Home目录简写:~
readOnly > readWrite > 系统默认策略
如果某个路径同时匹配readOnly和readWrite,则以readOnly为准。
可读写路径列表。
readOnly
Array
[ ]
只读路径列表。
表5 network参数说明 参数
参数类型
默认值
优先级规则
描述
default
String
Allow
deny > allow > default
如果allow和deny同时配置同一规则时,则以deny为准。
默认的网络访问策略。
- Allow:允许访问
- Deny:禁止访问
说明:该字段支持“域名:端口”和“IP:端口”两种配置格式,其中域名部分支持通配符,IP地址支持CIDR表示法。多个端口可通过逗号分隔进行配置。若未指定具体端口,则默认对所有端口生效。
allow
Array
[ ]
配置允许访问沙箱内进程的网络规则列表。
deny
Array
[ ]
配置拒绝访问沙箱内进程的网络规则列表。
- 在打开的“sandbox.json”文件中,填入您的自定义沙箱配置。
{ "filesystem": { "readWrite": [ "/home/user/project/output", "~/workspace/temp" ], "readOnly": [ "/etc/systemd", "%USERPROFILE%/.ssh" ] }, "network": { "default": "Allow", "deny": [ "10.0.0.0/8", "192.168.0.0/16" ] }, "resources": { "cpu": 50, "memory": 4 } }
- 保存文件以使配置生效。
- 单击“沙箱自定义配置”后的“打开配置”,IDE会在您的本地用户目录下(%USERPROFILE%/.codeartsdoer)生成一个sandbox.json文件,并自动在编辑器中打开。
- 配置命令白名单。
根据实际需求将特定命令的前缀添加到白名单。被加入白名单的命令将绕过沙箱机制,直接在沙箱外执行。
- 配置网络访问策略。
表7 网络访问策略说明 参数
说明
全网访问
允许访问所有内部及外部网络资源。
本地访问
仅允许访问本地服务网络(局域网/内网),禁止访问外部互联网。
禁止网络访问
阻断所有网络连接,禁止访问任何内部或外部资源。
自定义网络访问
通过修改策略配置JSON文件,自定义当前项目沙箱环境中进程的文件与网络访问范围。如何配置JSON文件,请参见4。
- 退出当前设置界面,完成沙箱模式的启用。
高风险命令执行策略
当智能体检测到高风险命令时,AI将会在对话流中发出提示。请评估风险后,按需选择执行方式。
- 跳过:跳过该命令,不执行。
- 添加XXX到白名单:将该命令的前缀添加到白名单。此后,所有以该前缀开头的命令将直接在沙箱环境外执行。
- 继续运行:允许在当前会话的沙箱环境外继续执行此命令。